ffmpeg似乎没有正确使用多个音频流

时间:2017-06-21 09:58:08

标签: ffmpeg

我遇到了ffmpeg 3.2.2的问题;通常我要求它制作一个包含2个音频流的MP4视频文件。命令行如下所示:

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?我是否还需要每个文件的map命令?由于我指定参数

的方式,我认为这是隐含的

1 个答案:

答案 0 :(得分:0)

原来我需要在每个源和输出文件之间添加-map x:a,其中x为0或1,具体取决于它是第一个还是第二个源..