本帖最后由 Livvol 于 2018-1-30 15:07 编辑
如题,这次给大家带来的是rk3288多路视频编解码技术案例的源码,视频效果如下:
这个多路编解码案例主要同时有五路h264硬解码和两路h264硬编码。具体实现是播放三个经h264解码的mp4视频,同时从两个uvc摄像头采集数据并进行h264编码再解码显示。所用的平台是fireflyrk3288开发板,系统是android4.4。以下是效果截图: 实现思路:1.使用androidVideoView播放三个经h264解码的mp4视频。 2.创建一个android系统服务uvcserver管理uvc,android应用通过jni与uvc通信,采集视频数据。然后,使用androidMediaCodec进行h264硬编码,再通过h264硬解码,并渲染出来。 3.以上功能同时进行,一共是五路h264硬编码和两路h264硬解码。
实现方法:
在sdk下编译所需库和执行文件:
1、将文件夹uvc复制到frameworks/av/目录下
2、进入frameworks/av/uvc,运行mm -B进行编译
确保以下文件已经生成:
out/target/product/rk3288_box/system/bin/uvcserver
out/target/product/rk3288_box/system/lib/libmp4v2.so
out/target/product/rk3288_box/system/lib/libuvc-bunchen-jni.so
添加Android系统服务:
1、打开编辑device/rockchip/rksdk/init.rc
2、添加系统服务:
service uvcd /system/bin/uvcserver
class main
user root
group system audio camera inet net_bt net_bt_admin net_bw_acct drmrpc mediadrm
ioprio rt 4
更换libRkOMX_Resourcemanager.so:
Android 4.4可以直接打补丁:0001-Android-vpu-omx-support-5-decodes-and-2-encodes.patch
其他版本的可以自己在相应位置手动替换。
之后就可以编译sdk,打包生成img文件烧到板子上即可。
接下来就是安装MultiCodecs.apk:
1、路径:MultiCodecs/bin/MultiCodecs.apk
2、通过adb install安装或者拷贝apk到板子上安装都可 如果一切顺利,那么接着就可以准备三个mp4格式的视频,分别命名为video1.mp4,video2.mp4,video3.mp4,并拷贝到板子/mnt/sdcard/下面。然后插上两个uvc摄像头,运行MultiCodecs,就能看到效果了。相信我,你会被firefly-rk3288的强大性能惊艳到的。
上面所说到的uvc源码和MultiCodecs Apk源码均已分享,大家慢慢享用吧{:2_27:}~
当然,这只是一个简单的例子,仅供参考。大家如果对多路编解码感兴趣,可以参考这个例子,开发出更多实用性强,功能强大的应用。如果可以的话,欢迎来社区多多分享~
|