FFMPEG - 如何对 LIVE 多节目传输流进行解复用?

FFMPEG - 如何对 LIVE 多节目传输流进行解复用?

假设我有一个字节 fifo,它基本上来自捕获卡。基本上,这不是磁盘上的文件。

这个 fifo 中的数据是多程序MPEG-TS。有三个程序,每个程序包含一个视频流和一个或多个音频流。

当我通过管道传输 fifo 来运行 FFmpeg 时,它会显示其中的程序和流。但是,有时程序 1 包含流 0:1 和 0:3,有时可能包含 0:4 和 0:2。即使 PID 始终保持不变,FFmpeg 也倾向于为它们提供随机编号。

我的问题:有没有办法使用 FFmpeg 选择合适的流 - 我可以通过 PID 选择?(顺便说一下,我使用 CLI)

请记住地图FFmpeg 中的选项将不是之所以有效,是因为每次运行 ffmpeg 命令时,流号都是“随机的”。

答案1

假设你使用 v4l2 从 /dev/video0 进行捕获,那么你可以使用程序 id 进行映射,如下所示:

ffmpeg -i /dev/video0 -acodec copy -vcodec copy -map 0:p:keep_pid -map -0:p:first_remove_pid -map -0:p:second_remove_pid output.m2ts

查看:http://ffmpeg.org/ffmpeg.html#Stream-specifiers-1http://ffmpeg.org/ffmpeg.html#Advanced-options

相关内容