linux - 如何连接来自 DVB 卡的 ATSC 流?

标签 linux encoding mpeg dvb

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

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

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

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

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

  1. 从 DVR 设备中提取 cache_size * mpeg_ts_packet_size
  2. 评估每个数据包并根据需要重写元数据(PID 等)。
  3. 用生成的数据包填充 FIFO。
  4. 将 {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/

相关文章:

linux - wget 使用环境变量

linux - 如何启用 Android 虚拟设备 (AVD)

c - 如何通过 fork 和 exec 执行程序

ffmpeg - 使用 ffmpeg 在视频中设置 B 帧

ARM 上的 Linux "top"实用程序报告我们已验证错误的数字。为什么?

c - 如何将负十六进制转换为十进制

git checkout -p 指定编码

java - WebView编码错误,请指教

windows - 硬件JPEG解压/Win32

file - 使用 ffmpeg 连接文件并没有像我预期的那样工作。为什么?