前几天在项目中添加了rtmp对H265的支持,需要推流端 服务器端 以及播放器三个方面的处理。功能已经实现 ,感兴趣的可以 去我的上一篇文章看下。
RTMP 推送H265的实现(推流端、服务器、播放端)ffmpeg 播放H265
之前是在的播放器是在Ubuntu下面编译的。考虑到测试的很多都没有安装Ubunt的系统。所以今天考虑编译一个windows下面的ffplay版本。百度下 基本流程是需要安装mingw64 msys yasm。
至于怎么安装mingw64 msys 可以百度下 网上有很多介绍 这些我之前已经安装好了 。
今天主要做的工作如下
1.下载 yasm这个直接从官网下一个exe然后改个名字放到C:\mingw64\msys\bin目录下(我自己是这个目录大家可以根据自己的实际情况更改就可以)
2.编译SDL的 (默认编译ffmpeg的时候 会自动检测系统之是否安装了SDL 如果没有检测到的话是不会编译ffplay的)
直接去SDL的官网 下载 源码包 我下的是 SDL2-2.0.18版本 解压放到 C:\mingw64\msys目录下
然后新建一个build.sh脚本 内容如下
./configure --prefix=/usr/local/SDL
然后执行这个脚本 之后 make make install 正常没问题之后 就会安装到C:\mingw64\msys\local这个目录下 (这里说一下关于这个目录 虽然脚本里面写了/usr/local/SDL目录,然后安装完会发现并没有生成usr这个目录,直接安装到local目录下了 ,个人理解应该是直接把C:\mingw64\msys当成usr目录了)
如下图
这一步做完还不够 需要把SDL添加到环境变量,不然ffmpeg执行脚本的时候还是检测不到SDL
export PATH=”$PATH:/usr/local/SDL/bin"
export C_INCLUDE_PATH="$C_INCLUDE_PATH:/usr/local/SDL/include/SDL"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/SDL/lib”
这一步完成之后 进入ffmpeg目录 同样的操作 新建一个build.sh脚本
内容如下:(--enable-rtmp_h265是我自己定义的选项,需要用这个宏去修改ffmpeg源码,如何修改可以参考我之前的一边文章.这里不再赘述)
./configure --prefix=./install \
--disable-x86asm \
--enable-rtmp_h265
保存之后./build.sh(我的输入这个脚本之后)
可以去ffbuild目录下查看config.mak
CONFIG_RTMP_H265=yes
CONFIG_SDL2=yes
这两项前面都没有感叹号就说明ok了
之后make make install 就会在ffmpeg目录下生成install文件夹 bin目录下所需要的exe文件都有了
ffplay播放需要两个dll一个是libwinpthread-1.dll 另一个是SDL2.dll 正常安装ok的话就都有了
如果拿到其他的及机器上用的话需要把这两个dll文件一起复制过去
然后输入命令等一会 正常就出来了 如下图
ffplay rtmp://192.168.35.75:1987/live/qmcy1