ffmpeg编译支持h265的rtmp windown版本
一,源码包下载
1.ffmpeg下载
下载地址: https://ffmpeg.org
(1)在主页面中找到ffmpeg5.0版本点击
(2)点击下载,这里我下载的是gzip包
2.下载x264代码
下载地址: x264, the best H.264/AVC encoder - VideoLAN
可以直接下载源码包或者用git克隆
3.下载x265代码
下载地址: x265, the free H.265/HEVC encoder - VideoLAN
直接通过git下载
二,MSYS2安装(必须在c盘安装)
1.下载地址: MSYS2
2.下载完成之后点击安装,安装必须是C盘
3.然后直接下一步开始安装
4.安装完成之后先不运行,首先修改更新源为国内镜像,这样更快一点
5.打开msys2命令行:
6.然后执行下面命令配置环境:
(1)更新所有包
pacman -Syu
输入Y选择全部更新
更新完成之后再一次打开命令行执行:
pacman -Syu
(2)安装基础工具:
pacman -S base-devel
直接默认全部安装
(3)安装编译工具
pacman -S mingw-w64-x86_64-toolchain
直接默认全部安装
注意:安装完成之后把msys2安装路径下mingw64/bin添加windows环境变量,不然在
msys2中编译出来的exe文件在windows运行会找不到库。
(4)安装其它工具
pacman -S yasm
pacman -S nasm
pacman -S make
注意:不要使用msys2安装cmake工具,通过windows安装
三,安装cmake工具
1.下载地址: Download | CMake
2.现在完成之后点击安装,然后next
3.勾上同意协议然后next
4.选择把cmake路径添加到环境变量,然后next
5.修改下安装地址,然后next
6.选择install等待升级完成
7.安装完成之后我们在msys2中是找不到cmake命令的,这里我们把windows path添加到msys2中
在windows环境变量中新建一个名字为 MSYS2_PATH_TYPE的环境变量,值改为 inherit,然后重启msys2就可以在msys2中使用安装的cmake了
四,代码编译
1.编译x264
(1)把下载的代码解压到msys2家目录下,即:msys2/home/xxx/(这里xxx表示用户名)
(2)在x264代码下新建一个编译脚本build.sh,脚本内容如下:
basepath=$(cd dirname $0
;pwd)
echo ${basepath}
cd b a s e p a t h p w d . / c o n f i g u r e − − p r e f i x = {basepath} pwd ./configure --prefix= basepathpwd./configure−−prefix={basepath}/x264 --enable-static --enable-shared
–extra-ldflags=-Wl,–output-def=libx264.def
make -j8
make install
${basepath}表示的是脚本所在路径,x264-master表示源码包目录名字,这里对照实际修改
(3)打开msys2 X64终端
进入到build.sh所在路径,执行sh build.sh
等待编译完成
(4)编译完成之后在x264下会生成库和头文件
bin中存放的是动态库
include中存放的是头文件
lib中存放的是静态库,给后面ffmpeg链接使用
假如我们需要使用动态库的话,还缺少一个.lib文件
.lib文件可以由.dll直接生成,也可以由.def生成,这里我们可以用.def文件生成,在源码目录下有生成libx264.def文件
把libx264.def拷贝到和libx264-164.dll同一级目录
然后打开vs命令行工具:
进入VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64目录执行
lib.exe /out:输出.lib的路径加文件名 /machine:x64 /def:输入def文件的路径和文件名
如:
lib.exe /out:C:\msys64\home\15138635687\x264\x264\bin\libx264-164.lib /machine:x64 /def:C:\msys64\home\15138635687\x264\x264\bin\libx264.def
执行完成之后就会生成.lib文件了
2.编译x265
(1)把下载的代码解压到msys2家目录下,即:msys2/home/xxx/(这里xxx表示用户名)
(2)进入源码包build/msys下,执行下面命令生成makefile
sh make-Makefiles.sh
在弹出的窗口中首先修改安装路径,然后点击configure,最后点击generate生成makefile并关闭窗口
(3)开始编译
make -j8
(4)安装
make install
编译安装完成之后就可以看到生成的文件了
3.编译ffmpeg
(1)把下载的ffmpeg源码解压到msys2家目录下
(2)源码修改对比
flv.h:
flvdec.c:
static int flv_same_video_codec(AVCodecParameters *vpar, int flags)
static int flv_set_video_codec(AVFormatContext *s, AVStream *vstream, int flv_codecid, int read)
注意:windows版本是:vstreami,ubuntu版本:vstream
static int flv_read_packet(AVFormatContext s, AVPacket pkt)
flvenc.c:
static void flv_write_codec_header(AVFormatContext s, AVCodecParameters par, int64_t ts)
static int flv_write_trailer(AVFormatContext *s)
static int flv_write_packet(AVFormatContext *s, AVPacket *pkt)
注意:ff_hevc_annexb2mp4,而应该用ff_hevc_annexb2mp4_buf
(3)进入ffmpeg源码包下,新建一个编译脚本build.sh,脚本内容如下:
basepath=$(cd dirname $0
;pwd)
echo ${basepath}
cd ${basepath}
#添加x264 x265 pkg路径
x264_pkg_path=/home/xxxx/x264-master/x264_install/lib/pkgconfig
x265_pkg_path=/home/xxxx/x265_git/x265_install/lib/pkgconfig
export PKG_CONFIG_PATH= x 26 4 p k g p a t h : x264_pkg_path: x264pkgpath:x265_pkg_path: P K G C O N F I G P A T H . / c o n f i g u r e − − p r e f i x = PKG_CONFIG_PATH ./configure --prefix= PKGCONFIGPATH./configure−−prefix={basepath}/ffmpeg_install --disable-static --enable-shared
–enable-libx264 --enable-libx265 --enable-gpl
make -j8
make install
(3)然后在msys2中执行sh build.sh,等待编译完成
五,测试ffmpeg命令行推流rtsp(H265、H264)成rtmp
1、rtsp推流成h265 RTMP
ffmpeg -rtsp_transport tcp -i rtsp://admin:admin@192.168.1.100:554/video -vcodec hevc-acodec aac -f flv rtmp://127.0.0.1/live/stream
2、rtsp推流成h264 RTMP
ffmpeg -rtsp_transport tcp -i rtsp://admin:admin@192.168.1.100:554/video2 -vcodec libx265-acodec aac -f flv rtmp://127.0.0.1/live/stream
3、mp4推流成h265 RTMP
ffmpeg -re -stream_loop -1 -i D:/video/aaa1.mp4 -vcodec hevc -acodec aac -f flv rtmp://127.0.0.1/live/test
4、mp4推流成 h264 RTMP
ffmpeg -re -stream_loop -1 -i D:/video/aaa1.mp4 -vcodec libx264-acodec aac -f flv rtmp://127.0.0.1/live/test
参考博客:
https://blog.csdn.net/qq_37363702/article/details/123277359
https://blog.csdn.net/qq_22633333/article/details/112964827
源码下载:
https://download.csdn.net/download/admin_dyg/86025322
ffmpeg编译支持h265的rtmp windown版本相关推荐
- FFmpeg编译支持AV1编解码器libaom-av1
编译av1的库 libaom-av1 cd ~/ffmpeg_sources && \ git -C aom pull 2> /dev/null || git clone --d ...
- nginx 支持h265 的 rtmp和hls,http-flv
https://blog.csdn.net/ybn187/article/details/88351874 https://blog.csdn.net/winshining/article/detai ...
- 如何让ffplay或者ffmpeg支持H265编码的rtmp/http-flv 实时直播流
很多初学者不知道ffplay或者ffmpeg是不支持flv封装的rtmp/http-flv流的,其原因是flv不支持H265编码payload的,因为当时制定flv封装协议的时候,H265还没出来,现 ...
- FFmpeg修改源码支持H265
文章目录 一. 安装FFmpeg 二. 下载源码 三. 修改源码 四. 重新编译 五.执行 一. 安装FFmpeg 如果已经安装,建议先卸载. brew uninstall ffmpeg 然后用以下命 ...
- FFmpeg支持H265编码
目前FFmpeg已经能够支持H265编码,我们可以通过configure添加 --enable-gpl --enable-libx265来配置. 这就需要我们的系统环境中已经安装了libx265,且其 ...
- FFMPEG android mac 编译 支持DASH/OPENSSL问题汇总
一 下载源码 FFMPEG https://github.com/FFmpeg/FFmpeg/tree/release/4.3 二 编写脚本 支持https 就必须添加open SSL 的编译 具体可 ...
- 在Ubuntu下FFmpeg编译,支持x264和x265(HECV)
所有下载的源 在Ubuntu下FFmpeg编译,支持x264和x265. Ubuntu 12.04 FFmpeg 2.1 Release 注意: cmake要升级要2.8.8 yasm要升级到1.2. ...
- 重新编译TensorFlow1.4源代码支持SSE-AVX-FMA指令集 (Python3.5版本)
TensorFlow运行出现以下信息说明工作站支持这些指令集但编译的时候并没有加入 W tensorflow/core/platform/cpu_feature_guard.cc:45] The Te ...
- ffmpeg自学路(一)用ubantu编译支持android的ffmpeg支持库,感谢韩曙亮
非常感谢韩曙亮的帮助,特以此篇记录编译过程. 韩兄相关文章的对应地址:https://blog.csdn.net/shulianghan/article/details/104351312 / 开始正 ...
最新文章
- java动态调用c++库
- ActionForm
- 短文本相似度比较:simHash简介以及java实现
- java正则表达式http_Java 正则表达式(精华)
- java 同步操作降低效率解惑
- 如何在vmware workstation 8下成功安装fedora 14
- 慧翔PMP培训及感想
- 【教程】使用腾讯云轻量应用服务器搭建Jitsi Meet视频会议系统,轻松召开私域视频会议!
- 工控行业学什么编程语言比较好_中国工控|想学PLC编程?先弄清5种PLC专用语言 !...
- raise_for_status()方法
- python 下载图片 写硬盘 慢_天啦噜!知道硬盘很慢,但没想到比 CPU Cache 慢 10000000 倍...
- 请问蓝牙设备如何测试?
- Cors跨域(二):实现跨域Cookie共享的三要素
- boxplot箱型图的离群点outlier和极端点extremes
- python如何计算环比增长率
- 李开复博士写给中国大学生的 信
- smartdraw2012破解教程
- 指北针分类信息软件 高效稳定建立SEO外部链接
- 张玉琦计算机应用技术,2013-2014学年第二学期硕士研究生开课计划.xls
- [转载]必读!ILRuntime来实现热更新的优与劣!