我一直在尝试使用 FFmpeg 更改特定 .ts 文件的程序编号,但没有成功。我看到了文档,它提到使用 -program 选项。但是,我无法根据需要添加流。这是我目前拥有的流的节目信息:
Input #0, mpegts, from 'output_2_without_pgm_num.ts':
Duration: 00:01:49.92, start: 1.400000, bitrate: 1816 kb/s
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, progressive), 720x576 [SAR 64:45 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1[0x101](ger): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 384 kb/s (clean effects)
Stream #0:2[0x102](eng): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 384 kb/s (clean effects)
Stream #0:3[0x103](ger): Subtitle: dvb_teletext ([6][0][0][0] / 0x0006)
现在,我想将程序编号从 1 更改为 22。知道我该怎么做吗?我尝试使用 -program 选项,但无法将流 2 和 3 添加到新创建的 .ts 文件中。
提前致谢!
最佳答案
这里涉及两个步骤。使用 -map
告诉 ffmpeg 哪些流要包含在输出中选项,并设置程序元数据,使用 -program
选项。
ffmpeg -i in.ts -map 0 -c copy -program program_num=22:st=0:st=1:st=2:st=3 out.ts
-map 0
告诉 ffmpeg 包含来自第一个输入的所有流。st
values 告诉 ffmpeg 哪些输出流索引应该包含在程序中。
关于audio - 无法更改视频的节目编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50383707/