范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

完美解决Linux环境编译ffmpeg库

  背景说明
  项目功能实现需要在Linux下编译出可用的FFmpeg库。FFmpeg在编译过程中是需要链接其它三方库的,比如x265 x265等,否则可能会造成功能不全(如程序接口返回找不到H264编码器错误),影响使用。编译这种三方库其实理论简单,但是细节磨人,有时候没设置好就是会有些莫名其妙的问题。我这里也参考了如零声学院分享的文档,结合自己情况总结记录了份编译说明,亲测有效,使用稳定。甚至可以按步骤无脑复制shell执行,编译一路绿灯,快速得到完美的FFmpeg库。编译
  整体思路就是先把依赖的库如x264、x265等先配置好,这些库不是必须的,但是保证库功能完整性最好都配置好。接下来就是下载FFmpeg源码,和依赖库进行配置然后进行编译,编译完成库即可用了。当前环境是 ubuntu18 desktop + ffmpeg 4.2.1注意
  (1)所有操作以我的环境为准,但可以完全按以下步骤依次复制命令执行,因为我是在home目录是通用的,建议按照此方法。如果想使用自己的路径要注意修改命令参数,防止路径不同造成的错误
  (2)部分库可能需要连接github,最好选择网络较好的机器上编译
  (3)整个安装过程,基本就是复制命令执行,等待执行结束…循环。测试多台机器编译过程中均无报错,正常情况预计用时15分钟以内,即可完成全部编译工作一、创建目录
  在home目录下创建
  ffmpeg_sources:用于下载源文件
  ffmpeg_build: 存储编译后的库文件
  bin:存储二进制文件(ffmpeg,ffplay,ffprobe,X264,X265等)
  命令:cd ~  mkdir ffmpeg_sources  ffmpeg_build bin二、安装依赖
  更新软件信息sudo apt-get update
  安装需要的组件 sudo apt-get -y install    autoconf    automake    build-essential    cmake    git-core    libass-dev    libfreetype6-dev    libsdl2-dev    libtool    libva-dev    libvdpau-dev    libvorbis-dev    libxcb1-dev    libxcb-shm0-dev    libxcb-xfixes0-dev    pkg-config    texinfo    wget    zlib1g-dev
  C++音视频开发学习资料 :点击领取 音视频开发(资料文档+视频教程+面试题)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)
  三、安装三方库
  安装一些最常见的第三方库,默认均以源码方式安装。安装库所需的命令如下
  NASM
  部分库使用到汇编程序。
  使用源码进行安装 cd ~/ffmpeg_sources &&  wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2 &&  tar xjvf nasm-2.14.02.tar.bz2 &&  cd nasm-2.14.02 &&  ./autogen.sh &&  PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" &&  make &&  make install
  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 &&  tar xzvf yasm-1.3.0.tar.gz &&  cd yasm-1.3.0 &&  ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" &&  make &&  make install
  libx264
  H.264视频编码器。更多信息和使用范例参考H.264 Encoding Guide
  要求编译ffmpeg时配置:–enable-gpl --enable-libx264.
  使用源码进行编译:cd ~/ffmpeg_sources &&  git -C x264 pull 2> /dev/null || git clone --depth 1 https://gitee.com/mirrors_addons/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 &&  PATH="$HOME/bin:$PATH" make &&  make install
  libx265
  H.265/HEVC 视频编码器, 更多信息和使用范例参考H.265 Encoding Guide。
  要求编译ffmpeg时配置:–enable-gpl --enable-libx265.
  使用源码进行编译: sudo apt-get install mercurial libnuma-dev &&  cd ~/ffmpeg_sources &&  if cd x265 2> /dev/null; then git pull && cd ..; else git clone https://gitee.com/mirrors_videolan/x265.git; fi &&  cd x265/build/linux &&  PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off ../../source &&  PATH="$HOME/bin:$PATH" make &&  make install
  libvpx
  VP8/VP9视频编解码器。 更多信息和使用范例参考VP9 Video Encoding Guide 。
  要求编译ffmpeg时配置: --enable-libvpx.
  使用源码进行编译:cd ~/ffmpeg_sources &&  git -C libvpx pull 2> /dev/null || git clone --depth 1 https://github.com/webmproject/libvpx.git &&  cd libvpx &&  PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm --enable-pic &&  PATH="$HOME/bin:$PATH" make &&  make install
  libfdk-aac
  AAC音频编码器. 更多信息和使用范例参考AAC Audio Encoding Guide。
  要求编译ffmpeg时配置:–enable-libfdk-aac ( 如果你已经配置了 --enable-gpl则需要加上–enable-nonfree).
  使用源码进行编译:cd ~/ffmpeg_sources &&  git -C fdk-aac pull 2> /dev/null || git clone --depth 1 https://github.com/mstorsjo/fdk-aac &&  cd fdk-aac &&  autoreconf -fiv &&  ./configure CFLAGS=-fPIC --prefix="$HOME/ffmpeg_build"   &&  make &&  make install
  libmp3lame
  MP3音频编码器.
  要求编译ffmpeg时配置:–enable-libmp3lame.
  使用源码进行编译: cd ~/ffmpeg_sources &&  git clone  --depth 1 https://gitee.com/hqiu/lame.git &&  cd lame &&  PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"  --enable-nasm --with-pic &&  PATH="$HOME/bin:$PATH" make &&  make install
  libopus
  Opus音频编解码器.
  要求编译ffmpeg时配置:–enable-libopus.
  使用源码进行编译: cd ~/ffmpeg_sources &&  git -C opus pull 2> /dev/null || git clone --depth 1 https://github.com/xiph/opus.git &&  cd opus &&  ./autogen.sh &&  ./configure --prefix="$HOME/ffmpeg_build"  -with-pic&&  make &&  make install四、安装FFmpeg
  到这里常见的三方库默认已经都装好了,唠叨下,上面的库可以不全安装,但是为了库的功能全面性,还是别偷懒,毕竟编译好,可以一直用。下面下载FFmpeg源码和上面的库联合编译,此过程相对用时久一些,耐心等待 cd ~/ffmpeg_sources &&  wget -O ffmpeg-4.2.1.tar.bz2 https://ffmpeg.org/releases/ffmpeg-4.2.1.tar.bz2 &&  tar xjvf ffmpeg-4.2.1.tar.bz2 &&  cd ffmpeg-4.2.1 &&  PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" CFLAGS="-O3 -fPIC" ./configure    --prefix="$HOME/ffmpeg_build"    --pkg-config-flags="--static"    --extra-cflags="-I$HOME/ffmpeg_build/include"    --extra-ldflags="-L$HOME/ffmpeg_build/lib"    --extra-libs="-lpthread -lm"    --bindir="$HOME/bin"    --enable-gpl    --enable-libass    --enable-libfdk-aac    --enable-libfreetype    --enable-libmp3lame    --enable-libopus    --enable-libvorbis    --enable-libvpx    --enable-libx264    --enable-libx265    --enable-pic    --enable-shared      --enable-nonfree &&  PATH="$HOME/bin:$PATH" make &&  make install &&  hash -r五、安装完成
  到此,整个编译就完成了。可以去看下最初创建的那三个文件夹,我们最感兴趣的是ffmpeg_build,如下图。
  include : 里面是各种头文件,用来加入到业务项目中引用
  lib : 便是心心念的库,里面有静态的还有动态的,按自己需求使用
  还有像ffmpeg ffplay ffprobe等可执行程序,在以上三个文件夹内可以找到,具体位置不在说明。要说明一点是,这里只是编译出来纯粹的库文件,可以保证库的质量,但具体的使用需自行配置。

不要再责怪孩子总开小差了,养成孩子习惯的人可能是你自己哪个瞬间让你突然觉得没文化好可怕孩子的专注力是需要培养的,并且是从婴儿时期就开始了。从他们能够自己开始摆弄玩具开始,就开始了专注力培养的进程。但是我们会发现,即使是在孩子们最爱的游提醒血糖过高的人,身边这4物,别不舍得吃生活水平提高了,糖尿病也出现了,而且发病率也不断提高。因此,糖尿病被称为富贵病。以目前的医疗水平,糖尿病一旦患上是无法彻底治愈的,只能通过终生服药来控制体内的血糖水平。只要血糖维持NOAA分享引人注目的卫星图像地球看起来像带着怪异的笑容你是否想看到我们的星球看起来像一个巨大的笑脸表情符号?美国国家海洋和大气管理局(NOAA)的GOESWest卫星将为你提供服务。NOAA分享了一张卫星图像的GIF,使地球看起来像带官方表态!俄罗斯央行俄企必须在5月5日前启动从外国股市退市的程序,俄罗斯RTS指数涨0。62每经编辑张锦河据财联社20日消息,俄罗斯央行周二在官网发布公告称,俄罗斯证券发行人必须在5月5日前启动境外存托凭证的退市程序。普京签署退市令据央视新闻,当地时间16日,为应对西方制手机市场观察不爱换手机的背后产业革新需协同发力来源人民网原创稿点击浏览更多资讯近日,年轻人为什么不爱换手机的话题引发网友热议。事实上,不只是年轻人,消费者换机频率近年来整体呈下降趋势。从手机厂商的出货量看,2022年2月份,国体检查出结节的人,医生尽量少碰5类发物,希望你能放心上爱乐养生指南随着近几年来,社会的快速发展,人们生活水平在不断地提高,人们在预防疾病方面也是越来越重视,所以也让越来越多的人,养成了定期体检的好习惯。但是很多人却在体检的过程当中,查白米饭是升血糖加速剂?若想远离糖尿病,这5种食物尽量别吃最近有很多人问我关于糖尿病的饮食问题,能不能吃面条大米等等,今天就好好跟大家聊一聊,糖尿病的饮食有多重要,我们平时要注意什么,饮食上有什么食物是需要忌口的。大米饭是糖尿病的加速剂吗CBA已战至终章,预测今年夏天中国男篮大名单CBA决战在即,士气如虹的辽宁对阵残阵广厦,大部分球迷对于结果心里已经有了自己的答案,惟愿球员保持健康。季后赛可以说是球员的试金石,那么今年夏天哪些球员能披上红色战袍为国出征呢?首实体店转型势在必行实体店越来越难了?网络上有个很火的话题实体店是不是越来越难赚钱了?其中有个人的回答,引起了大部分人的共情。他说,他父母是在小城做生意的,从父母那里了解到今年小城的所有实体店,从服装半个中国不能发货电商深陷倒春寒最近电商行业的很多商家,可以说是痛苦万分。度过春节开始复工,流量也已经慢慢起来,原本准备好了要大干一场,结果疫情突然来袭。封城加上对快递的管控,一夜回到解放前。3月份以来,随着国内中国知网到底和清华大学有没有关系?接昨日话题,今天我们一起来探索中国知网是如何走到今天的。中国知网的归属争议。昨天的话题对于中国知网到底是清华的还是外国法人独资的,大家有争论。今天,我就从两个方面探究知网归属。一根
繁荣的SaaS生态催生企业版AppStore,Lumos首轮拿了3000万美金移动互联网时代,苹果的AppStore为全球的开发者和用户带来了巨大的价值,作为C端用户我们更能直接感受到这些产品给我们生活带来的便利,而AppStore作为平台方也在安全隐私保护顶级待遇!勇士老板拉科布赛后亲自给普尔送上椰子汁直播吧5月10日讯今日西部半决赛G4,勇士击败灰熊,总比分3比1领先。赛后采访时发生有趣一幕,当普尔正在回答问题时,勇士老板拉科布亲自拿着一个椰子送至他手中。普尔一脸惊喜连连道谢。红霉素软膏,在眼部涂两下,会出现什么变化?建议了解一下红霉素软膏是临床上非常常见的外用药物,作为抗生素类的药物,红霉素软膏能够有效治疗脓疱疮,也可治疗化脓性皮肤病,溃疡面感染和小面积烧伤以及寻常痤疮等病变,红霉素软膏的应用非常广泛,凭金蝶发布HRSaaS星瀚人力云神策数据获2亿美元D轮融资周周侃文牛小侃立夏之后,又是一番新气象。金蝶创始人徐少春开启了第九砸,今年砸牢笼。不知道这是不是如大家所料的呢?在国内资本市场里的一件大事就是神策数据获得了D轮2亿美元融资,还是Tige西部数据海外官网出现定价Bug,大容量硬盘白菜价IT之家5月8日消息,据网友投稿,西部数据海外官网出现了定价Bug,部分大容量机械硬盘白菜价。如上图所示,原价567美元(约3798。9元人民币)的西部数据18TB金盘只要120美为什么日本人很少得骨质疏松?看完这4个因素,可能就明白了我国老龄化越来越严重,中国60岁及以上的人口占比超过了18。我国的老年人越来越多,国家为了改变这种现状,提倡许多小家庭开始优先生育三胎计划。随着年龄的不断增长,身体各项组织器官衰老救房地产救互联网,什么时候救教育?救房地产救互联网,什么时候救教育?音频00000739作者钟灏来源米筐投资(IDmikuangtouzi)节前的政治局会议,引起了市场的热烈反响,似乎很多期待都在这次会议中看到了希鸡蛋一摇晃里面都动了还能吃吗?鸡蛋怎么保存不会坏?鸡蛋是生活中比较常见的一种食物,它含有丰富的蛋白质和微量元素等,适量食用对身体有一定好处,很多人都会经常吃鸡蛋。如果鸡蛋摇一下有晃动的感觉,这种最好不要吃了,很可能是变质了或者存在掉牙齿与老年痴呆,保护口腔卫生能降低痴呆风险,文末教6个妙招虽然你可能认为牙齿好不好,最多与胃口有关,但老年人牙齿脱落其实还与患痴呆的风险增加有关。一份研究指出,牙齿健康与老年痴呆有关每掉一颗牙,认知能力下降的风险增加1。4,患痴呆的风险增聊一聊生娃需要的费用,需要做哪些物质准备呢一般来说,一般家庭从计划到孩子出生至少需要1万元如果是剖腹产,就要多花几千到几万元。再加上一些临时开销,花两三万元生个孩子也不稀奇。这个费用包括什么?让我们来看看!首先,产前护理的哈佛大学多吃含类黄酮的食物,或能降低帕金森患者的死亡风险随着我国老龄化问题的突出,老年疾病也受到社会各界的广泛关注,其中帕金森就是一种典型的老年疾病,造成这种疾病的主要原因是因为大脑的部分区域控制运动的神经细胞退化,从而导致大脑的区域不