atrim过滤方法

atrim过滤方法

我有两个音频文件,每个文件大约 3 分钟长。我想截取每个文件的前 10 秒,并在特定时间点(0 秒和 10 秒)将它们分别添加到视频文件中。因此生成的视频应该为 20 秒长。

我已经到了这一步:

ffmpeg -i video.mov -ss 0 -t 20 -itsoffset 0 -i audio1.mp3 -itsoffset 10 -i audio2.mp3 -acodec copy -vcodec copy out.mov

...但生成的视频只有第一个音频文件的 20 秒,第二个音频文件没有像它应该的那样从 10 秒开始。

任何帮助都将不胜感激,谢谢!

根据此处的要求,控制台输出如下:

  configuration: --cc=/opt/local/bin/clang-mp-3.3 --prefix=/Users/tessus/data/ext/ffmpeg/sw --as=yasm --extra-version=tessus --disable-shared --enable-static --disable-ffplay --enable-gpl --enable-pthreads --enable-postproc --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libx265 --enable-libxvid --enable-libspeex --enable-bzlib --enable-zlib --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libxavs --enable-version3 --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvpx --enable-libgsm --enable-libopus --enable-libmodplug --enable-fontconfig --enable-libfreetype --enable-libass --enable-libbluray --enable-filters --disable-indev=qtkit --enable-runtime-cpudetect
  libavutil      52. 66.100 / 52. 66.100
  libavcodec     55. 52.102 / 55. 52.102
  libavformat    55. 33.100 / 55. 33.100
  libavdevice    55. 10.100 / 55. 10.100
  libavfilter     4.  2.100 /  4.  2.100
  libswscale      2.  5.102 /  2.  5.102
  libswresample   0. 18.100 /  0. 18.100
  libpostproc    52.  3.100 / 52.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/arran/Documents/video.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    creation_time   : 2014-06-03 02:27:17
  Duration: 00:00:10.00, start: 0.000000, bitrate: 981 kb/s
    Stream #0:0(eng): Video: mpeg4 (Advanced Simple Profile) (mp4v / 0x7634706D), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 975 kb/s, 1 fps, 1 tbr, 100 tbn, 1k tbc (default)
    Metadata:
      creation_time   : 2014-06-03 02:27:17
      handler_name    : Apple Alias Data Handler
Input #1, mp3, from '/Users/arran/Documents/audio1.mp3':
  Metadata:
    title           : Audio1
    track           : 1
  Duration: 00:02:51.68, start: 0.025057, bitrate: 256 kb/s
    Stream #1:0: Audio: mp3, 44100 Hz, stereo, s16p, 256 kb/s
[mp3 @ 0x102032c00] Estimating duration from bitrate, this may be inaccurate
Input #2, mp3, from '/Users/arran/Documents/audio2.mp3':
  Metadata:
    track           : 1
    title           : Audio2
  Duration: 00:04:32.46, start: 0.000000, bitrate: 320 kb/s
    Stream #2:0: Audio: mp3, 44100 Hz, stereo, s16p, 320 kb/s
Output #0, mov, to '/Users/arran/Documents/out.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    encoder         : Lavf55.33.100
    Stream #0:0(eng): Video: mpeg4 (mp4v / 0x7634706D), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 975 kb/s, 1 fps, 12800 tbn, 100 tbc (default)
    Metadata:
      creation_time   : 2014-06-03 02:27:17
      handler_name    : Apple Alias Data Handler
    Stream #0:1: Audio: mp3 (.mp3 / 0x33706D2E), 44100 Hz, stereo, 256 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #1:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame=   10 fps=0.0 q=-1.0 Lsize=    1821kB time=00:00:20.03 bitrate= 744.5kbits/s    
video:1190kB audio:626kB subtitle:0 data:0 global headers:0kB muxing overhead 0.245487%

答案1

这类似于:ffmpeg在视频中添加新音频(混合 2 个音频),但我猜它有足够的不同,不会完全重复。

atrim过滤方法

您可以使用atrim音频过滤器选择所需的细分,asetpts筛选将时间戳重置为 0,并且concat筛选将它们连接或结合在一起:

ffmpeg -i video.mov -i audio1.mp3 -i audio2.mp3 -filter_complex \
"[1:a]atrim=end=10,asetpts=PTS-STARTPTS[a1]; \
 [2:a]atrim=end=10,asetpts=PTS-STARTPTS[a2]; \
 [a1][a2]concat=n=2:v=0:a=1[a] \"
-map 0:v -map "[a]" -codec:v copy -codec:a libmp3lame -shortest output.mov

这种方法的一个优点是它是一个单一的命令,如果需要,可以将额外的过滤器应用于过滤器图。缺点是它需要重新编码音频,但视频可以流已复制(重新混合)。

多命令法

使用concat解复用器

$ ffmpeg -i audio1.mp3 -i audio2.mp3 -map 0:a -t 10 -c copy temp1.mp3 \
  -map 1:a -t 10 -c copy temp2.mp3

$ echo "file 'temp1.mp3'" >> input.txt

$ echo "file 'temp2.mp3'" >> input.txt

$ ffmpeg -i video.mov -f concat -i input.txt -map 0:v -map 1:a -c copy \
  -shortest output.mov

四个命令,但没有重新编码,因此质量将得以保留。

另请参阅

相关内容