ffmpeg编译支持h265 的rtmp版本

首先说一点,我在金山云的git上拉下来的完全可以编译,本地就成功编译了一个可以播放h265.flv的文件。
参考的博客是:
https://github.com/ksvc/FFmpeg/wiki/instructions
https://github.com/ksvc/FFmpeg/wiki
https://blog.csdn.net/qq_21743659/article/details/109238353
首先现在libx264和libx265
http://ftp.videolan.org/pub/videolan/x265/
ubuntu下编译ffmpeg libx264 libx265

ibx264

wget https://johnvansickle.com/ffmpeg/release-source/libx264-git.tar.xz
xz -d libx264-git.tar.xz
tar -xvf libx264-git.tar
cd ./libx264-git
./configure --prefix=xxx/libx264-build   --disable-asm
make -j 2
make install
libx265

yum install cmake
wget https://johnvansickle.com/ffmpeg/release-source/libx265-git.tar.xz
xz -d libx265-git.tar.xz
tar -xvf libx265-git.tar
cd libx265-git/source/
mkdir build
cd build/
cmake ..
make -j 2
make install
libfdk_aac

wget https://downloads.sourceforge.net/opencore-amr/fdk-aac-2.0.1.tar.gz
tar -xzvf fdk-aac-2.0.1.tar.gz
cd fdk-aac-2.0.1
./configure  --prefix=xxx/libaac-build
make -j 2
make install 

接着下载ffmpeg

$git clone https://github.com/ksvc/FFmpeg.git
$cd FFmpeg
//这一步非常重要,一定要转到这个分支上来
$git reset --hard origin/release/3.4

然后建立build.sh

#!/bin/bash
x264_inc=${PWD}/libx264/release/include
x264_lib=${PWD}/libx264/release/lib
x265_inc=${PWD}/libx265/release/include
x265_lib=${PWD}/libx265/release/lib
build_dir=${PWD}/build

export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:${x264_lib}/pkgconfig:${x265_lib}/pkgconfig
./configure --prefix=$build_dir \
            --enable-shared \
            --enable-static \
             --extra-cflags="-fno-stack-check  -I${x264_inc} -I${x265_inc}" --extra-ldflags="-L${x264_lib} -L${x265_lib}" \
            --enable-pic \
            --disable-encoders \
            --enable-encoder=aac \
            --enable-encoder=libx264 --enable-gpl --enable-libx264 --enable-encoder=libx265  --enable-libx265 \
            --disable-decoders \
            --enable-decoder=aac --enable-decoder=h264 --enable-decoder=hevc  \
            --disable-demuxers --enable-demuxer=aac --enable-demuxer=mov --enable-demuxer=mpegts \
            --enable-demuxer=flv --enable-demuxer=h264 --enable-demuxer=hevc --enable-demuxer=hls  \
            --disable-muxers --enable-muxer=h264  --enable-muxer=flv --enable-muxer=f4v  --enable-muxer=mp4 \
            --disable-doc

编译成功后就可以看了:

将h264,265,ffmpeg的库全部拷贝到一个文件下lib下,然后export一下。
这一步非常重要,因为很多人本地有h265的库,如果和编译的时候的不兼容,就会导致播放不出来,所以很多童鞋就老是问,为什么我的编译的用不了
为什么还是用不了,如果你的步骤跟上面一抹一眼,那么很有可能是h264,h265库的问题
export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/home//build/lib
./ffmpeg -re -i /home/zc/Desktop/E/h264.flv -vcodec libx265 -acodec copy  -f flv rtmp://127.0.0.1:1935/live/265
./ffplay /home/zc/Desktop/E/h265.flv 

最终效果:
在这里插入图片描述

但是这个版本太老了啊,是3.4,不支持英伟达最新sdk编解码,所以我还要动手编译一个4.x版本的
这里有一个现成的:
里面有h264和h265下载地址
https://github.com/runner365/srt_encoder/wiki/How-to-compile-cn
如果版本还是不可以,那么,这里有一个4.1版本的:
https://blog.csdn.net/tidehc/article/details/107315284
如果还是不可以在ffmpeg上下载一个最新版本的(或者你需要的版本)ffmpeg,然后下载:
https://github.com/runner365/ffmpeg_rtmp_h265.git
将其中的三个文件替换到你最新版本ffmpeg中的libavformat中
文件替换后kux这个demuxer是没有的,我们需要将其在编译的时候屏蔽掉,具体如下:

inc_dir=${PWD}/nvheaders/include
nvenc_inc=${PWD}/Nvidia/Video_Codec_SDK_9.1.23/Samples/NvCodec/NvEncoder
nvdec_inc=${PWD}/Nvidia/Video_Codec_SDK_9.1.23/Samples/NvCodec/NvDecoder
x264_inc=${PWD}/libx264/release/include
x264_lib=${PWD}/libx264/release/lib
x265_inc=${PWD}/libx265/release/include
x265_lib=${PWD}/libx265/release/lib
build_dir=${PWD}/build
#lib_dir=/usr/local/cuda/lib64/
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:${x264_lib}/pkgconfig:${x265_lib}/pkgconfig

./configure --prefix=$build_dir \
            --enable-shared \
            --enable-static \
            --extra-cflags="-fPIC -m64 -I${inc_dir} -I${nvenc_inc} -I${nvdec_inc} -I${x264_inc} -I${x265_inc}" \
            --extra-ldflags="-L${x264_lib} -L${x265_lib}" \
            --enable-encoder=libx264  --enable-libx264 \
            --enable-encoder=libx265  --enable-libx265 \
            --enable-nvenc \
            --enable-decoder=h264 --enable-libx264 \
            --enable-decoder=hevc --enable-libx265 \
            --enable-nvdec \
            --disable-doc \
            --enable-gpl \
            --enable-pic \
            --disable-demuxer=kux \

如上述把所有解码、编码,复用,解复用的先全部屏蔽掉,然后再增加自己需要的那些。
开关具体的可以通过./configure -h开看

然后就可以播放了

如果出现错误:

ERROR: x265 not found using pkg-config

找到x265.pc文件,修改路径为当前路径就可以了。

prefix=/***/libffmpeg/libx265/release
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: x265
Description: H.265/HEVC video encoder
Version: 3.2
Libs: -L${libdir} -lx265
Libs.private: -lstdc++ -lm -lgcc_s -lgcc -lgcc_s -lgcc -lrt -ldl
Cflags: -I${includedir}

以下暂时有问题

centos 7下编译支持h.265的rtmp推流的ffmpeg
https://blog.csdn.net/tidehc/article/details/107315284
https://github.com/runner365/srt_encoder/wiki/How-to-compile-cn
最后打开ffmpeg/build就可以看到安装的库了
https://www.likecs.com/show-124236.html
Ubuntu18.04下编译libx264、libx265、libfdk_aac和ffmpeg

https://github.com/numberwolf/FFmpeg-QuQi-H265-FLV-RTMP
ffmpeg4.1版本

如果编译英伟达的硬解码,需要下载:
NVIDIA headers

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
make
sudo make install

以及英伟达 Video_Codec_SDK_9.1.23
将上述两个文件放在ffmpeg目录下,然后新建:

inc_dir=${PWD}/nv-codec-headers/include/ffnvcodec
nvenc_inc=${PWD}/Nvidia/Video_Codec_SDK_9.1.23/Samples/NvCodec/NvEncoder
nvdec_inc=${PWD}/Nvidia/Video_Codec_SDK_9.1.23/Samples/NvCodec/NvDecoder
x264_inc=${PWD}/libx264/release/include
x264_lib=${PWD}/libx264/release/lib
x265_inc=${PWD}/libx265/release/include
x265_lib=${PWD}/libx265/release/lib
build_dir=${PWD}/build
#lib_dir=/usr/local/cuda/lib64/
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:${x264_lib}/pkgconfig
./configure --prefix=$build_dir --enable-debug=3 --extra-cflags="-fPIC -m64 -I${inc_dir} -I${nvdec_inc} -I${nvenc_inc}  -I${x264_inc} -I${x265_inc}" --extra-ldflags="-L${x264_lib} -L${x265_lib}"  --enable-gpl --enable-nvenc --enable-nvdec --enable-libx264 --enable-libx265 --enable-encoder=libx264 --disable-vdpau --enable-encoder=mjpeg   --enable-shared  --enable-pic --disable-stripping

记得将264265也放在ffmpeg 目录下;

./build.sh
make -j10
make install

上述文档中有下载264 265地址

其实所有都参考:https://www.pianshen.com/article/46201096227/

smart rtmpd 服务器支持 rtmp 的 hevc(h265) 视频流,我们具体 smart rtmpd 的信息简介如下,毕竟 hevc(h265) 不是 adobe 的标准,所以市面上缺少这么一款工具,下面的流程,就会带你怎么制作 ffmpeg ,让其支持自定制的 hevc(h265) 视频流
原文地址:http://www.qiyicc.com/bbs001/forum.php?mod=viewthread&tid=989&extra=page%3D1
一分钟快速搭建 rtmpd 服务器: https://blog.csdn.net/freeabc/article/details/102880984
软件下载地址: http://www.qiyicc.com/download/rtmpd.rar
github 地址:https://github.com/superconvert/smart_rtmpd

在这里插入图片描述

  1. Build x265
    $wget https://bitbucket.org/multicorew … s/x265_3.2.1.tar.gz
    $tar zxvf x265_3.2.1.tar.gz
    $cd x265_3.2.1/build/linux
    $./make-Makefiles.bash
    $make && make install

  2. Build ffmpeg

2.1 Prepare souce code
$git clone https://github.com/ksvc/FFmpeg.git
$cd FFmpeg
$git reset --hard origin/release/3.4

2.2 Configure
./configure --enable-static --enable-pic
–disable-encoders --enable-encoder=aac --enable-encoder=libx264 --enable-gpl --enable-libx264 --enable-encoder=libx265 \

   --enable-libx265 --disable-decoders --enable-decoder=aac --enable-decoder=h264 --enable-decoder=hevc  --disable-demuxers \

   --enable-demuxer=aac --enable-demuxer=mov --enable-demuxer=mpegts --enable-demuxer=flv --enable-demuxer=h264 \

   --enable-demuxer=hevc --enable-demuxer=hls  --disable-muxers --enable-muxer=h264  --enable-muxer=flv --enable-muxer=f4v  \

   --enable-muxer=mp4 --disable-doc --extra-cflags="-fno-stack-check"

2.3 Build
$make -j4

2.4 Ttry
#push stream
$./ffmpeg -re -i 1.mp4 -c:a copy -c:v libx265 -f flv rtmp://192.168.1.1/live/hevc

#pull stream
$./ffplay rtmp://192.168.1.1/live/hevc

我基本就是按照上述编译,成功编译了一个。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值