使用FFmpeg创建空白音频并合并两个音频文件步骤详解

ChatGPT4o 使用 ChatGPT 4o 回答

问题:

FFmpeg 创建与原文件格式一致的空白音频文件,最后将这个两个音频文件合并

回答:

要使用FFmpeg创建与原文件格式一致的空白音频文件,并将两个音频文件合并,可以按照以下步骤进行:

  1. 获取原文件的音频参数: 首先,我们需要获取原文件的音频参数(如采样率、声道数、编码格式等)。可以使用以下命令:

    ffprobe -v error -show_entries stream=codec_name,channels,sample_rate -of default=noprint_wrappers=1:nokey=1 input_audio_file
    

    这将输出类似以下内容:

    pcm_s16le
    2
    44100
    

    其中,pcm_s16le 是编码格式,2 是声道数,44100 是采样率。

  2. 创建空白音频文件: 使用FFmpeg的anullsrc滤镜创建一个空白音频文件。假设我们需要创建一个10秒的空白音频文件:

    ffmpeg -f lavfi -t 10 -i anullsrc=r=44100:cl=stereo -c:a pcm_s16le silent_audio.wav
    

    这里,r=44100 设置采样率为44100 Hz,cl=stereo 设置声道为立体声,-c:a pcm_s16le 设置编码格式为 pcm_s16le

  3. 合并两个音频文件: 使用FFmpeg的concat协议将两个音频文件合并。首先,创建一个包含两个音频文件路径的文本文件 filelist.txt

    echo "file 'input_audio_file'" > filelist.txt
    echo "file 'silent_audio.wav'" >> filelist.txt
    

    然后,使用以下命令合并音频文件:

    ffmpeg -f concat -safe 0 -i filelist.txt -c copy output_audio_file
    

    这将生成一个包含原音频和空白音频的合并文件 output_audio_file

完整的流程如下:

# 获取原文件的音频参数
ffprobe -v error -show_entries stream=codec_name,channels,sample_rate -of default=noprint_wrappers=1:nokey=1 input_audio_file

# 创建空白音频文件(假设采样率为44100 Hz,声道为立体声,编码格式为pcm_s16le)
ffmpeg -f lavfi -t 10 -i anullsrc=r=44100:cl=stereo -c:a pcm_s16le silent_audio.wav

# 创建文件列表
echo "file 'input_audio_file'" > filelist.txt
echo "file 'silent_audio.wav'" >> filelist.txt

# 合并音频文件
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output_audio_file