最终的需求是以预先录制的视频,替换摄像头输入,作为视频聊天内容传送给对端。
目前初步想法:
1)开发一个类似与pc上的虚拟摄像头app,虚拟摄像头app在后台播放视频,并以此屏蔽摄像头;
2)现在手机大都支持OTG 外接USB摄像头,能否修改安卓底层配置,让OTG摄像头成为默认的摄像头?
请高手们给点建议,怎么做更合理?或者有没有其它办法?谢谢!

解决方案 »

  1.   

    1,有一种几乎不需要多少技术的方案,就是采用模拟器然后进行视频声音的替换,但是有些麻烦和繁琐2,深入到程序底层,直接找到接口接收和发送视频,需要一定的逆向工作补充于2017.03.16:前后有3个朋友找到我交流这个事情,我终于决定彻底解决这个问题。理论上,我们可以分很多种情况很多种办法来解决这个问题,就是对于任何app都能替换。1:没有root的机器,我们修改替换每一个app中的视频相关接口jni层或者java层,这个费时费力,而且不通用。而且还有随时有被宿主程序检测到程序不完整的风险。2,没有root的机器,我们用第三方虚拟启动app的方法,这方面类似LBE平行空间,前期需要做的工作量巨大,但是一旦做好框架,那么任意的app都能在此框架下运行,修改so,修改java方法,随心所欲。3,root后的机器,我们可以加载驱动或者重新编译系统库,最后我采用的就是这种办法,这样能保证最大程度地还原app真实运行场景,不造成任何干扰。测试结果显示效果良好,对于QQ视频等应用可以替换,但是对于系统自带的录像却没能替换,所以我估计系统录像有2-3条路径。补充于2017.03.23:经过多天查看源码,基本找到了90%的视频接口。从中可以发现,android对于视频录制的一些设计:如果你只是想把正在播放的视频录制下来,那么android就完全抛弃速度的考量,而层层打包,你需要做的就是发出一个录制并保存视频的指令(至于文件的保存是不是可以直接在service中完成不清楚)。如果你要在视频播放的时候处理每一帧图像,甚至加上滤镜,那么android给你准备的一套贴近底层的方式,因为图像的数据量太大了,所以尽量避免反复挪动和拷贝,android就选择在图像绘制前夕的一些点作为插入,从而满足你的需求,又保证整个播放的路径还是那个路径,不增添新的的路径。补充于2017.04.05:基本上已经解决了所有的视频替换的问题,不过有一点遗憾的地方就是对于一些人脸认证的app虽然后台的视频已经替换了,但是显示的还是真实的图像,后来我估计是因为这些认证app为了保证兼容性,而用了android录像最古老的方式(系统自带相机功能都不用这套机制了),用surface holder 来承载录像的功能,虽然叫holder,但是却没能hold,整个视频预览的数据虽然经过了app,但是这绝对仅仅是路过而已,可以让app窥探一下,但是绝不允许你修改,仅仅是能共享读而已,但是话又说回来,既然仅仅是路过,就说明android完全没有想过视频数据被app修改而必须同步的问题,所以直接经过service与摄像头打交道,保证最佳的预览速度,那holder所hold的是什么,应该是hold了录像的参数设置,就是说你可以hold摄像机的参数,hold拍摄的图像大小、帧率、格式,但是因为早期的硬件问题,这套机制就是用来快速预览视频的。要想替换这个预览显示,应该必须修改service的代码,当然修改驱动也是可以的,但是对于没有源码的机器这两者的修改都要慎重,不仅仅是兼容性的问题,而且不小心就启动不了机器。这个是我花椒直播的射雕英雄传,声音也基本是同步的
    http://www.huajiao.com/user/98039432
    请加我的朋友写明来意,发广告的号太多了。
      

  2.   

    本人小白,对安卓构架一窍不通。但是,对于在安卓系统的视频交友软件上,使用非真实摄像头,我有过实际操作。
    在PC端装安卓虚拟机,PC系统用vcam之类的虚拟摄像头,这样就可以投射照片,桌面,或者视频之类的。
    我觉得,手机安卓硬件系统几号没有什么可可扩展性,所以,如果不root,虚拟摄像头无法实现。即使实现,也要占用一个真实摄像头的地址,改来改去的很容易出错。
    我的思路是,坐一个安卓系统下的安卓模拟器,用模拟器运行社交视频软件。加一个壳后,想怎么改都很容易了,同时可以绕过root。
    安卓系统的安卓模拟器就是一个壳,只需链接软件和系统,只是在链接摄像头时,链接到虚拟摄像头。
      

  3.   


    提供此技术,需要的可以加我VX:bmwxiaojian
      

  4.   

    去年制作了刷机包,针对小米2s和米4,视频是放在/sdcard/my/34.mp4 下的,后经转手,网络上已经泛滥了。百度上的很多信息已经被人复制拷贝放到比如百度经验,百度问答上,个人网站上。算是一个小小的悲剧吧,现在仅有的一点讯息就是能从时间上看出端倪来。
      

  5.   

    后来又制作了一款虚拟视频app,当然没有做什么保护,被人改头换面也放到了百度相关页面上。这款app支持的手机多一些,不过还是有很多手机不能用,7.0及其以上系统都不能用。
      

  6.   

    这个我暂时只能实现一些手机上可用的app,兼容性不太好,也可以实时切换几个准备好的视频。但是无法有效检测用户使用状态,如果被人用于刷脸等业务,可能会造成坏的影响。如果希望交流可以加我扣:3617 28654 加入请详细注明来意,因为广告太多。
      

  7.   

    这个动机值得怀疑 , 非 root 不容易实现 ; 例如 : 支付宝 刷脸 支付 , 各种刷脸 解锁 的 应用 ; 
      

  8.   

    安卓上也有虚拟摄像头软件 最近才发现的,还能QQ视频 给力
     www.jianshu.com/p/2a9af2918e11
      

  9.   

    root的系统纯软件就能实现,可以看看这个 。https://pan.baidu.com/s/1bDlVKItp9clFFb7Je2WabA