mp3 切割

开源的东东很不错,摘了一段好文:

常在听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'\n" ./*.$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支持的解码更为强大。

 

posted @ 2015-10-08 15:18  阿旭^_^  阅读(628)  评论(0编辑  收藏  举报