在终端中合并 M4A 文件

问题描述 投票:0回答:6

我在 Mac 上有几个 M4A(声音)文件,我想将它们组合成一个声音文件。这可以通过终端命令来完成吗?有这样的事吗

file audio merge terminal m4a
6个回答
30
投票

是的,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 元数据和标签,并且音频质量没有变化。


6
投票

FFMPEG 可以帮助您。查看他们的如何连接媒体文件文章。


2
投票

github.com/mifi/lossless-cut 用于使用 ffmpeg 进行音频/视频编辑。非常适合通过拖放合并 mp3/mp4/m4a。

sudo snap install losslesscut


2
投票

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

1
投票

您是否正在尝试让音频一个接一个地播放,或者同时一个一个地播放?

无论哪种方式,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 文件。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.