Firefly开源社区

标题: 【技术分享】Firefly-RK3288多路视频编解码技术案例源码发布啦~ [打印本页]

作者: Livvol    时间: 2016-7-28 17:46
标题: 【技术分享】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管理uvcandroid应用通过jniuvc通信,采集视频数据。然后,使用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:}~
当然,这只是一个简单的例子,仅供参考。大家如果对多路编解码感兴趣,可以参考这个例子,开发出更多实用性强,功能强大的应用。如果可以的话,欢迎来社区多多分享~

更新源码下载地址,点此下载



作者: Hailong    时间: 2016-7-29 10:33
有没有ubuntu的?
作者: Livvol    时间: 2016-7-29 11:49
Hailong 发表于 2016-7-29 10:33
有没有ubuntu的?

没有哦:hug:
作者: Hailong    时间: 2016-7-29 14:57
Livvol 发表于 2016-7-29 11:49
没有哦

:'(:'(:'(
作者: Livvol    时间: 2016-7-29 17:34
Hailong 发表于 2016-7-29 14:57

自己动手丰衣足食也是可以的,相信自己:lol
作者: Hailong    时间: 2016-7-30 11:20
[quote][url=forum.php?mod=redirect&goto=findpost&pid=22588&ptid=10605]Livvol 鍙戣〃浜
作者: Hailong    时间: 2016-7-30 11:20
[quote][url=forum.php?mod=redirect&goto=findpost&pid=22588&ptid=10605]Livvol 鍙戣〃浜
作者: Livvol    时间: 2016-8-1 15:30
Hailong 发表于 2016-7-30 11:20
[quote]Livvol 鍙戣〃浜

:o什么东东
作者: kuangye1988    时间: 2016-8-1 17:45
请问下编译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”。
作者: leung先森    时间: 2016-8-2 10:03
kuangye1988 发表于 2016-8-1 17:45
请问下编译uvc是在内核编译前还是后呢?

编译遇到错误:

可以直接模块编译uvc那部分试试
作者: Livvol    时间: 2016-8-2 14:25
kuangye1988 发表于 2016-8-1 17:45
请问下编译uvc是在内核编译前还是后呢?

编译遇到错误:

内核编译前后都没关系的,用的是官方的sdk吗,初始化编译环境没?source build.sh,然后可以直接编译uvc试试,进入到uvc运行mm -B
作者: kuangye1988    时间: 2016-8-2 17:14
leung先森 发表于 2016-8-2 10:03
可以直接模块编译uvc那部分试试

谢谢,正是单独编译uvc模块出的问题
作者: kuangye1988    时间: 2016-8-2 17:15
Livvol 发表于 2016-8-2 14:25
内核编译前后都没关系的,用的是官方的sdk吗,初始化编译环境没?source build.sh,然后可以直接编译uvc ...

嗯,是用的官方sdk,编译环境没问题,编译uvc不过,但测试编译Android没问题。。。
作者: Livvol    时间: 2016-8-3 10:19
kuangye1988 发表于 2016-8-2 17:15
嗯,是用的官方sdk,编译环境没问题,编译uvc不过,但测试编译Android没问题。。。

确认下uvc路径有没问题,另外可以编译frameworks/av/下其他模块,来确认是否是uvc本身问题还是环境问题,至少我这里是没出现问题的
作者: kuangye1988    时间: 2016-8-3 11:22
Livvol 发表于 2016-8-3 10:19
确认下uvc路径有没问题,另外可以编译frameworks/av/下其他模块,来确认是否是uvc本身问题还是环境问题, ...

谢啦,已经编译过了
作者: kuangye1988    时间: 2016-8-3 11:31
Android 5.1 已经编译过了,但测试又出现问题了。

reload的板子,连接2个UVC时,程序只显示一个摄像头的影像(在最左窗口),拔掉1端口后(中间)窗口正常显示一个摄像头影像。

官方多路视频编解码的镜像遇到同样情况。
作者: Livvol    时间: 2016-8-3 15:51
kuangye1988 发表于 2016-8-3 11:31
Android 5.1 已经编译过了,但测试又出现问题了。

reload的板子,连接2个UVC时,程序只显示一个摄像头的 ...

你应该是两个UVC摄像头连在了一个usb hub上,这样可能会导致usb传输带宽不够,这时将其中一个UVC摄像头连到板子的另一个USB接口就行{:3_52:}
作者: kuangye1988    时间: 2016-8-3 16:44
Livvol 发表于 2016-8-3 15:51
你应该是两个UVC摄像头连在了一个usb hub上,这样可能会导致usb传输带宽不够,这时将其中一个UVC摄像头连 ...

谢谢,已经换过几次了,两个摄像头都在独立的USB口,不在hub上
作者: Livvol    时间: 2016-8-3 17:06
kuangye1988 发表于 2016-8-3 16:44
谢谢,已经换过几次了,两个摄像头都在独立的USB口,不在hub上

换个次点的摄像头吧哈哈,可能板子驱动能力不够{:3_54:}
作者: kuangye1988    时间: 2016-8-3 17:46
Livvol 发表于 2016-8-3 17:06
换个次点的摄像头吧哈哈,可能板子驱动能力不够

恩,我明天拿个分辨率低点的摄像头过来。

能问下您那测试时用的什么摄像头呢,是正常的吧
作者: Livvol    时间: 2016-8-3 19:15
kuangye1988 发表于 2016-8-3 17:46
恩,我明天拿个分辨率低点的摄像头过来。

能问下您那测试时用的什么摄像头呢,是正常的吧

测试时很正常,都是罗技的摄像头,其中一个比较好,1080P的,另一个就很渣了
作者: zt20005    时间: 2016-8-5 17:14
楼主,帮忙解答一下问题
1.frameworks/av/ 这个路径没有找到,系统根目录只有/system/framework
2.img文件怎么烧到板子上,我用androidtools 工具,直接升级不行。本人小白,帮忙给具体指点一下

谢谢
作者: zt20005    时间: 2016-8-5 17:15
楼主,帮忙解答一下问题
1.frameworks/av/ 这个路径没有找到,系统根目录只有/system/framework
2.img文件怎么烧到板子上,我用androidtools 工具,直接升级不行。本人小白,帮忙给具体指点一下

谢谢
作者: Livvol    时间: 2016-8-5 19:33
zt20005 发表于 2016-8-5 17:15
楼主,帮忙解答一下问题
1.frameworks/av/ 这个路径没有找到,系统根目录只有/system/framework
2.img ...

1、是完整的sdk吗,可以去下载官方的,怎么下载,wiki上有介绍,完整的sdk,framework这个目录肯定是会有的。
2、官方sdk里面有打包脚本,例如根目录下FFTools/rarimg.sh,先运行./mkimage.sh ,然后再运行./FFTools/rarimg.sh xxx  (名字自起)。在rockdev/Image-rk3288下找到xxx.rar。拷贝到windows解压,生成的文件里面会有一个配好的androidtools,直接用就可以(前提得编译一次sdk)。
作者: mark83136    时间: 2016-8-7 14:21
device/rockchip/common/vpu/lib/libRkOMX_Resourcemanager.so     你好 这个文件怎么找不到这个路径呢  怪了   5.1的系统

作者: Livvol    时间: 2016-8-8 09:14
mark83136 发表于 2016-8-7 14:21
device/rockchip/common/vpu/lib/libRkOMX_Resourcemanager.so     你好 这个文件怎么找不到这个路径呢  怪 ...

5.1跟4.4是不一样的,它在这里vendor/rockchip/common/vpu/lib/arm/libRkOMX_Resourcemanager.so,用find找一下就知道了。
作者: 214740484    时间: 2016-8-10 09:29
kuangye1988 发表于 2016-8-3 11:31
Android 5.1 已经编译过了,但测试又出现问题了。

reload的板子,连接2个UVC时,程序只显示一个摄像头的 ...

hi,按照上面操作,而且把APK的源码的sd卡路径修改了一下。三个视频播放正常,但是无法成功预览。用的摄像头是罗技的C270与C920,/dev目录下能看到video设备文件。请问你当时是怎么成功预览的?谢谢
作者: 214740484    时间: 2016-8-10 12:09
本帖最后由 214740484 于 2016-8-10 12:37 编辑

LZ,reload板子,android 5.1系统,最新的git代码,按照你的教程一步步操作,而且把APK的源码的sd卡路径修改了一下。三个视频播放正常,但是无法成功预览。用的摄像头是罗技的C270与C920,/dev目录下能看到video设备文件。进程里面有uvcserver,

APP的log信息如下
08-10 11:46:51.859 8588-8588/com.example.multicodecs D/UvcJNI: native_setup
08-10 11:46:51.859 8588-8588/com.example.multicodecs D/UvcJNI: JniTachographCallback construct
08-10 11:46:51.859 8588-8588/com.example.multicodecs D/IUvcService: createUvc
08-10 11:46:51.860 8588-8588/com.example.multicodecs D/UvcClient: createUvc mUvc=0xb72a4f20
08-10 11:46:51.860 8588-8588/com.example.multicodecs D/UvcClient: setCallback 0xb726ff10
08-10 11:46:51.860 8588-8588/com.example.multicodecs D/UvcClient: setUvcId(0)
08-10 11:46:51.860 8588-8588/com.example.multicodecs D/UvcClient: connect
08-10 11:46:51.860 8588-8588/com.example.multicodecs D/UvcJNI: valid
08-10 11:46:51.860 8588-8588/com.example.multicodecs D/UvcClient: valid
08-10 11:46:51.861 8588-8588/com.example.multicodecs D/UvcJNI: release 0xb7270358
08-10 11:46:51.861 8588-8588/com.example.multicodecs D/UvcClient: disconnect
08-10 11:46:51.861 8588-8588/com.example.multicodecs D/UvcClient: setCallback 0x0
08-10 11:46:51.861 8588-8588/com.example.multicodecs D/UvcClient: release
08-10 11:46:51.862 8588-8588/com.example.multicodecs D/UvcJNI: JniTachographCallback destruct
08-10 11:46:51.874 8588-8588/com.example.multicodecs D/UvcJNI: native_setup
08-10 11:46:51.874 8588-8588/com.example.multicodecs D/UvcJNI: JniTachographCallback construct
08-10 11:46:51.874 8588-8588/com.example.multicodecs D/IUvcService: createUvc
08-10 11:46:51.875 8588-8588/com.example.multicodecs D/UvcClient: createUvc mUvc=0xb72e4528
08-10 11:46:51.875 8588-8588/com.example.multicodecs D/UvcClient: setCallback 0xb72e40a0
08-10 11:46:51.875 8588-8588/com.example.multicodecs D/UvcClient: setUvcId(1)
08-10 11:46:51.875 8588-8588/com.example.multicodecs D/UvcClient: connect
08-10 11:46:51.875 8588-8588/com.example.multicodecs D/UvcJNI: valid
08-10 11:46:51.875 8588-8588/com.example.multicodecs D/UvcClient: valid
08-10 11:46:51.876 8588-8588/com.example.multicodecs D/UvcJNI: release 0xb72e44e8
08-10 11:46:51.876 8588-8588/com.example.multicodecs D/UvcClient: disconnect
08-10 11:46:51.876 8588-8588/com.example.multicodecs D/UvcClient: setCallback 0x0
08-10 11:46:51.877 8588-8588/com.example.multicodecs D/UvcClient: release
08-10 11:46:51.877 8588-8588/com.example.multicodecs D/UvcJNI: JniTachographCallback destruct
08-10 11:46:55.467 8588-8600/com.example.multicodecs D/UvcJNI: native_finalize
08-10 11:46:55.467 8588-8600/com.example.multicodecs D/UvcJNI: release 0x0
08-10 11:46:55.467 8588-8600/com.example.multicodecs D/UvcJNI: native_finalize
08-10 11:46:55.467 8588-8600/com.example.multicodecs D/UvcJNI: release 0x0
08-10 11:46:55.468 8588-8600/com.example.multicodecs D/UvcJNI: native_finalize
08-10 11:46:55.468 8588-8600/com.example.multicodecs D/UvcJNI: release 0x0
08-10 11:46:55.468 8588-8600/com.example.multicodecs D/UvcJNI: native_finalize
08-10 11:46:55.468 8588-8600/com.example.multicodecs D/UvcJNI: release 0x0

想知道哪里出了问题,谢谢!

RTX截图未命名1.png (987.18 KB, 下载次数: 1248)

RTX截图未命名1.png

作者: Livvol    时间: 2016-8-10 15:28
214740484 发表于 2016-8-10 12:09
LZ,reload板子,android 5.1系统,最新的git代码,按照你的教程一步步操作,而且把APK的源码的sd卡路径修改 ...

1、在板子上打开相机,摄像分别都能用吧,只插一个uvc试试?
2、我在测试的时候没有遇到这种情况,代码应该是没问题的,你的UvcClient disconnect这里有问题,你在仔细看下是不是漏了哪里没弄好
作者: zt20005    时间: 2016-8-10 17:38
求5.1.1 3288 reload 添加multi codecs 方法
作者: Livvol    时间: 2016-8-10 19:16
zt20005 发表于 2016-8-10 17:38
求5.1.1 3288 reload 添加multi codecs 方法

差不多的,因为要改的地方不多,只需要手动换下vendor/rockchip/common/vpu/lib/arm/libRkOMX_Resourcemanager.so这个库(我传的压缩包里面有),其他按照操作来就行
作者: winter_android    时间: 2016-8-11 13:24
Uvc怎么获取缓存数据?安卓自带相机可以Camera.addCallbackBuffer(mBuffer);Uvc呢?求解答
作者: Livvol    时间: 2016-8-11 14:54
winter_android 发表于 2016-8-11 13:24
Uvc怎么获取缓存数据?安卓自带相机可以Camera.addCallbackBuffer(mBuffer);Uvc呢?求解答

这就是我上传源码的作用啊,一切答案都在里面:)    因为这个不是我写的,我只是大概整理了一下,时间问题就没往深里看,差不多都忘了,这是比较底层的东西了,你如果感兴趣可以去啃一啃这部分代码,从打开uvc设备开始追踪,花点时间就行
作者: 214740484    时间: 2016-8-11 20:11
Livvol 发表于 2016-8-10 15:28
1、在板子上打开相机,摄像分别都能用吧,只插一个uvc试试?
2、我在测试的时候没有遇到这种情况,代码 ...

谢谢!后来发现两个摄像头只能识别一个,没有太多时间去熟悉UVC这部分了。简单测试发现,三路播放720P基本是极限了,1080P的话很容易出现卡顿和音视频不同步的问题。
作者: Livvol    时间: 2016-8-12 09:26
214740484 发表于 2016-8-11 20:11
谢谢!后来发现两个摄像头只能识别一个,没有太多时间去熟悉UVC这部分了。简单测试发现,三路播放720P基 ...

哈哈,毕竟还比不了电脑,不过这性能也想当不错了
作者: winter_android    时间: 2016-8-15 11:42
本帖最后由 winter_android 于 2016-8-15 15:52 编辑

"在sdk下编译所需库和执行文件"是windows下还是linux下,用的是eclipse+ndk?
作者: Livvol    时间: 2016-8-15 14:40
winter_android 发表于 2016-8-15 11:42
"在sdk下编译所需库和执行文件"是windows下还是linux下,用的是eclipse+ndk?我想试试

“在sdk下“指的是一种编译环境,在linux下下载官方sdk后在里面进行编译uvc,按照不走编译成功后就会生成相应的库和执行文件,并不是使用eclipse+ndk
作者: sankycui    时间: 2016-8-16 11:12
本帖最后由 sankycui 于 2016-8-16 11:15 编辑

H.264硬编码&硬解码,这个案例代码有开源吗?
http://www.t-firefly.com/zh/firenow/firefly_rk3288/case/2015/0529/3.html
作者: Livvol    时间: 2016-8-16 16:09
sankycui 发表于 2016-8-16 11:12
H.264硬编码&硬解码,这个案例代码有开源吗?
http://www.t-firefly.com/zh/firenow/firefly_rk3288/case/ ...

没有哦。。。
作者: sankycui    时间: 2016-8-17 10:36

哦,谢谢!
作者: Hofmann    时间: 2016-8-24 20:39
楼主,请问两路1080p编码的话能达到多少fps?仅做编码,不做解码的情况下
谢谢
作者: Livvol    时间: 2016-8-29 09:38
Hofmann 发表于 2016-8-24 20:39
楼主,请问两路1080p编码的话能达到多少fps?仅做编码,不做解码的情况下
谢谢

这个没测试过。。
作者: qwm2005    时间: 2016-8-30 11:18
大神啊,佩服佩服。
作者: qwm2005    时间: 2016-8-30 11:19
采集还能预览,这个功能很实用
作者: genius7    时间: 2016-9-22 17:19
运行multicodecs程序,打印 waiting for service hardware.uvcserver ,请问是什么原因?
作者: Livvol    时间: 2016-9-23 09:36
genius7 发表于 2016-9-22 17:19
运行multicodecs程序,打印 waiting for service hardware.uvcserver ,请问是什么原因?

后台uvcserver没启动吧
作者: lam007    时间: 2016-11-10 22:07
我在android 5.1的系统上移植过来。只有两路视频播放正常,两路UVC摄像头都不能用,一路视频播放不出来。全部修改了
到底怎么回事呢?
作者: csworld    时间: 2016-11-14 22:56
多路编解码,收下
作者: Livvol    时间: 2016-11-16 14:04
lam007 发表于 2016-11-10 22:07
我在android 5.1的系统上移植过来。只有两路视频播放正常,两路UVC摄像头都不能用,一路视频播放不出来。全 ...

这就要看log分析是什么问题了。先确保两个UVC摄像头都能用,然后是后台服务是否已经起来了。源码都在,可以尝试自己分析嘛。
作者: long龙儿er    时间: 2016-11-23 15:49
你好,rk3288可以同时通过3个摄像头采集图像吗?
作者: Livvol    时间: 2016-11-24 09:10
long龙儿er 发表于 2016-11-23 15:49
你好,rk3288可以同时通过3个摄像头采集图像吗?

只支持两路视频编码哦。
作者: long龙儿er    时间: 2016-11-27 17:26
Livvol 发表于 2016-11-24 09:10
只支持两路视频编码哦。

谢谢,那就是说不可以通过USB集线器连接三个摄像头吧
作者: Livvol    时间: 2016-11-28 11:36
long龙儿er 发表于 2016-11-27 17:26
谢谢,那就是说不可以通过USB集线器连接三个摄像头吧

嗯嗯,而且这样你的传输速率也不够。
作者: long龙儿er    时间: 2016-11-30 22:38
Livvol 发表于 2016-11-28 11:36
嗯嗯,而且这样你的传输速率也不够。

3Q
作者: billchian    时间: 2016-12-2 16:10
Livvol 发表于 2016-9-23 09:36
后台uvcserver没启动吧

楼主请问uvcserver没有启动是什么原因呢?需要怎么去查找问题出在哪里呢?我是新手 还请楼主解释一下 谢谢
作者: billchian    时间: 2016-12-2 16:10
Livvol 发表于 2016-9-23 09:36
后台uvcserver没启动吧

楼主请问uvcserver没有启动是什么原因呢?需要怎么去查找问题出在哪里呢?我是新手 还请楼主解释一下 谢谢
作者: billchian    时间: 2016-12-2 16:11
Livvol 发表于 2016-9-23 09:36
后台uvcserver没启动吧

楼主请问uvcserver没有启动是什么原因呢?需要怎么去查找问题出在哪里呢?我是新手 还请楼主解释一下 谢谢
作者: Livvol    时间: 2016-12-5 14:29
billchian 发表于 2016-12-2 16:11
楼主请问uvcserver没有启动是什么原因呢?需要怎么去查找问题出在哪里呢?我是新手 还请楼主解释一下 谢 ...

可以看下后台进程有没有起来,核对下有没有那个步骤漏了
作者: billchian    时间: 2016-12-5 22:48
Livvol 发表于 2016-12-5 14:29
可以看下后台进程有没有起来,核对下有没有那个步骤漏了

uvcserver没有起来是什么原因呢?我按照步骤操作了的,在系统自带的相机可以打开单个摄像头
作者: Livvol    时间: 2016-12-6 09:36
billchian 发表于 2016-12-5 22:48
uvcserver没有起来是什么原因呢?我按照步骤操作了的,在系统自带的相机可以打开单个摄像头

先确定uvcserver有没有起来先,在进程里面找,没有就可能是init.rc里面没操作对,自己分析一步步来嘛
作者: billchian    时间: 2016-12-8 12:55
我测试的时候logcat下面这段信息:
V/UvcService( 1376): setUvcBusy cameraId=0

V/Uvc     ( 1376): createDev mUvcId=0

V/Uvc     ( 1376): valid mUvcDevice=0x0

V/UvcService( 1376): setUvcFree cameraId=0

D/UvcJNI  ( 1383): valid

D/UvcClient( 1383): valid

D/IUvc    ( 1376): VALID

V/Uvc     ( 1376): valid mUvcDevice=0x0

D/UvcJNI  ( 1383): release 0xb7c33570

D/UvcClient( 1383): disconnect

D/IUvc    ( 1376): DISCONNECT

V/Uvc     ( 1376): disconnect

V/Uvc     ( 1376): destroyDev mUvcDevice=0x0

V/Uvc     ( 1376): stopPreview

D/Uvc     ( 1376): start FAIL : camera source invalid

D/UvcClient( 1383): setCallback 0x0

D/UvcClient( 1383): release

D/IUvc    ( 1376): RELEASE

V/Uvc     ( 1376): disconnect

V/Uvc     ( 1376): destroyDev mUvcDevice=0x0

V/Uvc     ( 1376): stopPreview

D/Uvc     ( 1376): start FAIL : camera source invalid

V/Uvc     ( 1376): ----destructor ----

V/Uvc     ( 1376): -------------------

V/UvcService( 1376): Delete uvc base

D/UvcJNI  ( 1383): JniTachographCallback destruct
楼主请问这个是什么原因啊?我 对着源码看了,好像是在下面这个函数有问题
JNIEXPORT void JNICALL Java_com_bunchen_uvc_Uvc_release
  (JNIEnv *env, jobject obj)
{
        sp<UvcClient> uvc = setUvcClient(env,obj,NULL);
        ALOGD("release %p",uvc.get());
        if(uvc.get()){
                uvc->disconnect();
                uvc->setCallback(NULL);
                uvc->release();
        }
       
        sp<JniTachographCallback> callback = setJniTachographCallback(env,obj,NULL);
        if(callback.get()){
                callback.clear();
        }
}
作者: Livvol    时间: 2016-12-9 10:30
billchian 发表于 2016-12-8 12:55
我测试的时候logcat下面这段信息:
V/UvcService( 1376): setUvcBusy cameraId=0

嗯。。太久了我都有点忘了。先去确认下uvcserver有没有起来吧。输入ps,找一下有没有
作者: yangjinbiao    时间: 2016-12-21 16:54
请问mm这个命令没有怎么安装?哪里来的?
作者: Livvol    时间: 2016-12-23 15:29
yangjinbiao 发表于 2016-12-21 16:54
请问mm这个命令没有怎么安装?哪里来的?

在SDK根目录运行 source build.sh
作者: yangjinbiao    时间: 2016-12-23 15:31
Livvol 发表于 2016-12-23 15:29
在SDK根目录运行 source build.sh

恩 已经找到,谢谢
作者: yangjinbiao    时间: 2016-12-27 10:33
请问将文件夹uvc 这种安卓系统的开发你们用的什么样的ide?有相关配置的参考网址吗?谢谢!
作者: Livvol    时间: 2016-12-27 14:07
yangjinbiao 发表于 2016-12-27 10:33
请问将文件夹uvc 这种安卓系统的开发你们用的什么样的ide?有相关配置的参考网址吗?谢谢!

我没用IDE,用的vim,SDK编译方式见官网维基http://wiki.t-firefly.com/index. ... ld_android_lollipop
作者: yangjinbiao    时间: 2016-12-28 17:20
你好,按照教程编译完成之后,摄像头的预览和解码是正常的,但是三个视频文件都显示到一个view里面了。
有个步骤不太清楚:
  1. 更换libRkOMX_Resourcemanager.so:
  2. Android 4.4可以直接打补丁:0001-Android-vpu-omx-support-5-decodes-and-2-encodes.patch
  3. 其他版本的可以自己在相应位置手动替换。
复制代码


这个里面的libRkOMX_Resourcemanager.so 在编译的时候已经生成了,你说的替换是把源代码压缩包里面的覆盖掉系统生成的吗?具体怎么替换?
作者: Livvol    时间: 2016-12-29 09:05
yangjinbiao 发表于 2016-12-28 17:20
你好,按照教程编译完成之后,摄像头的预览和解码是正常的,但是三个视频文件都显示到一个view里面了。
有 ...

这个就是要你手动打补丁,按补丁里的路径来替换,然后再编译。或者不编译直接adb push到板子替换原有的libRkOMX_Resourcemanager.so也行。
作者: yangjinbiao    时间: 2016-12-29 14:44
Livvol 发表于 2016-12-29 09:05
这个就是要你手动打补丁,按补丁里的路径来替换,然后再编译。或者不编译直接adb push到板子替换原有的li ...

我是先编译完了 再进行的替换
这个有影响吗?
作者: huankong    时间: 2016-12-30 15:13
请问能在android端实时获取每一帧视频做处理吗
作者: yangjinbiao    时间: 2016-12-30 16:51
libRkOMX_Resourcemanager.so 请问这个替换的作用是什么?和自动生成的有什么区别?

作者: Livvol    时间: 2017-1-3 09:00
yangjinbiao 发表于 2016-12-29 14:44
我是先编译完了 再进行的替换
这个有影响吗?

没影响,编译完后替换out目录下的libRkOMX_Resourcemanager.so,或者烧到板子上后,再adb push进去也行
作者: Livvol    时间: 2017-1-3 09:01
yangjinbiao 发表于 2016-12-30 16:51
libRkOMX_Resourcemanager.so 请问这个替换的作用是什么?和自动生成的有什么区别?

你替换后对比一下就知道了
作者: Livvol    时间: 2017-1-3 09:02
huankong 发表于 2016-12-30 15:13
请问能在android端实时获取每一帧视频做处理吗

应该可以吧,不过我没弄过
作者: huankong    时间: 2017-1-3 14:09
Livvol 发表于 2017-1-3 09:02
应该可以吧,不过我没弄过

是不是要改动c++代码,没有提供java的接口吧
作者: Livvol    时间: 2017-1-3 17:09
huankong 发表于 2017-1-3 14:09
是不是要改动c++代码,没有提供java的接口吧

没有
作者: huankong    时间: 2017-1-6 15:09

您好,能提供下这个的接口吗?获取两个摄像头的每一帧数据的接口
作者: Livvol    时间: 2017-1-6 17:33
huankong 发表于 2017-1-6 15:09
您好,能提供下这个的接口吗?获取两个摄像头的每一帧数据的接口

这个都在源码里面了,现在时间隔太久了,源码不是我写的,细节都忘了。。
作者: huankong    时间: 2017-1-6 18:19
Livvol 发表于 2017-1-6 17:33
这个都在源码里面了,现在时间隔太久了,源码不是我写的,细节都忘了。。

有写源码的人的联系方式吗?我想要一个接口,或者是将数据处理下重新编译,但是加进新的库和包报错了,不知道怎么解决,谢谢
作者: huankong    时间: 2017-1-6 18:22
Livvol 发表于 2017-1-6 17:33
这个都在源码里面了,现在时间隔太久了,源码不是我写的,细节都忘了。。

您好,有写源码人的联系方式吗?我想写一个java接口,不太会写,但是需要处理数据,假如在C层直接处理数据,但是加进新的库和包报错,编译不过去,也不知道怎么解决,谢谢
作者: Livvol    时间: 2017-1-9 14:39
huankong 发表于 2017-1-6 18:22
您好,有写源码人的联系方式吗?我想写一个java接口,不太会写,但是需要处理数据,假如在C层直接处理数 ...

你好,源码的作者已经离职,我也没有联系方式。这样吧,你把编译出错的log信息私信给我,我帮你看下。
作者: 柿子做的攻城狮    时间: 2017-1-12 10:05
6666666666666666
作者: wod    时间: 2017-1-20 14:51
请问,so库怎么对比替换?我打开全是方框的乱码
作者: wod    时间: 2017-1-20 16:41
lam007 发表于 2016-11-10 22:07
我在android 5.1的系统上移植过来。只有两路视频播放正常,两路UVC摄像头都不能用,一路视频播放不出来。全 ...

请问,你的问题解决了吗?我的两个摄像头也不能预览,麻烦提示一下你是怎么解决的呢
作者: Livvol    时间: 2017-2-4 09:29
wod 发表于 2017-1-20 14:51
请问,so库怎么对比替换?我打开全是方框的乱码

将我发出来的libRkOMX_Resourcemanager.so替换原有的so就行。
作者: 夕阳血    时间: 2017-2-14 10:40
没有linux的啊!!
作者: 网老无    时间: 2017-3-9 13:46
大牛
作者: iamFirefly    时间: 2017-8-11 14:17
多路学习
作者: da1990    时间: 2017-12-16 10:05
很详细  必须mark一下  1024
作者: 黑框丶眼镜    时间: 2018-1-29 14:53
大牛你好,请问你们有对RK3288芯片在Linux下视频编码研究过吗?
作者: sghmy    时间: 2018-1-29 16:17
你好,现链接无法访问了!可以重新提供下源码的下载链接吗?谢谢!
作者: Livvol    时间: 2018-1-30 15:08
黑框丶眼镜 发表于 2018-1-29 14:53
大牛你好,请问你们有对RK3288芯片在Linux下视频编码研究过吗?

没有哦
作者: Livvol    时间: 2018-1-30 15:08
sghmy 发表于 2018-1-29 16:17
你好,现链接无法访问了!可以重新提供下源码的下载链接吗?谢谢!

现在可以下载了
作者: sghmy    时间: 2018-1-30 15:24
已下载,学习学习,非常感谢!
作者: 桃花岛主    时间: 2018-4-24 11:11
这个给力!
作者: klein    时间: 2018-12-23 21:29
我的Firefly3288板子能跑起来了,但是只能打开一路uvc摄像头。有碰到过吗?在android上面调用系统的api是可以分别打开front和back摄像头的,但是又不能同时打开。。。哎。有何建议没有?
作者: luckxu    时间: 2019-2-12 23:17
kuangye1988 发表于 2016-8-1 17:45
请问下编译uvc是在内核编译前还是后呢?

编译遇到错误:

刚才也遇到相似的问题,最后确认是编译目标不正确。我的板子是aio-rk3288j,在编译的时候默认输出路径为out/target/product/rk3288_box/obj/SHARED_LIBRARIES/libuvc-bunchen-jni_intermediates/import_includes,而实际应该是out/target/product/rk3288_aio_3288j_box/obj/SHARED_LIBRARIES/libandroid_runtime_intermediates/export_includes,注意其中rk3288_box和rk3288_aio_3288j_box区别。

我的解决方法:在源码根目录运行source build/envbuild.sh和lunch命令重建

希望能给后来人一些帮助。




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1