【技术分享】Firefly-RK3288多路视频编解码技术案例源码发布啦~
本帖最后由 Livvol 于 2018-1-30 15:07 编辑如题,这次给大家带来的是rk3288多路视频编解码技术案例的源码,视频效果如下:
http://v.youku.com/v_show/id_XMTMzNTI2Njc0OA==.html
这个多路编解码案例主要同时有五路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到板子上安装都可
static/image/hrline/5.gif
如果一切顺利,那么接着就可以准备三个mp4格式的视频,分别命名为video1.mp4,video2.mp4,video3.mp4,并拷贝到板子/mnt/sdcard/下面。然后插上两个uvc摄像头,运行MultiCodecs,就能看到效果了。相信我,你会被firefly-rk3288的强大性能惊艳到的。
上面所说到的uvc源码和MultiCodecs Apk源码均已分享,大家慢慢享用吧{:2_27:}~
当然,这只是一个简单的例子,仅供参考。大家如果对多路编解码感兴趣,可以参考这个例子,开发出更多实用性强,功能强大的应用。如果可以的话,欢迎来社区多多分享~
更新源码下载地址,点此下载!
有没有ubuntu的? Hailong 发表于 2016-7-29 10:33
有没有ubuntu的?
没有哦:hug: Livvol 发表于 2016-7-29 11:49
没有哦
:'(:'(:'( Hailong 发表于 2016-7-29 14:57
自己动手丰衣足食也是可以的,相信自己:lol Livvol 鍙戣〃浜 Livvol 鍙戣〃浜 Hailong 发表于 2016-7-30 11:20
Livvol 鍙戣〃浜
:o什么东东 请问下编译uvc是在内核编译前还是后呢?
编译遇到错误:
*** 没有规则可以创建“out/target/product/rk3288_box/obj/SHARED_LIBRARIES/libuvc-bunchen-jni_intermediates/import_includes”需要的目标“out/target/product/rk3288_box/obj/SHARED_LIBRARIES/libandroid_runtime_intermediates/export_includes”。 kuangye1988 发表于 2016-8-1 17:45
请问下编译uvc是在内核编译前还是后呢?
编译遇到错误:
可以直接模块编译uvc那部分试试