|
从本篇文章开始,我将开始写一些自己学习音视频方面的学习笔记,记录自己的成长过程! 我们先来了解一下ffmpeg是什么吧?最官方的解释和介绍,当然是去ffmpeg官方看,ffmpeg官方地址: https://www.ffmpeg.org/about.html
这里大概的说一下: FFmpeg是领先的多媒体框架,能够解码,编码, 转码,mux,demux,流,过滤和播放人类和机器创建的几乎所有内容。它支持最模糊的古代格式,直至最前沿。无论它们是由某些标准委员会,社区还是公司设计的。它还具有高度的可移植性:FFmpeg可以在各种构建环境,机器体系结构和配置下,跨Linux,Mac OS X,Microsoft Windows,BSD,Solaris等编译,运行并通过我们的测试基础架构 FATE。 它包含可以由应用程序使用的libavcodec,libavutil,libavformat,libavfilter,libavdevice,libswscale和libswresample。与ffmpeg,ffplay和ffprobe一样,最终用户也可以使用它们进行转码和播放。 当然如果这些还不够你作为知识认知上来了解一个东西的话,可以再多看几篇文章,这里我就不再造轮子了,咋们接下来开始来搭建windows和Linux开发环境,正所谓:工欲善其事 必先利其器。可能搭建环境的时候,会遇到一些坑。 一、windows环境搭建: 其实这个礼拜我当时去搭建环境的时候,去网上找了一些博客资料,但是发现之前的网站打不开了,而且现在官网变化有点大,你可能看以前别的文章资料参考,按照操作来,去官网下载安装包,但是其实根本就不是那回事,如果没有仔细观察的话,现在官网下载windows包是这样的:
1、环境搭建步骤; (1)从官网下载安装包:
(2)开始解压安装包和文件说明: 我们把刚才下载下来的包进行解压:
解压后有四个文件:bin里面是安装的应用程序以及一些动态链接库:
doc文件里面是一些相关关于ffmpeg的html说明文档:
include里面是一些相关库的头文件:
lib里面是相关的库:
(3)开始安装: 这里我们把bin文件下的这三个应用程序拷贝到你的c盘下的Windows目录下: a、
b、
c、直接粘贴到到windows目录即可:
现在我们打开命令提示符,检查一下ffmpeg是否安装成功:
你会发现还缺乏一下动态链接,这个时候我们可以按照提示把刚才剩下的那些以“.dll”的文件拷贝到windows目录的SysWOW64目录即可:
然后我们再测试一下ffmpeg的版本是多少: ffmpeg -version+ V' T; x- r4 X6 m R/ B
注:估计这里可能有些人会遇到问题,还是不能查看,我这里后面还是采用了4.2.1的版本。 没错,如果你到了这里可以看到我上面一样的打印,那么恭喜,你的windows环境就搭建成功了 二、linux环境搭建: 这里我没有采用直接用命令的方式来下载ffmpeg,这里我参考了官网的源码安装步骤,可能会比较慢: https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu( s0 A) Z3 O0 p ^1、首先在home目录下创建需要的目录(注这里最好和我一样的操作): txp@txp-virtual-machine:~$ mdkir ffmpeg_sources ffmpeg_build bin2、下载所要的依赖环境配置: 在下载之前,你最好把自己的ubuntu镜像服务器换成国内的比较好,速度会快很多(这里我用的是ubuntu16.04);同时在之前最好更新一下: sudo apt install update: F* E8 L% \: c$ ?. V然后直接进行下面操作: sudo apt-get update -qq && sudo apt-get -y install \+ Z" g5 B7 q- x1 I# Z% i6 tautoconf \: H5 S/ n2 @2 g' S automake \' e+ |( W1 r3 A, d$ m build-essential \' L4 W- I2 m4 h# x* W i" ` cmake \ git-core \ libass-dev \3 A' g4 b. I0 l libfreetype6-dev \$ n1 V7 H/ x( G! P libgnutls28-dev \ libsdl2-dev \5 N& Y: O9 a) O* J. I- ] libtool \ libva-dev \ libvdpau-dev \ libvorbis-dev \, h# r) e c" Z# {, O w libxcb1-dev \0 r4 N( j+ g8 i- K; f4 \' h% D' { libxcb-shm0-dev \, @) M( R6 v. b+ J. l libxcb-xfixes0-dev \ pkg-config \ texinfo \0 Z1 f- |9 M, B# D. I- g2 [( e1 r wget \ yasm \0 o% ~+ `4 v) v$ b5 V zlib1g-dev 3、源码安装一些所需的库: 可以把这里下载的库统一放在我们刚才建立的ffmpeg目录下,方便管理! a、NASM cd ~/ffmpeg_sources && \wget https://www.nasm.us/pub/nasm/rel ... asm-2.14.02.tar.bz2 && \ tar xjvf nasm-2.14.02.tar.bz2 && \# G7 U( J0 b) g) `: ~7 B cd nasm-2.14.02 && \) \3 x3 e- r4 w- ^ ./autogen.sh && \6 e$ {6 G2 B M! \: a PATH="$HOME/bin PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && \make && \ make install b、Yasm cd ~/ffmpeg_sources && \wget -O yasm-1.3.0.tar.gz https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz && \1 z2 g7 V+ N& A# I9 T tar xzvf yasm-1.3.0.tar.gz && \ cd yasm-1.3.0 && \* W- C1 C i7 \! i) k& C- s ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && \ `) f5 F4 i/ Z, z2 Q2 p$ k# [ make && \ make install1 C$ o: }1 h+ S. l0 {) z8 I c、libx264 cd ~/ffmpeg_sources && \git -C x264 pull 2> /dev/null || git clone --depth 1 https://code.videolan.org/videolan/x264.git && \ cd x264 && \ PATH="$HOME/bin PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --enable-pic && \% l5 l$ h0 V; D; ]2 ?9 zPATH="$HOME/bin PATH" make && \make install) m T* v7 _$ ^$ ^( { d、libx265 sudo apt-get install libnuma-dev && \cd ~/ffmpeg_sources && \ git -C x265_git pull 2> /dev/null || git clone https://bitbucket.org/multicoreware/x265_git && \ cd x265_git/build/linux && \) x0 Z9 g d7 b PATH="$HOME/bin PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off ../../source && \% V- J3 Z) ^6 PPATH="$HOME/bin PATH" make && \+ U m. c, J: [, q, Fmake install e、libvpx cd ~/ffmpeg_sources && \( ]+ M, |: g7 O( y* |" R8 E4 V) Wgit -C libvpx pull 2> /dev/null || git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git && \' Y# s& ^/ B' r cd libvpx && \ PATH="$HOME/bin PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm && \# f" i" P6 O4 b" a7 y( c. ^8 }8 tPATH="$HOME/bin PATH" make && \. G! a1 m( A, b+ ?6 l* gmake install z* y; F; X9 D7 Q7 P9 n4 K% e f、libfdk-aac cd ~/ffmpeg_sources && \git -C fdk-aac pull 2> /dev/null || git clone --depth 1 https://github.com/mstorsjo/fdk-aac && \" j* Z! P# i! W7 Q cd fdk-aac && \ autoreconf -fiv && \ ./configure --prefix="$HOME/ffmpeg_build" --disable-shared && \ make && \/ B6 s' \+ Z3 X7 u# ~ make install g、libmp3lame cd ~/ffmpeg_sources && \* F6 a. @4 f1 q6 K- E* Hwget -O lame-3.100.tar.gz https://downloads.sourceforge.ne ... 0/lame-3.100.tar.gz && \3 p B9 z6 m0 R) v$ B tar xzvf lame-3.100.tar.gz && \ cd lame-3.100 && \. U$ r6 [' a. E1 t g S- q PATH="$HOME/bin PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm && \, e3 D. p- q. h- D( APATH="$HOME/bin PATH" make && \make install h、libopus cd ~/ffmpeg_sources && \git -C opus pull 2> /dev/null || git clone --depth 1 https://github.com/xiph/opus.git && \ cd opus && \# H) R' E" _0 P T4 u- J" W3 v8 w ./autogen.sh && \5 Z# D/ b6 ^4 I$ t ./configure --prefix="$HOME/ffmpeg_build" --disable-shared && \/ H( X. V, p- s make && \/ b/ j8 ?$ P1 W- H1 w! T: d7 `; n make install i、libaom cd ~/ffmpeg_sources && \git -C aom pull 2> /dev/null || git clone --depth 1 https://aomedia.googlesource.com/aom && \ mkdir -p aom_build && \ cd aom_build && \ PATH="$HOME/bin PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off -DENABLE_NASM=on ../aom && \PATH="$HOME/bin:$PATH" make && \ make install 注:这个暂时国内下载不了,服务器在外国。。。。。 o、libsvtav1 cd ~/ffmpeg_sources && \' U, U' C/ |! D, b. k$ s9 N7 Jgit -C SVT-AV1 pull 2> /dev/null || git clone https://github.com/AOMediaCodec/SVT-AV1.git && \ mkdir -p SVT-AV1/build && \ cd SVT-AV1/build && \7 c; |; m2 J1 b+ Z PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DCMAKE_BUILD_TYPE=Release -DBUILD_DEC=OFF -DBUILD_SHARED_LIBS=OFF .. && \ PATH="$HOME/bin:$PATH" make && \3 y" C4 {. I2 y p make install 最终我们可以下载ffmpeg目录看到下载的库文件;
4、现在我们可以开始下载ffmpeg安装包并解压: cd ~/ffmpeg_sources && \2 x0 ]/ I& O/ r/ _wget -O ffmpeg-snapshot.tar.bz2 https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 && \ tar xjvf ffmpeg-snapshot.tar.bz2 && \ \- ? e5 S- P) W V3 K cd ffmpeg && \ PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \ --prefix="$HOME/ffmpeg_build" \. b& ]# T0 R# z* w! _ --pkg-config-flags="--static" \/ ~' F( k( A* Z0 k4 K --extra-cflags="-I$HOME/ffmpeg_build/include" \ --extra-ldflags="-L$HOME/ffmpeg_build/lib" \ --extra-libs="-lpthread -lm" \2 l1 m6 n) \6 f/ Z --bindir="$HOME/bin" \& Y" |/ F. x0 M1 C }) ^6 d --enable-gpl \ --enable-gnutls \6 ~+ t- @4 x, j C --enable-libaom \, g8 j" `4 U" x) ^0 F: q: F% e6 p --enable-libass \ --enable-libfdk-aac \* r' b, _' O& y: k+ U --enable-libfreetype \ --enable-libmp3lame \ --enable-libopus \ --enable-libsvtav1 \ --enable-libvorbis \: G' n& X; B' G* R --enable-libvpx \ --enable-libx264 \4 X6 D& G4 u+ D f5 a5 i1 Y --enable-libx265 \ --enable-nonfree && \( Q7 E* {: ]+ a+ u* N7 T. Y% P/ p& T PATH="$HOME/bin:$PATH" make && \6 b# l# [1 N; ]4 ] make install && \ hash -r
注意:这里一定是在之前的那些库安装之后再操作这个步骤,不然有些库找不到,导致你编译报错,而且这里编译的时间蛮久的,大概十几分钟左右! 这里环境就搭建完了,下面我来测试一下环境是否搭建成功。记得我们得重新打开一个终端来操作,不然会显示操作失败:
所以重新打开一个终端:
最后我们来播放一个视频看看,是否真的有效果: ffplay rtmp://202.69.69.180:443/webcast/bshdlive-pc5 @, o* a1 T: g效果展示:
当然你也可以播放你本地文件里面的视频,这里我就不演示了,很简单! 三、总结: 上面的环境搭建可能费点时间,不过还是不建议本地安装ffmpeg。 |
出现了好多的 “ ” |
微信公众号
手机版