aboutsummaryrefslogtreecommitdiff
path: root/MPVTV/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'MPVTV/README.md')
-rw-r--r--MPVTV/README.md14
1 files changed, 14 insertions, 0 deletions
diff --git a/MPVTV/README.md b/MPVTV/README.md
new file mode 100644
index 0000000..12ab1e6
--- /dev/null
+++ b/MPVTV/README.md
@@ -0,0 +1,14 @@
+使用 t123yh 提供的 IPTV 服务,给家人糊了一个可以观看国内电视的机顶盒,可以用无线键盘控制调台、音量、开关机。实现方式是通过 mpv 播放器 + nvidia-drm 驱动 + nvdec 硬件解码加速,然后用一个 Shell Script 串起来。
+
+视频通过 DRM 直接输出到 N 卡连接的电视,不经过显示服务器。中间经过 nvdec 硬件解码,不使用 CPU。
+音频通过 ALSA 直接输出到 HDMI,不经过音频服务器。
+调台和其他快捷键通过 mpv 自带的键盘快捷键实现。目前还没有完整实现键盘输入和机顶盒启动的部分。
+
+注意的坑:
+1. 在 Cygwin 中,它的 libc 在遇到 printf \n 时会自动输出 CRLF [1](https://github.com/jqlang/jq/issues/92) ,导致 jq(1) 的输出编码错误。因此使用 tr(1) 去除。在 Unix 下可去除这一部分。
+2. 使用此法不得设置 fbdev=1 内核参数,否则会导致 dmesg 报错 flip event timeout on head 0 [2](https://forums.developer.nvidia.com/t/545-29-02-fbdev-1-cause-nvidia-drm-flip-event-timeout-on-boot-errors/272829) ,mpv 报错 Failed to commit atomic request: error number 16。
+3. 之前 mpv 一直报错 Failed to commit atomic request: error number 22,应该是 Invalid argument,但突然消失了,不知道是哪里没配好。
+4. 不正确的分辨率会导致没有输出,mpv(1) 自行选择的分辨率可能并不正确。应当使用 mpv --drm-mode=help 自行选择。
+5. 设置 DRM 设备时建议使用 /dev/dri/by-path/ 避免重启导致的 card0 card1 顺序错误,尤其是多显卡的用户。
+6. 我还设置了 NVIDIA 内核模块的 early loading 和 nvidia-drm.modeset=1 vt.global_cursor_default=0 modeset=1 这些内核参数,暂时不确定是否有意义。
+7. 合理配网,防止卡顿。