我正在尝试使用 Linux DVB 视频采集卡制作一个简单的“电视查看器”。目前我使用以下过程看电视(我在 Raspberry Pi 上):
- 使用
azap -r TV_CHANNEL_HERE
调到一个 channel 。这将提供字节到 设备/dev/dvb/adapter0/dvr0
。 - 打开 OMXPlayer
omxplayer/dev/dvb/adapter0/dvr0
- 看电视!
当我尝试更改 channel 时,问题就来了。即使我将播放器设置为缓存传入字节(也尝试使用 MPlayer),播放器也无法承受 channel 更改(通过使用新 channel 重新启动 azap
。
我认为这是因为 MPEG TS 流元数据发生了变化。
寻找可以让我执行以下操作的 C 库:
- 从 DVR 设备中提取 cache_size * mpeg_ts_packet_size。
- 评估每个数据包并根据需要重写元数据(PID 等)。
- 用生成的数据包填充 FIFO。
- 将 {OMXPlayer,MPlayer} 设置为从 FIFO 中读取。
我在想的另一件事是使用一个程序将 MPEG TS 转换为 MPEG PS 并以这种方式连接字节。
想法?
最佳答案
事实上,当您想在其他 channel 上调谐时,某些元数据可能会发生变化并使之前缓存的数据无效。
不幸的是,我不熟悉您使用的工具,但您的观点 2.
让我大吃一惊:您将浪费时间尝试重写传输流数据。
我宁愿建议停止并重新启动 zapping 过程,因为它似乎在开始时工作正常。
附言: 这里有一些 tools这可以帮助。另外,我不确定您的问题在哪个级别,但是 VLC可以安装在 Raspberry PI 上,它可以优雅地处理 TS。
关于linux - 如何连接来自 DVB 卡的 ATSC 流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25107625/