1

我正在尝试使用 Linux DVB 视频采集卡制作一个简单的“电视查看器”。目前我使用以下过程看电视(我在树莓派上):

  1. 使用 调到一个频道azap -r TV_CHANNEL_HERE。这将为设备提供字节/dev/dvb/adapter0/dvr0
  2. 打开 OMXPlayeromxplayer /dev/dvb/adapter0/dvr0
  3. 看电视!

当我尝试更改频道时,问题就来了。即使我将播放器设置为缓存传入的字节(也尝试使用 MPlayer),播放器也无法承受频道更改(通过azap使用新频道重新启动。

我认为这是因为 MPEG TS 流元数据发生了变化。

寻找可以让我执行以下操作的 C 库:

  1. 从 DVR 设备中提取cache_size * mpeg_ts_packet_size 。
  2. 评估每个数据包并根据需要重写元数据(PID 等)。
  3. 使用生成的数据包填充 FIFO。
  4. 设置 {OMXPlayer,MPlayer} 从 FIFO 读取。

我在想的另一件事是使用将 MPEG TS 转换为 MPEG PS 并以这种方式连接字节的程序。

想法?

4

1 回答 1

1

Indeed, when you want to tune on an other channel, some metadata can potentially change and invalid previously cached data. Unfortunately I'm not familiar with the tools you are using but your point 2. makes me raise an eyebrow: you will waste your time trying to rewrite Transport Stream data.

I would rather suggest to stop and restart process on zapping since it seems to work fine at start.

P.S.: Here are some tools that can help. Also, I'm not sure at which level your problem is but VLC can be installed on Raspberry PI and it handles TS gracefully.

于 2014-08-05T15:10:21.073 回答