采用FFmpeg从视频中提取音频(声音)保存为mp3文件

采用FFmpeg从视频中提取音频(声音)保存为mp3文件



采用FFmpeg从视频中提取音频(声音)保存为mp3文件
作者:雨水,日期:2016年1月9日 CSDN博客:http://blog.csdn.net/gobitan

摘要:看到好的视频文件,如果想把其中的音频(声音)提取出来。网络上肯定有不少类似工具,但作为技术人员提到音视频处理,肯定会想到FFmpeg。本文介绍了如何基于FFmpeg从视频中提取音频,然后将音频保存为mp3格式的音频文件。

环境准备:Ubuntu desktop 12.04

第一步:下载mp3的编码库
因为FFmpeg默认只支持mp3的解码,不支持mp3编码。如果想把提取出来的音频保存为mp3格式肯定就需要mp3格式的编码库。因此,想输出mp3文件,需要借助第三方的mp3编码库。这里采用LAME编码库,即Lame Aint an MP3 Encoder(A high quality MP3 encoder). LAME库可以从http://lame.sourceforge.net/下载到。我这里下载的时候选择的版本是3.98,文件名为lame-398.tar.gz,大约1M多。具体版本的选择参考后面编译ffmpeg时候的提示。访下载,可以在这里找到 http://download.csdn.net/detail/gobitan/9397485。

第二步:解压/配置/编译/安装LAME mp3编码库
分别执行如下步骤完成安装:
dennis@ubuntu14:~$ tar zxf lame-398.tar.gz
dennis@ubuntu14:~$ cd lame-398/
dennis@ubuntu14:~/lame-398$ ./configure
dennis@ubuntu14:~/lame-398$ make
dennis@ubuntu14:~/lame-398$ sudo make install

第三步:下载FFmpeg安装包
FFmpeg的安装包可以从http://ffmpeg.org/下载,当前最新的版本为2.8.4,下载后的文件为ffmpeg-2.8.4.tar.bz2,大约8M左右。

第四步:解压/配置/编译/安装FFmpeg
将下载的安装包上传到ubuntu,然后做如下步骤:
(1) 解压
dennis@ubuntu:~$ tar xf ffmpeg-2.8.4.tar.bz2
dennis@ubuntu:~$ cd ffmpeg-2.8.4/
(2) 配置
由于需要加载第三方mp3支持库,因此在配置的时候需要添加一个配置选项--enable-libmp3lame,配置选项的查询可以通过help命令来查看,如下所示:
dennis@ubuntu:~/ffmpeg-2.8.4$ ./configure --help|grep mp3
  --enable-libmp3lame      enable MP3 encoding via libmp3lame [no]
执行如下命令进行配置:
dennis@ubuntu14:~/ffmpeg-2.8.4$ ./configure --enable-libmp3lame --disable-yasm
如果第一步的LAME mp3库没有安装好,就会出现类似如下的错误:
ERROR: libmp3lame >= 3.98.3 not found
注:上面可以提供与ffmpeg匹配的LAME库的版本。
(3) 编译
dennis@ubuntu:~/ffmpeg-2.8.4$ make
(4) 安装
dennis@ubuntu:~/ffmpeg-2.8.4$ sudo make install
(5) 配置共享库
dennis@ubuntu:~$ sudo vi /etc/ld.so.conf
dennis@ubuntu:~$ sudo ldconfig -v
如果缺失这一步后面提取的时候会报如下的错误:
ffmpeg: error while loading shared libraries: libmp3lame.so.0: cannot open shared object file: No such file or directory

第四步:寻找一个可以测试的视频文件
我这里在贝瓦儿歌网下载了小苹果的视频,网址:http://g.beva.com/kan-erge/xiao-ping-guo.html#1802,大约23M。将文件重命名为apple.mp4.

第五步:执行音频提取
dennis@ubuntu:~$ ffmpeg -i apple.mp4 -f mp3 -vn apple.mp3
参数解释:
-i 表示input,即输入文件
-f 表示format,即输出格式
-vn表示vedio not,即输出不包含视频
对比源视频文件和提取得到的音频文件大小,可以看到源视频文件为约23M,而提取出来的音频文件大小为3M。
dennis@ubuntu:~$ ls -lrt
-rw-rw-r--  1 dennis dennis 24118025 Jan  9 02:52 apple.mp4
-rw-rw-r--  1 dennis dennis  3379969 Jan  9 02:54 apple.mp3
dennis@ubuntu:~$

第六步:扩展信息
FFmpeg还提供了很多有用的工具可以查看和处理音视频文件,如:
查看视频文件的音视频编解码格式,视频时长,比特率等,如下:
dennis@ubuntu:~$ ffmpeg -i apple.mp4
ffmpeg version 2.8.4 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
  configuration: --enable-libmp3lame --disable-yasm
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'apple.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    encoder         : Lavf54.6.100
  Duration: 00:03:31.24, start: 0.000000, bitrate: 913 kb/s
    Stream #0:0(und): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 780 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
At least one output file must be specified
dennis@ubuntu:~$

参考资料:
1. http://ffmpeg.org/  FFmpeg官网
2. http://lame.sourceforge.net/ LAME mp3编解码官网
3. http://blog.csdn.net/jcwkyl/article/details/5313297  从flv文件中提取音频并存储为mp3格式
4. http://blog.chinaunix.net/uid-11344913-id-3930867.html   编译支持MP3与H264编码的ffmpeg

猜你喜欢

转载自runus.iteye.com/blog/2344018