FFMpeg 转换过程中丢失了第 2 轨和字幕

FFMpeg 转换过程中丢失了第 2 轨和字幕

我想使用以下方法将我的视频库转换为 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 不支持某些类型的字幕格式。在这种情况下,您必须转换格式或在映射期间将其忽略(即仅映射可以复制的内容)。

相关内容