我正在尝试使用 Linux DVB 视频采集卡制作一个简单的“电视查看器”。目前我使用以下过程看电视(我在树莓派上):
- 使用 调到一个频道
azap -r TV_CHANNEL_HERE
。这将为设备提供字节/dev/dvb/adapter0/dvr0
。 - 打开 OMXPlayer
omxplayer /dev/dvb/adapter0/dvr0
- 看电视!
当我尝试更改频道时,问题就来了。即使我将播放器设置为缓存传入的字节(也尝试使用 MPlayer),播放器也无法承受频道更改(通过azap
使用新频道重新启动。
我认为这是因为 MPEG TS 流元数据发生了变化。
寻找可以让我执行以下操作的 C 库:
- 从 DVR 设备中提取cache_size * mpeg_ts_packet_size 。
- 评估每个数据包并根据需要重写元数据(PID 等)。
- 使用生成的数据包填充 FIFO。
- 设置 {OMXPlayer,MPlayer} 从 FIFO 读取。
我在想的另一件事是使用将 MPEG TS 转换为 MPEG PS 并以这种方式连接字节的程序。
想法?