SRS RTMP h265支持
騰訊課堂 《FFmpeg/WebRTC/RTMP音視頻流媒體高級開發(fā)》?https://ke.qq.com/course/468797?tuin=137bb271
1 修改ffmpeg版本
往srs服務(wù)推流這個步驟,用ffmpeg可以直接實現(xiàn),用命令或者自己寫代碼封裝相關(guān)接口,這個網(wǎng)上也有許多的例子,這里有個問題就是ffmpeg是不支持封裝h265為flv推送rtmp的,所以需要修改相關(guān)的源碼參考網(wǎng)址
https://github.com/runner365/ffmpeg_rtmp_h265
可以在我們現(xiàn)有的版本,比如4.2版本上修改添加支持。
在原有編譯版本上添加支持,我們主要修改, 如果使用我們的代碼,則直接將 flv/flvdec.c/flvenc.c覆蓋到ffmpeg-4.2.1/libavformat
和FFmpeg4.2的區(qū)別
flv.h
libavformat\flvdec.c flvenc.c
主要是
相關(guān)的判斷
完全重新編譯
編譯步驟可以參考
https://github.com/runner365/srt_encoder/wiki/How-to-compile-cn
2 使用srs h265版本
http://ossrs.net/lts/zh-cn/faq, 由于265主要在GB中使用,所以265分支也遷移到了?srs-gb28181
官方文檔:?http://ossrs.net/lts/zh-cn/docs/v4/doc/hevc/#%E5%A6%82%E4%BD%95rtmp%E6%8E%A8%E6%8B%89%E6%B5%81hevc%E7%A4%BA%E4%BE%8B
編譯
https://github.com/ossrs/srs-gb28181
git?clone??https://github.com/ossrs/srs-gb28181.git cd?srs-gb28181 git?checkout?feature/h265 cd?trunk ./configure
運行配置文件:
./objs/srs?-c?./conf/rtmp.conf
3 測試rtmp推/拉流hevc示例
這里一定要注意,重新編譯ffmpeg后,在執(zhí)行ffmpeg命令時一定要確認(rèn)調(diào)用的ffmpeg .so或.a是新編譯的,可以通過ldd ffmpeg確定鏈接的庫文件。
在完成支持hevc in flv的定制化ffmpeg編譯后,rtmp推流hevc視頻編碼,如下:
ffmpeg?-re?-i?source.flv?-c:v?libx265?-c:a?aac?-f?flv?rtmp://127.0.0.1/live/livestream
rtmp拉流hevc視頻編碼格式,如下:
ffmpeg?-i?rtmp://127.0.0.1/live/livestream?-f?flv?-y?livestream.flv
播放:
ffplay?rtmp://127.0.0.1/live/livestream
如果要播放rtmp推流H265, 然后HLS拉流,則使用配置文件:
./objs/srs?-c?./conf/hls.conf
ffplay?http://127.0.0.1:8080/live/livestream.m3u8