开源的东东很不错,摘了一段好文:
常在听mp3或其他格式音乐的朋友,有时会有特别喜欢的片段,例如副歌的部份会想拿来做手机的铃声。这时候就需要一些处理音效的软体,例如之前提过的 Audacity。其实还有更简便的方法,只要系统中有安装好的ffmpeg,一行指令就OK了,相当简单。让我们分成两步骤来完成他吧!
第一步先用播放软体将想要处理的音乐档桉听一次,把想独立出来部份的时间记下来,看是几分几秒到几分几秒。记好后,第一步也就完成了。
第二步就是下指令了。
# ffmpeg -i input.mp3 -ss hh:mm:ss -t hh:mm:ss -acodec copy output.mp3
参数说明:
-ss : 指定从那裡开始
-t : 指定到那裡结束
-acodec copy : 编码格式和来源档桉相同(就是mp3)
这方法不只是MP3可以用,其他的许多格式也都适用,只是输出档桉的副档名就要跟着改一改了。
以下举个例子,如果我想把aa.mp3中的1分12秒到1分42秒的地方切出来,然后存成bb.mp3,指令如下
# ffmpeg -i aa.mp3 -ss 00:01:12 -t 00:01:42 -acodec copy bb.mp3
就是这么简单,而且处理速度超级快。一下子完成了。
FFMPEG还有一个不错的脚本,值得推荐
#!/bin/bash | |
#cut/join videos using ffmpeg without quality loss | |
if [ -z $1 ] || [ -z $2 ]; then | |
echo "Usage:$0 c[ut] seconds <File>" | |
echo " eg. $0 c 10 80 example.mp4" | |
echo " eg. $0 c 00:00:10 00:01:20 example.mp4" | |
echo "Usage:$0 j[oin] <FileType>" | |
echo " eg. $0 j avi" | |
exit | |
fi | |
case "$1" in | |
c) | |
echo "cuttig video..." | |
fileName=$(echo $4 | cut -f 1 -d '.') | |
fileType=$(echo $4 | cut -f 2 -d '.') | |
ffmpeg -i $4 -ss $2 -t $3 -acodec copy -vcodec copy $fileName-$2-$3.$fileType | |
;; | |
j) | |
echo "joinning videos..." | |
rm temp_list.txt | |
for f in `ls *.$2 | sort -k 1n -t '.'`; do echo "file '$f'" >> temp_list.txt; done | |
#printf "file '%s' " ./*.$2 > temp_list.txt | |
ffmpeg -f concat -i temp_list.txt -c copy output.$2 | |
rm temp_list.txt | |
;; | |
*) | |
echo "wrong arguments" | |
;; | |
esac | |
exit |
github网址:https://gist.github.com/imcaspar/8771268
另外还有一个不错的方案:
libmad是一个开源mp3解码库,其对mp3解码算法做了很多优化,性能较好,很多播放器如mplayer、xmms等都是使用这个开源库进行解码的;如果要设计mp3播放器而又不想研究mp3解码算法的话,libmad是个不错的选择
可以试试,我觉得第一个如果可以足以,并且ffpmg支持的解码更为强大。