2017-02-26 29 views
0

问题是,当我连接两个m4a文件与concat demuxer时,ffmpeg会产生持续时间不正确的文件。您可以看到输出文件的持续时间与两个输入文件合并的持续时间非常不同。请帮我找出它的问题。我的最终目标是将无声音频附加到音频文件的末尾。为此,我使用ffmpeg生成无声音频文件,然后尝试将其与其他音频文件连接。FFmpeg错误地连接两个m4a文件

命令我用来生成音频文件:

ffmpeg -nostdin -loglevel error -y -threads 0 -filter_complex aevalsrc=0 -t 4 /home/ec2-user/videocreation/temp/silence.m4a 

命令我使用CONCAT:

ffmpeg -f concat -safe 0 -i temp.txt -c copy output.m4a 

我在TEMP.TXT列出的两个文件路径:

[[email protected] server]$ cat temp.txt 
file /home/ec2-user/videoData/DnXptC4ld8/FADING_OUT_VOLUP_Blrt_Decrypt_1ed5c4d569d8a1f23428b65217f65eaf_audio.m4a 
file /home/ec2-user/videocreation/temp/silence.m4a 

第一个文件ffprobe:

[[email protected] server]$ ffprobe /home/ec2-user/videoData/DnXptC4ld8/FADING_OUT_VOLUP_Blrt_Decrypt_1ed5c4d569d8a1f23428b65217f65eaf_audio.m4a 
ffprobe version N-80097-g89e9393 Copyright (c) 2007-2016 the FFmpeg developers 
    built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-4) 
    configuration: --prefix=/home/ec2-user/ffmpeg_build --extra-cflags=-I/home/ec2-user/ffmpeg_build/include --extra-ldflags=-L/home/ec2-user/ffmpeg_build/lib --bindir=/home/ec2-user/bin --pkg-config-flags=--static --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 
    libavutil  55. 24.100/55. 24.100 
    libavcodec  57. 43.100/57. 43.100 
    libavformat 57. 37.100/57. 37.100 
    libavdevice 57. 0.101/57. 0.101 
    libavfilter  6. 46.100/6. 46.100 
    libswscale  4. 1.100/4. 1.100 
    libswresample 2. 0.101/2. 0.101 
    libpostproc 54. 0.100/54. 0.100 
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/ec2-user/videoData/DnXptC4ld8/FADING_OUT_VOLUP_Blrt_Decrypt_1ed5c4d569d8a1f23428b65217f65eaf_audio.m4a': 
    Metadata: 
    major_brand  : M4A 
    minor_version : 512 
    compatible_brands: isomiso2 
    encoder   : Lavf57.44.100 
    Duration: 00:00:01.77, start: 0.000000, bitrate: 4 kb/s 
    Stream #0:0(und): Audio: aac (LC) (mp4a/0x6134706D), 11025 Hz, mono, fltp, 0 kb/s (default) 
    Metadata: 
     handler_name : SoundHandler 

第二个文件ffprobe:

[[email protected] server]$ ffprobe /home/ec2-user/videocreation/temp/silence.m4a 
ffprobe version N-80097-g89e9393 Copyright (c) 2007-2016 the FFmpeg developers 
    built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-4) 
    configuration: --prefix=/home/ec2-user/ffmpeg_build --extra-cflags=-I/home/ec2-user/ffmpeg_build/include --extra-ldflags=-L/home/ec2-user/ffmpeg_build/lib --bindir=/home/ec2-user/bin --pkg-config-flags=--static --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 
    libavutil  55. 24.100/55. 24.100 
    libavcodec  57. 43.100/57. 43.100 
    libavformat 57. 37.100/57. 37.100 
    libavdevice 57. 0.101/57. 0.101 
    libavfilter  6. 46.100/6. 46.100 
    libswscale  4. 1.100/4. 1.100 
    libswresample 2. 0.101/2. 0.101 
    libpostproc 54. 0.100/54. 0.100 
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/ec2-user/videocreation/temp/silence.m4a': 
    Metadata: 
    major_brand  : M4A 
    minor_version : 512 
    compatible_brands: isomiso2 
    encoder   : Lavf57.44.100 
    Duration: 00:00:04.02, start: 0.000000, bitrate: 4 kb/s 
    Stream #0:0(und): Audio: aac (LC) (mp4a/0x6134706D), 44100 Hz, mono, fltp, 1 kb/s (default) 
    Metadata: 
     handler_name : SoundHandler 

输出文件ffprobe:

[[email protected] server]$ ffprobe output.m4a 
ffprobe version N-80097-g89e9393 Copyright (c) 2007-2016 the FFmpeg developers 
    built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-4) 
    configuration: --prefix=/home/ec2-user/ffmpeg_build --extra-cflags=-I/home/ec2-user/ffmpeg_build/include --extra-ldflags=-L/home/ec2-user/ffmpeg_build/lib --bindir=/home/ec2-user/bin --pkg-config-flags=--static --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 
    libavutil  55. 24.100/55. 24.100 
    libavcodec  57. 43.100/57. 43.100 
    libavformat 57. 37.100/57. 37.100 
    libavdevice 57. 0.101/57. 0.101 
    libavfilter  6. 46.100/6. 46.100 
    libswscale  4. 1.100/4. 1.100 
    libswresample 2. 0.101/2. 0.101 
    libpostproc 54. 0.100/54. 0.100 
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output.m4a': 
    Metadata: 
    major_brand  : M4A 
    minor_version : 512 
    compatible_brands: isomiso2 
    encoder   : Lavf57.37.100 
    Duration: 00:00:23.22, start: 0.000000, bitrate: 0 kb/s 
    Stream #0:0(und): Audio: aac (LC) (mp4a/0x6134706D), 11025 Hz, mono, fltp, 0 kb/s (default) 
    Metadata: 
     handler_name : SoundHandler 

回答

0

文件需要具有相同的属性。您的无声文件具有不同的采样率。使用

ffmpeg -f lavfi -i anullsrc -ar 11025 -ac 1 -t 4 silence.m4a 
+0

该死的抽样频率是一块拼图的失踪!!!!! – asad

+1

@asad没有什么区别,但是也可以使用'anullsrc = r = 11025:cl = mono'并省略'-ar'&'-ac'。 – LordNeckbeard