ffmpeg功能强大,可以通过命令行来对音视频进行处理。为了使用其功能,我在Mac上对其进行了安装。
我的Mac OS X 系统版本:OS X Yosemite, 10.10.14
关于ffmpeg在Mac OS X上的编译,FFmpeg上有官方文档说明:https://trac.ffmpeg.org/wiki/CompilationGuide/MacOSX。该文档给出了3种方法:
- ffmpeg through Homebrew
- Compiling FFmpeg yourself
- Manual install of the dependencies without Homebrew
看了这三种方法的官方说明后,我选择了第一种,因为最简单。
首先,Mac上要安装Homebrew
在终端执行命令,ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
devtemobideMac-mini:~ sunminmin$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" ==> This script will install: /usr/local/bin/brew /usr/local/Library/... /usr/local/share/man/man1/brew.1 Press RETURN to continue or any other key to abort ==> /usr/bin/sudo /bin/chmod g+rwx /Library/Caches/Homebrew Password: ==> Downloading and installing Homebrew... remote: Counting objects: 225571, done. remote: Compressing objects: 100% (59354/59354), done. remote: Total 225571 (delta 165037), reused 225482 (delta 164969) Receiving objects: 100% (225571/225571), 51.57 MiB | 1.19 MiB/s, done. Resolving deltas: 100% (165037/165037), done. From https://github.com/Homebrew/homebrew * [new branch] master -> origin/master HEAD is now at 82d7dc4 tomcat: update 8.0.17 bottle. ==> Installation successful! ==> Next steps Run `brew doctor` before you install anything Run `brew help` to get started |
其次,安装ffmpeg
在终端执行命令,brew install ffmpeg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
devtemobideMac-mini:~ sunminmin$ brew install ffmpeg ==> Installing dependencies for ffmpeg: x264, lame, libvo-aacenc, xvid ==> Installing ffmpeg dependency: x264 ==> Downloading https://homebrew.bintray.com/bottles/x264-r2533.yosemite.bottle. ######################################################################## 100.0% ==> Pouring x264-r2533.yosemite.bottle.tar.gz ?? /usr/local/Cellar/x264/r2533: 9 files, 3.4M ==> Installing ffmpeg dependency: lame ==> Downloading https://homebrew.bintray.com/bottles/lame-3.99.5.yosemite.bottle ######################################################################## 100.0% ==> Pouring lame-3.99.5.yosemite.bottle.1.tar.gz ?? /usr/local/Cellar/lame/3.99.5: 25 files, 2.1M ==> Installing ffmpeg dependency: libvo-aacenc ==> Downloading https://homebrew.bintray.com/bottles/libvo-aacenc-0.1.3.yosemite ######################################################################## 100.0% ==> Pouring libvo-aacenc-0.1.3.yosemite.bottle.tar.gz ?? /usr/local/Cellar/libvo-aacenc/0.1.3: 15 files, 336K ==> Installing ffmpeg dependency: xvid ==> Downloading https://homebrew.bintray.com/bottles/xvid-1.3.3.yosemite.bottle. ######################################################################## 100.0% ==> Pouring xvid-1.3.3.yosemite.bottle.2.tar.gz ?? /usr/local/Cellar/xvid/1.3.3: 9 files, 1.3M ==> Installing ffmpeg ==> Downloading https://homebrew.bintray.com/bottles/ffmpeg-2.6.3.yosemite.bottle.ta ######################################################################## 100.0% ==> Pouring ffmpeg-2.6.3.yosemite.bottle.tar.gz ==> Caveats FFmpeg has been built without libfaac for licensing reasons; libvo-aacenc is used by default. To install with libfaac, you can: brew reinstall ffmpeg --with-faac You can also use the experimental FFmpeg encoder, libfdk-aac, or libvo_aacenc to encode AAC audio: ffmpeg -i input.wav -c:a aac -strict experimental output.m4a Or: brew reinstall ffmpeg --with-fdk-aac ffmpeg -i input.wav -c:a libfdk_aac output.m4a ==> Summary ?? /usr/local/Cellar/ffmpeg/2.6.3: 204 files, 42M |
再次,查看ffmpeg info
在终端执行命令,brew info ffmpeg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
devtemobideMac-mini:~ sunminmin$ brew info ffmpeg ffmpeg: stable 2.6.3 (bottled), HEAD Play, record, convert, and stream audio and video https://ffmpeg.org/ /usr/local/Cellar/ffmpeg/2.6.3 (204 files, 42M) * Poured from bottle From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/ffmpeg.rb ==> Dependencies Build: pkg-config ?, texi2html ?, yasm ? Recommended: x264 ?, lame ?, libvo-aacenc ?, xvid ? Optional: faac ?, fontconfig ?, freetype ?, theora ?, libvorbis ?, libvpx ?, rtmpdump ?, opencore-amr ?, libass ?, openjpeg ?, speex ?, schroedinger ?, fdk-aac ?, opus ?, frei0r ?, libcaca ?, libbluray ?, libsoxr ?, libquvi ?, libvidstab ?, x265 ?, openssl ?, libssh ?, webp ? ==> Options --with-faac Build with faac support --with-fdk-aac Enable the Fraunhofer FDK AAC library --with-ffplay Enable FFplay media player --with-fontconfig Build with fontconfig support --with-freetype Build with freetype support --with-frei0r Build with frei0r support --with-libass Enable ASS/SSA subtitle format --with-libbluray Build with libbluray support --with-libcaca Build with libcaca support --with-libquvi Build with libquvi support --with-libsoxr Enable the soxr resample library --with-libssh Enable SFTP protocol via libssh --with-libvidstab Enable vid.stab support for video stabilization --with-libvorbis Build with libvorbis support --with-libvpx Build with libvpx support --with-opencore-amr Enable Opencore AMR NR/WB audio format --with-openjpeg Enable JPEG 2000 image format --with-openssl Enable SSL support --with-opus Build with opus support --with-rtmpdump Enable RTMP protocol --with-schroedinger Enable Dirac video format --with-speex Build with speex support --with-theora Build with theora support --with-tools Enable additional FFmpeg tools --with-webp Enable using libwebp to encode WEBP images --with-x265 Enable x265 encoder --without-lame Disable MP3 encoder --without-libvo-aacenc Disable VisualOn AAC encoder --without-qtkit Disable deprecated QuickTime framework --without-x264 Disable H.264 encoder --without-xvid Disable Xvid MPEG-4 video encoder --HEAD Install HEAD version ==> Caveats FFmpeg has been built without libfaac for licensing reasons; libvo-aacenc is used by default. To install with libfaac, you can: brew reinstall ffmpeg --with-faac You can also use the experimental FFmpeg encoder, libfdk-aac, or libvo_aacenc to encode AAC audio: ffmpeg -i input.wav -c:a aac -strict experimental output.m4a Or: brew reinstall ffmpeg --with-fdk-aac ffmpeg -i input.wav -c:a libfdk_aac output.m4a |
经过这3步,现在就可以使用ffmpeg的强大功能了。
现在ffmpeg的版本更新很快,今年3月份发布了 FFmpeg 2.6.1,7月份发布了 FFmpeg 2.7.2,中间还有一些其它版本,比如2.7,2.7.1,这些版本我都在iOS平台上编译使用过,今年9月份,FFmpeg 的版本更新到了2.8。今年,我见证了FFmpeg更新最频繁的的时刻。
经过前面的3步,在Mac上安装了 ffmpeg 2.6.3 的版本,过段时间,homebrew上ffmpeg 的安装源就会更新,若想升级ffmpeg,就需要执行下面的第4步操作了。
最后,升级ffmpeg的版本
若想升级ffmpeg的版本,可以在终端执行命令,brew update && brew upgrade ffmpeg
实例
安装好了ffmpeg,就要试试其功能了。采用文章利用x264将iOS摄像头实时视频流编码为h264文件配套工程X264-Encode-for-iOS中的h264文件,该文件地址为2015-09-17 18:05:20.h264,使用ffmpeg 命令将其打包为 .mp4容器格式的文件
将该h264文件下载,在终端上,执行命令进入存放该文件的目录
1 |
devtemobideMac-mini:~ sunminmin$ cd /Users/dev.temobi/Desktop/sunmmMainPrj/ZZ_Z_Github_clone |
进入到该目录后,执行命令,ffmpeg -i 2015-09-17\ 18_05_20.h264 2015-09-17.mp4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
devtemobideMac-mini:ZZ_Z_Github_clone sunminmin$ ffmpeg -i 2015-09-17\ 18_05_20.h264 2015-09-17.mp4 ffmpeg version 2.6.3 Copyright (c) 2000-2015 the FFmpeg developers built with Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn) configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6.3 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda libavutil 54. 20.100 / 54. 20.100 libavcodec 56. 26.100 / 56. 26.100 libavformat 56. 25.101 / 56. 25.101 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 11.102 / 5. 11.102 libavresample 2. 1. 0 / 2. 1. 0 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 3.100 / 53. 3.100 Input #0, h264, from ‘2015-09-17 18_05_20.h264‘: Duration: N/A, bitrate: N/A Stream #0:0: Video: h264 (Constrained Baseline), yuv420p, 480x360, 15 fps, 15 tbr, 1200k tbn, 30 tbc [libx264 @ 0x7fada2818000] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX [libx264 @ 0x7fada2818000] profile High, level 2.1 [libx264 @ 0x7fada2818000] 264 - core 144 r2533 c8a773e - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=15 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 Output #0, mp4, to ‘2015-09-17.mp4‘: Metadata: encoder : Lavf56.25.101 Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 480x360, q=-1--1, 15 fps, 15360 tbn, 15 tbc Metadata: encoder : Lavc56.26.100 libx264 Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264)) Press [q] to stop, [?] for help frame= 64 fps=0.0 q=27.0 size= 60kB time=00:00:00.80 bitrate= 609.7kbits/s frame= 87 fps= 85 q=27.0 size= 187kB time=00:00:02.33 bitrate= 655.2kbits/s frame= 120 fps= 77 q=27.0 size= 366kB time=00:00:04.53 bitrate= 661.5kbits/s frame= 149 fps= 72 q=27.0 size= 444kB time=00:00:06.46 bitrate= 562.4kbits/s frame= 178 fps= 69 q=27.0 size= 508kB time=00:00:08.40 bitrate= 495.4kbits/s frame= 196 fps= 56 q=-1.0 Lsize= 651kB time=00:00:12.93 bitrate= 412.2kbits/s video:648kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.389284% [libx264 @ 0x7fada2818000] frame I:2 Avg QP:20.10 size: 5888 [libx264 @ 0x7fada2818000] frame P:126 Avg QP:22.22 size: 4340 [libx264 @ 0x7fada2818000] frame B:68 Avg QP:23.94 size: 1537 [libx264 @ 0x7fada2818000] consecutive B-frames: 43.9% 27.6% 6.1% 22.4% [libx264 @ 0x7fada2818000] mb I I16..4: 31.4% 51.4% 17.2% [libx264 @ 0x7fada2818000] mb P I16..4: 8.6% 10.2% 4.6% P16..4: 46.2% 11.9% 4.2% 0.0% 0.0% skip:14.2% [libx264 @ 0x7fada2818000] mb B I16..4: 1.1% 0.6% 0.6% B16..8: 52.3% 4.9% 0.8% direct: 3.2% skip:36.5% L0:51.0% L1:45.1% BI: 3.9% [libx264 @ 0x7fada2818000] 8x8 transform intra:43.2% inter:63.2% [libx264 @ 0x7fada2818000] coded y,uvDC,uvAC intra: 42.6% 57.1% 10.4% inter: 19.2% 28.2% 0.7% [libx264 @ 0x7fada2818000] i16 v,h,dc,p: 20% 51% 10% 19% [libx264 @ 0x7fada2818000] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 24% 38% 22% 2% 2% 2% 4% 2% 5% [libx264 @ 0x7fada2818000] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 21% 43% 12% 3% 3% 3% 6% 4% 5% [libx264 @ 0x7fada2818000] i8c dc,h,v,p: 51% 32% 14% 3% [libx264 @ 0x7fada2818000] Weighted P-Frames: Y:7.1% UV:5.6% [libx264 @ 0x7fada2818000] ref P L0: 78.9% 10.4% 8.3% 2.3% 0.1% [libx264 @ 0x7fada2818000] ref B L0: 93.9% 5.6% 0.5% [libx264 @ 0x7fada2818000] ref B L1: 96.2% 3.8% [libx264 @ 0x7fada2818000] kb/s:405.98 |
到此,h264文件封装为.mp4格式的过程结束。
查看2015-09-17.mp4 文件,如图
2015-09-17.mp4 文件可以使用Quick Time Player,VLC 正常播放。
- 2015-09-17.mp4 文件的下载地址为:2015-09-17.mp4
- 2015-09-17 18:05:20.h264 文件的下载地址为:2015-09-17 18:05:20.h264
坚持原创思维分享,您的支持将鼓励我继续创作!
赏
- 本文作者: Minmin.Sun
- 本文链接: https://depthlove.github.io/2015/09/24/install-ffmpeg-to-MacOSX-and-use-ffmpeg-to-transform-h264-to-mp4/
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!