我在 Mac 上有几个 M4A(声音)文件,我想将它们组合成一个声音文件。这可以通过终端命令来完成吗?有这样的事吗
是的,ffmpeg 不起作用,这与互联网回声室告诉你的相反。至少不是那样。令人难以置信的是,有多少人不得不流口水,浪费大家的时间。
这里。用链接证明我错了,但这就是你想要的,也是你唯一能看到它的地方。非常简单。
ffmpeg -i file1.m4a -acodec copy file1.aac
ffmpeg -i file2.m4a -acodec copy file2.aac
cat file1.aac file2.aac >>filenew.aac
ffmpeg -i filenew.aac -acodec copy -bsf:a aac_adtstoasc filenew.m4a
我为额外的库编译了自己的 ffmpeg,所以我希望这是默认的库之一。如果没有,那绝对值得这么麻烦。我无法在第二个系统上验证上述内容,但在我的旧 Hardy Heron Ubuntu grunt 系统上,连接的文件具有所有正确的 m4a 元数据和标签,并且音频质量没有变化。
FFMPEG 可以帮助您。查看他们的如何连接媒体文件文章。
github.com/mifi/lossless-cut 用于使用 ffmpeg 进行音频/视频编辑。非常适合通过拖放合并 mp3/mp4/m4a。
sudo snap install losslesscut
从https://stackoverflow.com/a/31033308/2958070的评论中收集:
ffmpeg -f concat -safe 0 -i <(for f in ./*.m4a; do echo "file '$PWD/$f'"; done) -c copy output.m4a
这是我的 ffmpeg 版本
brew install
ed
$ ffmpeg -version
ffmpeg version 5.1.2 Copyright (c) 2000-2022 the FFmpeg developers
built with Apple clang version 14.0.0 (clang-1400.0.29.202)
configuration: --prefix=/usr/local/Cellar/ffmpeg/5.1.2_4 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox
libavutil 57. 28.100 / 57. 28.100
libavcodec 59. 37.100 / 59. 37.100
libavformat 59. 27.100 / 59. 27.100
libavdevice 59. 7.100 / 59. 7.100
libavfilter 8. 44.100 / 8. 44.100
libswscale 6. 7.100 / 6. 7.100
libswresample 4. 7.100 / 4. 7.100
libpostproc 56. 6.100 / 56. 6.100
您是否正在尝试让音频一个接一个地播放,或者同时一个一个地播放?
无论哪种方式,FFmpeg 都可以做到这一点。我读你问题的方式是,你希望它们同时播放......如果是这样的话,请尝试:
ffmpeg -i [input1] -i [input2] -filter_complex "[0:a][1:a]amerge=inputs=2[a]" -map [a] -c:a libfdk_aac out.m4a
注意:这会将音频压缩为 AAC。它是最好的音频编码器之一,因此您不会真正注意到差异,但如果您需要保持质量,您始终可以使用
pcm_s16le
进行未压缩。但是,我认为您最好使用 .wav 文件。
echo "" >./m4a.txt; for f in *.m4a; do echo "file '$PWD/$f'" >> ./m4a.txt; done; fpdd ./m4a.txt;
然后:
ffmpeg -f concat -safe 0 -i "./m4a.txt" --whatever parameters output.m4a