2012-02-16 539 views
1

我必須在MXF容器中包裝MPEG2視頻文件,並在此過程中轉換音頻。我有MXF包裝工作,但它不會轉換音頻流(它需要16位,48kHz線性PCM)。FFMPEG轉換爲MXF

這裏就是我想:

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

這是編程相關如何? – 2012-02-16 02:35:43

回答

0

我認爲你是過分指定的東西。嘗試:

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

你不應該需要-map僅具有一個音頻和一個視頻流簡單的輸入和輸出文件。這些天,ffmpeg也知道如何格式化mxf文件,並可以猜測使用基於擴展名的格式。

我懷疑你的問題是由於指定mpeg2video('原始MPEG-2視頻'),這是一種看起來不包含音頻的格式。

+0

謝謝blahdiblah,但仍然沒有去。我嘗試了你的建議,然後再進一步'ffmpeg -i input.mpg output.mxf',仍然沒有音頻流。任何其他想法? – MFB 2012-02-16 03:08:41

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以達到相同的結果。