has*_*sen 13 audio linux command-line
我需要什么命令行工具来连接多个音频文件并将它们输出为一个 ogg(和/或 mp3)?
如果你能提供完整的命令来连接和输出到 ogg,那就太棒了。
编辑:输入文件(在我的情况下,目前)是wma
格式,但理想情况下它应该足够灵活以支持广泛的流行格式。
Edit2:只是为了澄清,我不想合并某个目录中的所有 wma
s,我只想将 2 或 3 个文件连接成一个。
感谢您提出的解决方案,但它们似乎都需要创建临时文件,如果可能的话,我想避免这种情况。
gol*_*udo 15
SoX可以处理大量音频格式,具体取决于它编译的库,并且可以使用简单的命令行连接文件
sox file1.wav file2.mp3 file3.flac outfile.ogg
Run Code Online (Sandbox Code Playgroud)
我相信这仅在源音频文件都具有相同数量的通道时才有效,但我尚未对此进行测试。
据我所知,SoX 对 .wma 文件的支持为零,因此至少首先使用ffmpeg 之类的文件转换这些文件可能是不可避免的。
ffmpeg -i infile.wma outfile.wav
Run Code Online (Sandbox Code Playgroud)
小智 9
这是我的建议:使用与命名管道连接的mplayer 和 oggenc。
使用mplayer
解码音频。它可以播放多种音频(和视频)格式,也可以播放多个文件。
用于oggenc
将音频编码为 Ogg Vorbis。
为了消除对临时文件的需要,使用命名管道 在编码器和解码器之间传输数据。
将其放入脚本中:
#!/bin/sh
# Usage: ./combine2ogg destination.ogg source1.wma source2.wma ...
# Requires: mplayer, oggenc
destination="$1"
shift
readpipe="$destination.tmpr"
writepipe="$destination.tmpw"
mkfifo "$readpipe"
mkfifo "$writepipe"
cat "$writepipe" > "$readpipe" &
mplayer -really-quiet -slave -nolirc -vc null -vo null -ao "pcm:fast:file=$writepipe" "$@" &
oggenc --quiet -o "$destination" "$readpipe"
rm -f "$readpipe"
rm -f "$writepipe"
Run Code Online (Sandbox Code Playgroud)
解释:
-really-quiet -slave -nolirc
可以禁用消息并使其不读取键盘或遥控器。有选项-vc null -vo null
可以禁用视频编码和输出。该-ao
选项指示它以 WAV 格式将音频输出到命名的写入管道。需要改进的地方:如果其中一个命令失败(使用set -e
),则提前终止脚本,但仍会正确清理 fifo(捕获必要的信号)。
归档时间: |
|
查看次数: |
17675 次 |
最近记录: |