H.265+SRS6.0服务器部署
H.265+SRS6.0服务器部署
SRS从6.0开始,全面支持H.265,包括RTMP、FLV、HLS、GB28181、WebRTC等等。具体的服务器部署及H.265推流步骤如下。
1. SRS
要支持h265,需要确保SRS的版本为6.0.4+
git clone https://github.com/ossrs/srs.git
./configure --h265=on
make
编译完成后即可启动SRS
# 启动
./objs/srs -c conf/rtmp.conf
# 查看日志
tail -n 30 -f ./objs/srs.log
# 查看服务器状态
./etc/init.d/srs status
2. ffmpeg
rtmp推流封装格式一般为flv,flv原生不支持h265。但是可以通过给ffmpeg打补丁来实现rtmp的h265推流,具体操作如下。
libx264
编译编码库libx264
git clone https://code.videolan.org/videolan/x264.git
cd x264
mkdir build
./configure --prefix=$(pwd)/build --disable-asm --disable-cli --disable-shared --enable-static
make -j10
make install
libx265
编译编码库libx265
git clone https://bitbucket.org/multicoreware/x265_git.git
cd x265_git/build/linux
mkdir build
cmake -DCMAKE_INSTALL_PREFIX=$(pwd)/build -DENABLE_SHARED=OFF ../../source
make -j10
make install
设置环境变量
将libx264和libx265库的路径设置到环境变量中,以在编译ffmpeg时使用。根据自己的x264和x265的安装路径修改PKG_CONFIG_PATH。
export PKG_CONFIG_PATH=~/x264/build/lib/pkgconfig:~/x265_git/build/linux/build/lib/pkgconfig
ffmpeg补丁
为ffmpeg打补丁,以使rtmp/flv支持h.265
git clone -b 5.1 https://github.com/runner365/ffmpeg_rtmp_h265.git
cd ffmpeg_rtmp_h265
cp flv.h ~/FFmpeg/libavformat/
cp flv*.c ~/FFmpeg/libavformat/
ffmpeg编译
git clone https://github.com/FFmpeg/FFmpeg.git
cd FFmpeg
git checkout n5.1.2
mkdir build
./configure \
--prefix=$(pwd)/build \
--enable-gpl --enable-nonfree --enable-pthreads --extra-libs=-lpthread \
--disable-asm --disable-x86asm --disable-inline-asm \
--enable-decoder=aac --enable-decoder=aac_fixed --enable-decoder=aac_latm --enable-encoder=aac \
--enable-libx264 --enable-libx265 \
--pkg-config-flags='--static'
make -j10
make install
推流
./ffmpeg -stream_loop -1 -re -i test.flv -c:a copy -c:v libx265 -f flv rtmp://localhost:1935/live/test
测试
进入SRS的控制台
点击预览播放直播流
结尾
播放端对于H.265的支持还不是很完善。比如rtmp和webrtc原生都不支持H.265编码。所以要考虑播放端的H.265的兼容性问题。如果想要在拉流端播放视频流,可能需要借助第三方库或自行开发定制解决方案,以实现播放端的 H.265 解码。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律