项目上面遇到一些处理音视频的功能处理,于是就想到了使用ffmpeg来封装一些命令,通过java或者C++来去调用,期间遇到了不少问题,折腾了几个小时,记录下来,以便后面还会遇到。
1、下载最新版本ffmpeg mac版本的,解压下载下来的ffmpeg,我下载的是最新的ffmpeg-3.2.4
2、打开Mac终端命令工具,切换到刚才解压的ffmpeg目录下面,输入
./configure
3、配置完成之后,接着再进行编译make;
make
4、编译完成之后,再进行安装
sudo make install
以上是正常情况下面一般需要执行的几个步骤,其实很简单,由于我的业务是需要把mp4音频单独提取出来然后再转化为mp3,查了想着资料,lame音频编解码库对ffmpeg支持得比较友好,于是先去下载lame,解压lame文件夹,命令行切换到lame解压目录下面
./configure
make
sudo make install
即可,以上步骤和安装ffmpeg无区别。
5、再次切换到ffmpeg解压目录,首先配置
./configure --enable-shared --enable-libmp3lame --disable-yasm --prefix=/usr/local/ffmpeg
make
sudo make install
网上很多资料都说直接使用
./configure --enable-libmp3lame
make
sudo make install
但是我试了,没用,还是不能从视频中提取音频文件,较上面一种已经在我机器上面成功;
6、使用命令
ffmpeg -i xx.mp4 -f mp3 -vn xx.mp3
如果成功,则会提示
ffmpeg version 3.2.4 Copyright (c) 2000-2017 the FFmpeg developers
built with Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn)
configuration: --enable-libmp3lame --disable-yasm
WARNING: library configuration mismatch
avutil configuration: --enable-shared --enable-libmp3lame --disable-yasm --prefix=/usr/local/ffmpeg
avcodec configuration: --enable-shared --enable-libmp3lame --disable-yasm --prefix=/usr/local/ffmpeg
avformat configuration: --enable-shared --enable-libmp3lame --disable-yasm --prefix=/usr/local/ffmpeg
avdevice configuration: --enable-shared --enable-libmp3lame --disable-yasm --prefix=/usr/local/ffmpeg
avfilter configuration: --enable-shared --enable-libmp3lame --disable-yasm --prefix=/usr/local/ffmpeg
swscale configuration: --enable-shared --enable-libmp3lame --disable-yasm --prefix=/usr/local/ffmpeg
swresample configuration: --enable-shared --enable-libmp3lame --disable-yasm --prefix=/usr/local/ffmpeg
libavutil 55. 34.101 / 55. 34.101
libavcodec 57. 64.101 / 57. 64.101
libavformat 57. 56.101 / 57. 56.101
libavdevice 57. 1.100 / 57. 1.100
libavfilter 6. 65.100 / 6. 65.100
libswscale 4. 2.100 / 4. 2.100
libswresample 2. 3.100 / 2. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/terrence/Downloads/1489061946_VIDEO.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42isom
creation_time : 2017-03-09T02:44:23.000000Z
Duration: 00:00:29.20, start: 0.000000, bitrate: 7989 kb/s
Stream #0:0(und): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv), 1920x960 [SAR 1:1 DAR 2:1], 7910 kb/s, 30 fps, 30 tbr, 90k tbn, 29.97 tbc (default)
Metadata:
creation_time : 2017-03-09T02:44:23.000000Z
encoder : JVT/AVC Coding
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 75 kb/s (default)
Metadata:
creation_time : 2017-03-09T02:44:23.000000Z
Output #0, mp3, to '/Users/terrence/Downloads/1489061946_VIDEO.mp3':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42isom
TSSE : Lavf57.56.101
Stream #0:0(und): Audio: mp3 (libmp3lame), 44100 Hz, mono, fltp (default)
Metadata:
creation_time : 2017-03-09T02:44:23.000000Z
encoder : Lavc57.64.101 libmp3lame
Stream mapping:
Stream #0:1 -> #0:0 (aac (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
[libmp3lame @ 0x7fbba401e800] Trying to remove 1152 samples, but the queue is empty
size= 225kB time=00:00:28.74 bitrate= 64.2kbits/s speed=62.3x
video:0kB audio:225kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.138952%