Bak*_*yor 60 command-line bash files
正如这里建议的那样,我使用cat
命令将几个 .mp3 文件连接成一个 .mp3 文件。
想象一下,我在当前文件夹中有以下 .mp3 文件:
001001.mp3 001002.mp3 001003.mp3 001004.mp3 001005.mp3
Run Code Online (Sandbox Code Playgroud)
或者,像这样:
096001.mp3 096002.mp3 096003.mp3 096004.mp3
Run Code Online (Sandbox Code Playgroud)
我需要按升序连接这些 .mp3 文件,即 001001.mp3+001002.mp3+001003.mp3+etc.
为了将这些 .mp3 文件合并为一个,我在当前文件夹中执行以下命令:
cat *.mp3 > final.mp3
Run Code Online (Sandbox Code Playgroud)
我测试了最终的 .mp3 文件,这是我所期望的,但我需要确保上面的命令按升序选择文件。
我可以确定上面的命令总是按升序连接文件吗?
谢谢先生!
Oli*_*Oli 70
cat
不是这项工作的正确工具。MP3 格式有各种各样的垃圾,可以潜伏在文件的前端和末尾,这需要被剥离。mp3wrap
是你想要的。它将排除文件中的任何元数据并将音频粘贴在一起。
sudo apt-get install mp3wrap
mp3wrap output.mp3 *.mp3
Run Code Online (Sandbox Code Playgroud)
在执行此操作之前,请运行ls *.mp3
以检查它们的顺序是否正确。当我最初写这个答案时(六年多前!)通配符显然表现不佳,但我认为他们现在表现得很好。
例如,如果文件已编号但未填充零,则您可能需要重命名文件,它们{1-11}.mp3
将按1 10 11 2 3 4 5 6 7 8 9
. 这可以很容易地修复。
bma*_*pin 39
mp3wrap似乎是一个不错的解决方案,但是当我播放生成的文件时,时间戳不正确。当您将 mp3 加入到您知道稍后要拆分的文件中时,似乎最好使用 mp3wrap。
我只是想将一些 mp3 永久连接在一起。我最终使用 ffmpeg 来连接文件:
一、安装ffmpeg
Ubuntu 15.04+
sudo apt install ffmpeg
Run Code Online (Sandbox Code Playgroud)Ubuntu 14.10 及以下
转到http://ffmpeg.org/download.html,下载静态版本之一,解压它,然后复制到 /usr/local/bin
ffmpeg -i "concat:file1.mp3|file2.mp3" -acodec copy output.mp3
更多信息:https :
//trac.ffmpeg.org/wiki/Concatenate#protocol
https://superuser.com/a/314245
如前所述,mp3wrap
是一个很好的解决方案。不过,它可能不会一直有效。据我所知,mp3wrap
假设所有输入文件都具有相同的特征,例如 VBR 与 CBR、比特率等。如果不满足这个假设,它很可能会失败。在这种情况下,唯一的解决方案是将所有 mp3 文件解码为原始格式,如.wav
,将它们与类似的程序连接起来,sox
并通过将所有文件重新编码为 mp3 来完成。
它根据单个字符进行字母排序。这意味着“01”在“1”之前,因为 naught 的值小于 1。
这是一个例子。我有一个目录,其中包含名为 1、2、3、04、05 和 06 的文件。它们是包含自己文件名的文本文件:
test$ cat *
04
05
06
1
2
3
Run Code Online (Sandbox Code Playgroud)
所以,是的,它会的;但您需要确保所有文件都正确“填充”。
这行漂亮的 bash 脚本可以让您直观地比较文件名,从而很容易发现任何错误:
for f in $(ls); do printf "%05s\n" "$f"; done
Run Code Online (Sandbox Code Playgroud)
它的输出将如下所示:
04
05
06
1
2
3
Run Code Online (Sandbox Code Playgroud)
如果不是,则需要填充文件名:在 StackOverflow 上填充文件名的 Bash 脚本解释了如何执行此操作。
编辑。投票给奥利的答案,好多了。:P
我会离开我的,因为它添加了一些东西,但你应该使用他的解决方案,
mp3wrap output.mp3 `ls -1 *.mp3 | sort`
Run Code Online (Sandbox Code Playgroud)
请记住,sort
仍然会按照我上面描述的方式对内容进行排序,如果它们的长度不相等,您仍然需要填充文件名。
大多数人都在建议mp3wrap
,但它有缺点:生成的文件在某些播放器中没有报告其完整长度,然后您无法超过该点。
mp3cat
据我所知,这项工作做得又快又好。可以在http://mulholland.xyz/dev/mp3cat/下载,使用方法如下:
mp3cat file1.mp3 file2.mp3 file3.mp3
Run Code Online (Sandbox Code Playgroud)
另一种可能性是 sox
sudo apt-get install sox libsox-fmt-mp3
sox file1.mp3 file2.mp3 target.mp3
Run Code Online (Sandbox Code Playgroud)
但它似乎很慢(可能它解码并重新编码音频?)
归档时间: |
|
查看次数: |
57370 次 |
最近记录: |