自制电视播放器系统
系统启动后自动登录 kiosk 用户,直接进入 Chromium kiosk 模式,且禁用常见退出快捷键。 下面是整合了自动登录到 tty1(修改 /etc/inittab 自动登录)并且保持你的配置逻辑的完整脚本。 #!/bin/bash USERNAME="kiosk" HOMEDIR="/home/$USERNAME" CHROMIUM_URL="https://example.com" # 请替换为目标网址 echo "==> 创建用户(如果不存在)..." if ! id "$USERNAME" >/dev/null 2>&1; then sudo adduser --disabled-password --gecos "" "$USERNAME"…
让 Chrome直接播放 .m3u8 视频流
通过 JS 库如 hls.js 就可以让 Chrome(或其他不原生支持 HLS 的浏览器)直接播放 .m3u8 视频流。下面我来详细解释怎么使用 hls.js 来播放 .m3u8 文件。 ✅ 什么是 hls.js? hls.js 是一个用 JavaScript 编写的客户端 HLS 播放库,它可以让不原生支持 HLS 的浏览器(比如 Chrome、Firefox)通过 <video> 标签播放 .m3u8 视频。 ✅ 使用…
OpenWrt 声卡支持总结(含CPU探测)
OpenWrt 声卡支持总结(含CPU探测) 🧩 目标 在 OpenWrt 系统中识别并使用主板板载声卡,并支持 Docker 访问。 ✅ 详细步骤 1. 探测CPU类型 确认CPU型号及架构,有助于判断驱动兼容性: cat /proc/cpuinfo 该命令输出CPU型号、核心数、架构、特性等信息,例如 Intel i3-6100U: processor : 0 vendor_id : GenuineIntel model name : Intel(R) Core(TM) i3-6100U CPU…
完整的 Puppeteer 项目打包过程总结
以下是完整的 Puppeteer 项目打包过程总结,学习记录: 📦 Puppeteer 项目打包完整流程 1. 项目结构准备 Web-TV/ ├── black.html # 黑屏页面 ├── player/ │ ├── PagePlayer.js # 播放器核心逻辑 │ └── config.json # 配置文件 ├── chromium/ # Chromium 可执行文件(可选) ├── server.js…
音视频不同步
问题分析:音视频不同步(声音比画面快) 你的 FFmpeg 命令捕获了 X11 桌面(视频) 和 PulseAudio 音频(auto_null.monitor),但最终输出的流 声音比画面快,说明 音频和视频的时间戳未正确对齐。 解决方案 1. 检查音频和视频的输入时间基准 FFmpeg 会自动处理音视频同步,但如果输入设备的时钟不同步(如 X11 和 PulseAudio 时间戳不一致),会导致不同步。解决方法:强制统一时间基准,使用 -use_wallclock_as_timestamps 1 和 -fflags nobuffer 减少延迟。 修改后的命令 ffmpeg -thread_queue_size 512 -f x11grab…
将一个 Docker 容器移植到其他机器
要将一个 Docker 容器移植到其他机器,可以通过以下几种方式实现,取决于你是想移植 镜像 还是 容器的运行状态和数据。 🚀 方案 1:导出容器/镜像并在目标机器导入 适合情况:想要将当前容器的运行状态(含数据)迁移过去,或目标机器无法访问原镜像仓库。 步骤: ✅ 方法 A:导出容器(包括文件系统) 导出容器为 tar 文件(假设容器名叫 mycontainer): docker export mycontainer > mycontainer.tar 复制文件到目标机器(可以用 scp、rsync、U盘等方式): scp mycontainer.tar user@target_host:/path/ 在目标机器上导入为镜像: docker import /path/mycontainer.tar…
获取网卡地址
以下是一个函数,可以同时返回: 本地内网 IP(非回环地址,如 192.168.x.x,不依赖远程连接) 远程出口 IP(默认网卡连接外网时系统使用的 IP) ✅ 完整代码如下: import socket import psutil def get_local_ips_by_interface_and_remote(): local_ips_by_interface = {} # 获取所有网卡及其非回环 IPv4 地址 for iface_name, iface_addrs in psutil.net_if_addrs().items(): ip_list = [] for addr…
推流代码编译记录
Nuitka 编译问题总结与最终解决方案 1. 核心问题回顾 Debian 环境特殊性: Debian 修改了 Python 的标准库路径,导致 Nuitka 在静态链接时可能失败。 需要显式安装 python3-dev 和 patchelf 才能正常编译。 模块包含问题: 部分内置模块(如 time、json)不需要显式包含,反而会导致警告。 第三方包(如 requests、pychrome)建议用 --include-package 而非 --include-module。 性能与兼容性警告: Debian 的 Python 包可能导致独立编译后的程序兼容性问题。 anti-bloat 插件可能阻止某些优化(如…
SRS Dockerfile 模板
以下是一个 SRS Dockerfile 模板,它将 SRS 的默认端口修改为: 功能原端口修改后的端口HTTP API (信令)19851338播放/页面80801337WebRTC (UDP)80001336RTMP19351335 📁 文件结构示例: . ├── Dockerfile └── srs.conf 🔧 srs.conf 示例配置文件 listen 1335; # RTMP http_api { enabled on; listen 1338; # HTTP…
Node for panel
sudo apt-get install -y nodejs npm su user npm init -y npm install chrome-remote-interface puppeteer-core express events