![FFMpeg 转换过程中丢失了第 2 轨和字幕](https://linux22.com/image/1612811/FFMpeg%20%E8%BD%AC%E6%8D%A2%E8%BF%87%E7%A8%8B%E4%B8%AD%E4%B8%A2%E5%A4%B1%E4%BA%86%E7%AC%AC%202%20%E8%BD%A8%E5%92%8C%E5%AD%97%E5%B9%95.png)
我想使用以下方法将我的视频库转换为 MP4:
ffmpeg -i inputfile.ts -c copy outputfile.mp4
但是,输出文件似乎包含一个音轨,它是来自输入文件的 NAR 音轨。
输入的 TS 文件由一台老款 Humax Foxsat 制作,有两个音轨 - 音轨 1 = NAR 和音轨 2 = 英语,以及 3 个字幕音轨。MP4 转换中只有音轨 1。
ffmpeg 的输出是:
Input #0, mpegts, from 'content_20170903_2200.ts':
Duration: 01:00:39.56, start: 46220.828489, bitrate: 1754 kb/s
Program 7730
Program 7731
Program 7701
Program 7720
Stream #0:0[0x911]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, top first), 704x576 [SAR 16:11 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1[0x913](NAR): Audio: mp2 ([4][0][0][0] / 0x0004), 48000 Hz, stereo, fltp, 128 kb/s (visual impaired) (descriptions)
Stream #0:2[0x912](eng): Audio: mp2 ([4][0][0][0] / 0x0004), 48000 Hz, stereo, fltp, 160 kb/s
Stream #0:3[0x936](eng): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
Stream #0:4[0x914](eng,eng): Subtitle: dvb_teletext ([6][0][0][0] / 0x0006)
Stream #0:5[0xf04]: Unknown: none ([5][0][0][0] / 0x0005)
Stream #0:6[0xf03]: Unknown: none ([5][0][0][0] / 0x0005)
Stream #0:7[0xf02]: Unknown: none ([5][0][0][0] / 0x0005)
Stream #0:8[0xf01]: Unknown: none ([5][0][0][0] / 0x0005)
Stream #0:9[0xf00]: Unknown: none ([5][0][0][0] / 0x0005)
Stream #0:10[0x90e]: Data: scte_35
Stream #0:11[0x3c8]: Data: scte_35
Program 7710
Program 7715
Program 7717
Program 7711
Program 7716
Program 7750
Output #0, mp4, to 'content.mp4':
Metadata:
encoder : Lavf58.20.100
Stream #0:0: Video: mpeg2video (Main) (mp4v / 0x7634706D), yuv420p(tv, top first), 704x576 [SAR 16:11 DAR 16:9], q=2-31, 25 fps, 25 tbr, 90k tbn, 90k tbc
Stream #0:1(NAR): Audio: mp2 (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (visual impaired) (descriptions)
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[mpegts @ 05e23ac0] PES packet size mismatchtime=01:00:32.14 bitrate=1349.9kbits/s speed= 103x
frame=90961 fps=2564 q=-1.0 Lsize= 603289kB time=01:00:39.06 bitrate=1358.1kbits/s speed= 103x
video:543560kB audio:56855kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.478617%
任何帮助都感激不尽。
答案1
默认情况下,ffmpeg 只会将一个视频、音频和字幕轨道映射到输出。你可以在这里的日志中看到这一点:
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
要映射所有轨道,请使用-map 0
:
ffmpeg -i inputfile.ts -c copy -map 0 outputfile.mp4
也可以看看这里。
请注意,在某些情况下,并非所有类型的轨道都可以通过流复制 ( -c copy
) 映射到输出文件。例如,MP4 不支持某些类型的字幕格式。在这种情况下,您必须转换格式或在映射期间将其忽略(即仅映射可以复制的内容)。