使用live555,ffmpeg,sdl创建android播放器
李国帅 于2018/4/1
朝花夕拾,根据数年前资料整理。
这篇文章的目的是介绍使用live555,ffmpeg,sdl创建android播放器的基本思路和代码结构。
来源
2013年的时候,有些android自带的播放框架还没有定型,也没有直接可以播放rtsp的客户端控件,这时候为了能够在android播放ipc,dvr等rtsp视频源,就做了这个东西。
实现思路
资金问题,收费的不考虑,能考虑的就是使用live555来做rtsp通信,使用ffmpeg做编解码,使用sdl做展示,把sdl窗口放在android的surface上进行显示。
这个软件需要费些功夫搭建环境,编译开源库。这些开源库基本上都已经是千锤百炼的软件了,出错基本上都是你自己用错了。
模块结构
模块和调用结构如下:
Android界面使用本地函数调用player.so,player.so再去协调和调用live555,ffmpeg,sdl三部分。
其中,live555,ffmpeg,sdl开源项目中添加android.mk,然后在cygwin中使用ndk进行编译,编译出armeabi-v7a构架的so文件。这部分可以请度娘帮忙。
关键的部分就是Player.so部分,以及与android surface的交互,交互部分sdl开源库有专门的代码。Player.so的主要文件有:
编译
创建项目,添加ndk,把live555,ffmpeg,sdl源码加入jni,填写android.mk,执行编译,目录如下
编译后
测试
可以使用ffmpeg做文件服务器,进行rtsp播放测试;也可以使用spydroid-ipcamera做rtsp服务器进行调试。
APK下载地址
http://119.29.74.189:8080/apk/EVPlayer.apk