2017-06-21 86 views
0

我遇到了ffmpeg 3.2.2的問題;通常我會要求它製作2個音頻流的MP4視頻文件。命令行看起來像這樣:ffmpeg似乎沒有正確處理多個音頻流

ffmpeg.exe 
-rtbufsize 256M 
-f dshow -i video="screen-capture-recorder" -thread_queue_size 512 
-f dshow -i audio="Line 2 (Virtual Audio Cable)" 
-f dshow -i audio="Line 3 (Virtual Audio Cable)" 
-map 0:v -map 1:a -map 2:a 
-af silencedetect=n=-50dB:d=60 -pix_fmt yuv420p -y "c:\temp\2channelvideo.mp4" 

我已經用易讀性來包裝它。這一次工作正常,但最近有些事情是錯誤的 - 它似乎沒有記錄任何音頻,即使我可以使用其他工具如Audacity來記錄來自這些設備的音頻就好了

我想對它做一些診斷通過降低視頻組件,並要求ffmpeg的兩個音頻設備記錄到兩個獨立的文件:

ffmpeg.exe 
-f dshow -i audio="Line 2 (Virtual Audio Cable)" "c:\temp\line2.mp3" 
-f dshow -i audio="Line 3 (Virtual Audio Cable)" "c:\temp\line3.mp3" 

FFmpeg的控制檯輸出看起來像:

Guessed Channel Layout for Input Stream #0.0 : stereo 
Input #0, dshow, from 'audio=Line 2 (Virtual Audio Cable)': 
    Duration: N/A, start: 5935.810000, bitrate: 1411 kb/s 
    Stream #0:0: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s 
Guessed Channel Layout for Input Stream #1.0 : stereo 
Input #1, dshow, from 'audio=Line 3 (Virtual Audio Cable)': 
    Duration: N/A, start: 5936.329000, bitrate: 1411 kb/s 
    Stream #1:0: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s 
Output #0, mp3, to 'c:\temp\line2.mp3': 
    Metadata: 
    TSSE   : Lavf57.56.100 
    Stream #0:0: Audio: mp3 (libmp3lame), 44100 Hz, stereo, s16p 
    Metadata: 
     encoder   : Lavc57.64.101 libmp3lame 
Output #1, mp3, to 'c:\temp\line3.mp3': 
    Metadata: 
    TSSE   : Lavf57.56.100 
    Stream #1:0: Audio: mp3 (libmp3lame), 44100 Hz, stereo, s16p 
    Metadata: 
     encoder   : Lavc57.64.101 libmp3lame 
Stream mapping: 
    Stream #0:0 -> #0:0 (pcm_s16le (native) -> mp3 (libmp3lame)) 
    Stream #0:0 -> #1:0 (pcm_s16le (native) -> mp3 (libmp3lame)) 
Press [q] to stop, [?] for help 

我目前有我的問題是,所產生的MP3只是第2行的相同副本;第3行音頻不被記錄。最後一行是值得關注的;它似乎是說流0被映射到輸出0和1?我是否也需要每個文件的地圖命令?我認爲這將是含蓄的,因爲我指定的參數

回答

0

原來我需要在每個源和輸出文件之間添加一個-map x:a,其中x是0或1,具體取決於它是第一個還是第二個源..