FFMPEG转换为MXF

时间:2012-02-16 02:29:24

标签: video ffmpeg mpeg-2

我必须将MPEG2视频文件包装在MXF容器中并在此过程中转换音频。我有MXF包装工作,但它不会转换音频流(需要16位,48kHz线性PCM)。

以下是我正在尝试的内容:

ffmpeg -i input.mpg -map 0:0 -map 0:1 -vcodec copy -f mpeg2video -acodec pcm_s16le -ar 48000 -ac 2 output.mxf

结果:

ffmpeg version 0.10 Copyright (c) 2000-2012 the FFmpeg developers
  built on Jan 30 2012 17:49:23 with gcc 4.2.1 (Apple Inc. build 5666) (dot 3)
  configuration: *{snipped}*
runtime-cpudetect
  libavutil      51. 34.101 / 51. 34.101
  libavcodec     53. 60.100 / 53. 60.100
  libavformat    53. 31.100 / 53. 31.100
  libavdevice    53.  4.100 / 53.  4.100
  libavfilter     2. 60.100 /  2. 60.100
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0.  6.100 /  0.  6.100
  libpostproc    52.  0.100 / 52.  0.100
[mpeg @ 0x10201ae00] max_analyze_duration 5000000 reached at 5000000
Input #0, mpeg, from '/Volumes/Extra/test.mpg':
  Duration: 00:00:59.97, start: 0.192911, bitrate: 6513 kb/s
    Stream #0:0[0x1c0]: Audio: mp2, 48000 Hz, stereo, s16, 384 kb/s
    Stream #0:1[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x576 [SAR 16:15 DAR 4:3], 12000 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Output #0, mpeg2video, to 'video.mxf':
  Metadata:
    encoder         : Lavf53.31.100
    Stream #0:0: Video: mpeg2video, yuv420p, 720x576 [SAR 16:15 DAR 4:3], q=2-31, 12000 kb/s, 25 fps, 90k tbn, 25 tbc
Stream mapping:
  Stream #0:1 -> #0:0 (copy)
Press [q] to stop, [?] for help
frame= 1500 fps=  0 q=-1.0 Lsize=   43949kB time=00:00:59.96 bitrate=6004.6kbits/s    
video:43949kB audio:0kB global headers:0kB muxing overhead 0.000000%

视频可以像MXF一样播放,但根本没有音频流。任何帮助都会很棒。

2 个答案:

答案 0 :(得分:1)

在您的命令中,视频编解码器被指定为输出文件格式。因此,音频被剥离,输出文件为mpeg,而不是mxf

可以使用以下命令完成转换:

ffmpeg -i input.mpg -vcodec mpeg2video -acodec pcm_s16le -ar 48000 -ac 2 output.mxf

输出文件格式将从文件扩展名中猜出。或者,可以使用选项-f mxf。由于MXF格式限制,可能需要指定帧速率-r 25。选项-vcodec-acodec可以省略相同的结果。

答案 1 :(得分:0)

我认为你过分指明了事情。尝试:

ffmpeg -i input.mpg -vcodec copy -acodec pcm_s16le -ar 48000 -ac 2 output.mxf

对于只有一个音频和一个视频流的简单输入和输出文件,您不应该需要-map。这些天ffmpeg也知道如何格式化mxf文件,并猜测可以根据扩展名使用该格式。

我怀疑您的问题是指定mpeg2video('原始MPEG-2视频')的结果,这种格式似乎不包含音频。