Ubuntu18.04下编译libx264、libx265、libfdk_aac和ffmpeg

    • 一、编译x264库
    • 二、编译fdk-aac库
    • 三、编译x265库
    • 四、编译FFmpeg源码
    • 五、设置环境变量
    • 六、测试ffmpeg命令行推流rtsp(H265、H264)成rtmp
    • 七、Download

本文主要目的为了编译出能支持推流H265成rtmp的ffmpeg。

一、编译x264库

解压last_x264.tar.bz2
执行以下命令

./configure --enable-shared --enable-static --disable-asm --prefix=/home/linux-libx264
make
make install

全部成功后会在/home/linux-libx264目录下生成libx264头文件和库文件

二、编译fdk-aac库

解压fdk-aac-2.0.1.tar.gz
执行以下命令

./configure --prefix=/home/linux-libfdk_aac
make
make install

全部成功后会在/home/linux-libfdk_aac目录下生成libfdk_aac头文件和库文件

三、编译x265库

安装cmake和ccmake:

sudo apt install cmake
sudo apt-get install cmake-curses-gui

解压x265-master.zip
执行以下命令

cd x265-master/build/linux
sh make-Makefiles.bash
make
make install

编译好的执行文件、头文件和库文件默认放在/usr/local/bin、/usr/local/include和/usr/local/lib下
把执行文件、头文件、库文件拷贝到/home/linux-libx265目录下

测试x265:进入/home/linux-libx265/bin执行命令,测试265库

cd /home/linux-libx265/bin
./x265 --input h265toh264_480x272.YUV --input-res 480x272 --fps 30 -o h265toh264_480x272.h265

x265编译参考:https://blog.csdn.net/quantum7/article/details/104040399?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-3&spm=1001.2101.3001.4242


四、编译FFmpeg源码

解压ffmpeg-4.1.3.tar.bz2
执行以下命令
注意: 为了编译出支持H265的rtmp,需要在执行编译前先进入libavformat更改flv.h、flvenc.c、flvdec.c(此三个文件主要新增了FLV支持H265相关的代码,文件下面链接有提供下载)

./configure --enable-shared --enable-static --disable-debug --prefix=/home/linux-ffmpeg --enable-gpl --enable-libx264 --extra-cflags=-I/home/linux-libx264/include --extra-ldflags=-L/home/linux-libx264/lib --enable-libx265 --extra-cflags=-I/home/linux-libx265/include --extra-ldflags=-L/home/linux-libx265/lib --enable-libfdk-aac --extra-cflags=-I/home/linux-libfdk_aac/include --extra-ldflags=-L/home/linux-libfdk_aac/lib --extra-libs=-ldl --enable-nonfree --disable-x86asm --enable-ffmpeg

编译参数说明:
–prefix:编译完成后的安装目录。
–enable-shared:要求编译出共享库。
–enable-static:要求编译出静态库。
–disable-debug:取消debug信息,不取消的话编译出来的库体积很大。
–disable-programs:取消生成cmd的程序 ffplay ffpserver等。
–enable-libx264 --extra-cflags=-I/home/linux-libx264/include --extra-ldflags=-L/home/linux-libx264/lib --extra-libs=-ldl:要求编译出带有264编解码库。
–enable-libx265 --extra-cflags=-I/home/linux-libx265/include --extra-ldflags=-L/home/linux-libx265/lib:要求编译出带有265编解码库。
–enable-libfdk-aac --extra-cflags=-I/home/linux-libfdk_aac/include --extra-ldflags=-L/home/linux-libfdk_aac/lib:要求编译出带有fdk_aac编解码库。
–extra-libs=-ldl
–enable-nonfree
–disable-x86asm
–enable-ffmpeg

注意:
当执行./configure时遇到ERROR: x265 not found using pkg-config这个错误时,先执行下:

sudo apt install pkg-config

然后继续编译ffmpeg

make
make install

全部成功后会在/home/linux-ffmpeg目录下生成ffmpeg头文件和库文件

五、设置环境变量

全部编译成功后,设置环境变量,如下

include /etc/ld.so.conf.d/*.conf
/home/linux-ffmpeg/lib/
/home/linux-libx264/lib/
/home/linux-libx265/lib/
/home/linux-libfdk_aac/lib/

把以上添加到/etc/ld.so.conf里面后保存退出,执行ldconfig

六、测试ffmpeg命令行推流rtsp(H265、H264)成rtmp

进入,执行命令
1、H265推流成RTMP

./ffmpeg -i rtsp://admin:admin@192.168.1.100:554/video -vcodec copy -acodec aac -f flv rtmp://192.168.1.110/live/stream


2、H264推流成RTMP

./ffmpeg -i rtsp://admin:admin@192.168.1.100:554/video2 -vcodec copy -acodec aac -f flv rtmp://192.168.1.110/live/stream

注意:192.168.1.100为IPC摄像头的IP地址,需要进入IPC参数配置界面把视频编码改成H265或H264编码格式。

http://www.dtmao.cc/news_show_628979.shtml

在Ubuntu18.04下编译出ffmpeg(支持推流H265成rtmp)的更多相关文章

  1. Ubuntu18.04下编译安装Guitarix 0.37.3

    准备工作 源文件下载 https://sourceforge.net/projects/guitarix/files/guitarix/ 安装依赖. 参考 https://sourceforge.ne ...

  2. VoIP应用在Ubuntu 14.04下编译FFmpeg libX264及PJSIP

    PJSIP是一个开源的SIP协议栈.它支持多种SIP的扩展功能,可说算是最目前流行的SIP协议栈之一了.  它实现了SIP.SDP.RTP.STUN.TURN和ICE.PJSIP作为基于SIP的一个多 ...

  3. Ubuntu16.04下编译安装OpenCV3.4.0(C++ & python)

    Ubuntu16.04下编译安装OpenCV3.4.0(C++ & python) 前提是已经安装了python2,python3 1)安装各种依赖库 sudo apt-get update ...

  4. ubuntu18.04下安装mysql后无法用mysqlworkbench访问

    问题描述:我在ubuntu18.04下执行以下命令安装mysql时遇到了mysqlworkbench无法连接root用户的问题.ubuntu18.04下默认安装mysql时是5.7版本的,但是5.7版 ...

  5. Ubuntu18.04下的音频录制和编辑软件Ardour及QjackCtl(jackd gui)

    Ardour 是一个Linux和OSX下的多音轨录制和数字音频编辑软件. 需要配合ALSA或者JACK总线使用. 快速入门 http://brunoruviaro.github.io/ardour4- ...

  6. Ubuntu18.04下的 Android Studio 3.1.2

    Android Studio安装 参考官网上的安装说明 # 安装依赖 :i386 lib32z1 libbz2-1.0:i386 安装openjdk (Update 2018-08-21: 这次重装U ...

  7. ubuntu18.04下挂载网络文件系统失败【学习笔记】

    作者:庄泽彬(欢迎转载,请注明作者) PC:    ubuntu18.04 说明:  之前ubuntu16.04下搭建的环境,开发板挂载网络文件系统是ok的,但是换到ubuntu18.04在启动的时候 ...

  8. Ubuntu 16.04下编译安装Apache2.4和PHP7结合

    Ubuntu 16.04下编译安装Apache2.4和PHP7结合,并安装PDOmysql扩展. 1.编译安装apache2.4.20 1 第一步: ./configure --prefix=/usr ...

  9. Ubuntu18.04下配置深度学习开发环境

    在Ubuntu18.04下配置深度学习/机器学习开发环境 1.下载并安装Anaconda 下载地址:https://www.anaconda.com/distribution/#linux 安装步骤: ...

随机推荐

  1. Java之String重点解析

    String s = new String("abc")这段代码创建了几个对象呢?s=="abc"这个判断的结果是什么?s.substring(0,2).int ...

  2. angular8 大地老师学习笔记---第六课

    export class TodolistComponent implements OnInit { public keyword:string; public todolist:any[]=[]; ...

  3. Gitlab + Jenkins 构建,发布一个基于Go的Gin测试项目

    部署Go项目简介 对于golang的发布,之前一直没有一套规范的发布流程,来看看之前发布流程: 方案一 • 开发者本地环境需要将环境变量文件改为正式环境配置 • 编译成可执行文件 • 发送给运维 • ...

  4. VS编译程序添加图标

    如图 然后编译就就生成有图标的了.

  5. javascript中如何截取字符串?

    JavaScript中截取字符串有三种方法,分别是substring(),substr(),split(). 方法1:使用substring() substring()方法用于提取字符串中介于两个指定 ...

  6. JavaScript中对象是否需要加引号?

    对象的属性名是包括空字符串在内的所有字符串. 那么问题来了,我们平时定义的对象如下,是没有引号""or''的,这样不加引号有没有错呢? 答案是,加不加分情况!但加了肯定没问题... ...

  7. Future.get(并发之从任务中产生返回值)

    import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; import java ...

  8. 自动化运维工具-Ansible之5-流程控制

    自动化运维工具-Ansible之5-流程控制 目录 自动化运维工具-Ansible之5-流程控制 playbook条件语句 单条件 多条件 多条件运算 示例 playbook循环语句 with_ite ...

  9. maven方式使用jetty

    Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境.Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布.开发人员可以将 ...

  10. TurtleBot3 Waffle (tx2版华夫)(1)笔记本上安装虚拟机、 Ubuntu 系统

    1.1虚拟机的安装 1.1.1.windows7系统建议安装14.1版本 VMware workstation 百度云链接: 链接:https://pan.baidu.com/s/1q6Lh9fMuX ...