打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Android如何实现边采集边上传
  1. Exception e) {
  2. e.printStackTrace();
  3. }
  4. }


  5. @Override
  6. public void surfaceDestroyed(SurfaceHolder holder) {
  7. if(mCamera != null)
  8. {
  9. mCamera.release();
  10. mCamera = null ;
  11. }
  12. }


  13. @Override
  14. public void onPreviewFrame(byte[] data, Camera camera) {
  15. // TODO Auto-generated method stub

  16. //get the prew frame here,the data of default is YUV420_SP
  17. //you should change YUV420_SP to YUV420_P

  18. }




  19. }
复制代码


1. 为了确保在所有的平台上你都能够看到画面,SurfaceCreated() SurfaceChanged() SurfaceDestory()请一定要按照上面的写法写:
SurfaceCreated中注意
mCamera.setPreviewDisplay(mHolder);//此代码必须添加视频才会显示出来
   mCamera.setPreviewCallback(this);//设置预览帧的接口,就是通过这个接口,我们来获得预览帧的数据的

2.图像是倒的如何解决?
//and set the preview to landscape mode.
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
在SetContentView之前调用此代码,理由大家自己看API文档,解释的麻烦.

3.public void onPreviewFrame(byte[] data, Camera camera)

该接口为获取视频预览帧的接口,传递进来的data,默认是YUV420SP的,H264编码的源默认是YUV420的,将他们转换一下再编码图像就正常了;

转换函数:

  1. private byte[] changeYUV420SP2P(byte[]data,int length){
  2. int width = 176;
  3. int height = 144;
  4. byte[] str = new byte[length];
  5. System.arraycopy(data, 0, str, 0,width*height);

  6. int strIndex = width*height;

  7. for(int i = width*height+1; i < length ;i+=2)
  8. {
  9. str[strIndex++] = data[i];
  10. }


  11. for(int i = width*height;i<length;i+=2)
  12. {
  13. str[strIndex++] = data[i];
  14. }
  15. return str;
  16. }
复制代码



4.编解码库
关于Android的编解码库因为涉及到公司的版权问题,请大家原谅我无法给出库了,不过这些都是从X264中提取出来的,是在Windows主机上搭建了一个linux的虚拟机,然后在linux虚拟机下编写的NDK开源库,X264这块因为最近一直在弄Sipdroid的代码,暂时还无法腾出精力来管理

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Android Camera
FFMpeg压缩Android摄像头数据写成H264格式文件
庆祝一下,Android视频采集H264编码成功
玩转Android Camera开发(二):使用TextureView和SurfaceTexture预览Camera 基础拍照demo
【流媒體】Android 实时视频采集
Android自定义相机实现定时拍照
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服