当前位置: 首页 > news >正文

网站寄生虫怎么做网站备案法规

网站寄生虫怎么做,网站备案法规,成都市建设质监站网站,网站系统修改背景#xff1a; 按照需求#xff0c;需要支持APP在手机息屏时进行推流、录像。 技术要点#xff1a; 1、手机在息屏时能够打开camera获取预览数据 2、获取预览数据时进行编码以及合成视频 一、息屏时获取camera预览数据#xff1a; ①Camera.setPreviewDisplay(SurfaceH…背景 按照需求需要支持APP在手机息屏时进行推流、录像。 技术要点 1、手机在息屏时能够打开camera获取预览数据 2、获取预览数据时进行编码以及合成视频 一、息屏时获取camera预览数据 ①Camera.setPreviewDisplay(SurfaceHolder holder) 一般常规的打开camera后(Camera.open(int cameraId))给相机设置预览setPreviewDisplay(SurfaceHolder holder)holder通过surfaceview获取。但是者在surfaceDestroyed(xxxxxx)后无法获取预览数据所以setPreviewDisplay(SurfaceHolder holder)此方法无法满足息屏的需求。 ②Camera.setPreviewTexture(SurfaceTexture surfaceTexture): 此方法通过创建一个new SurfaceTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES)传入就可以实现息屏获取相机的预览数据。这样就可以避免直接使用TextureView带来的onSurfaceTextureDestroyed(xxxx)导致息屏后无法获取预览数据。 二、预览camera预览数据 ①Camera.setPreviewTexture(SurfaceTexture surfaceTexture): 获取到yuv数据进行转换成bitmap然后用Imageview或者Surfaceview直接显示。 此方法带来的弊端 1、每一帧数据都要生成bitmap短时间频繁的创建对象会导致STW从而导致ANR 2、预览数据不流畅是用Imageview或者Surfaceview手动方式展示的 ②Camera.setPreviewDisplay(SurfaceHolder holder) 此方法是Android自带的没有上述的弊端ANR、画面卡顿但是在息屏时无法获取预览数据 ③Camera.setPreviewTexture(SurfaceTexture                 surfaceTexture)Camera.setPreviewDisplay(SurfaceHolder holder) 此方法既解决了预览问题也解决了息屏获取预览数据问题但是此方法在MediaMuxer两种模式转换合成音视频时无法合成连续的音视频只能亮屏时合成一段息屏时合成一段。不过也尝试在转换模式时MediaMuxer继续写入数据虽然视频可以播放但是会导致写入失败视频画面卡顿在转换的那一帧画面。因为在转换模式时编码的数据出问题了大小比之前的要小很多此问题待研究。 三、解决方案 采用上述的第三种方法 Camera.setPreviewTexture(SurfaceTexture                 surfaceTexture)Camera.setPreviewDisplay(SurfaceHolder holder) 息屏、切换前后置摄像头时先释放相机releaseCamera()代码如下 override fun releaseCamera() {try {stopBackgroundThread()mCamera?.stopPreview()mCamera?.setPreviewCallbackWithBuffer(null)mCamera?.release()mCamera null} catch (runError: RuntimeException) {KLog.e(TAG, releaseCamera happened error: runError.message)} catch (e: Exception) {KLog.e(TAG, releaseCamera error: $e)}} 然后再重新打开相机openCamera代码如下 override fun openCamera(cameraId: Int,imageFormat: Int,holder: SurfaceHolder?) {mCameraId cameraIdthis.previewFormat imageFormatsurfaceHolder holdermSurfaceTexture SurfaceTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES)openCamera(surfaceHolder, mSurfaceTexture!!, cameraId)}private fun openCamera(surfaceHolder: SurfaceHolder?,surfaceTexture: SurfaceTexture,cameraId: Int) {if (cameraId 0 /*|| cameraId Camera.getNumberOfCameras() - 1*/) {Log.w(TAG,openCamera failed, cameraId cameraId , Camera.getNumberOfCameras() Camera.getNumberOfCameras())return}startBackgroundThread()try { // Log.i(TAG,surfaceCreated open camera cameraId$cameraId start)mCamera Camera.open(cameraId)mCamera?.setDisplayOrientation(90)if (surfaceHolder null) {mCamera?.setPreviewTexture(surfaceTexture)} else {mCamera?.setPreviewDisplay(surfaceHolder)}// set preview format {this.previewFormat setCameraPreviewFormat(mCamera!!, this.previewFormat)// }// 设置fps{val minFps: Int 30000val maxFps: Int 30000setCameraPreviewFpsRange(mCamera!!, minFps, maxFps)// }// 设置预览尺寸 {val hasSetPreviewSize setCameraPreviewSize(mCamera!!)if (hasSetPreviewSize.size 1) {/* previewWidth hasSetPreviewSize[0]previewHeight hasSetPreviewSize[1]GBApp.getInstance().previewWidth hasSetPreviewSize[0]GBApp.getInstance().previewHeight hasSetPreviewSize[1]*/previewWidth 640previewHeight 480GBApp.instance!!.previewWidth 640GBApp.instance!!.previewHeight 480}// }// 设置照片尺寸 {setCameraPictureSize(mCamera!!)// }// 设置预览回调函数{mCamera?.setPreviewCallbackWithBuffer(mCameraCallbacks)Log.i(TAG,ImageFormat: $previewFormat bits per pixel ImageFormat.getBitsPerPixel(previewFormat))// 初始化数组for (index in 0 until previewDataSize) {val previewData if (previewFormat ! ImageFormat.YV12) {ByteArray(previewWidth * previewHeight * ImageFormat.getBitsPerPixel(previewFormat) / 8)} else {val size ImageUtils.getYV12ImagePixelSize(previewWidth, previewHeight)ByteArray(size)}previewDataArray.add(previewData)}//addAllPreviewCallbackData()mCamera?.addCallbackBuffer(ByteArray(previewWidth * previewHeight * 3 / 2))// }//autoRatioTextureView()mCamera?.startPreview()} catch (localIOException: IOException) {Log.e(TAG,surfaceCreated open camera localIOException cameraId cameraId , error localIOException.message,localIOException)} catch (run: RuntimeException) {Log.e(TAG,open camera RuntimeException error run.message)} catch (e: Exception) {Log.e(TAG,surfaceCreated open camera cameraId cameraId , error e.message,e)}} 此情况依旧会导致在切换相机时出现录制的视频卡在某一帧解决方案如下 依旧使用SurfaceView预览相机 1、相机停止写入数据pauseRecord() // 根据 status 状态是否写入数据 public void pauseRecord() {if (status Status.RECORDING) {pauseMoment System.nanoTime() / 1000;status Status.PAUSED;if (listener ! null) listener.onStatusChange(status);}} 2、释放相机 fun releaseCamera() {try {stopBackgroundThread()mCamera?.stopPreview()mCamera?.setPreviewCallbackWithBuffer(null)mCamera?.release()mCamera null} catch (runError: RuntimeException) {KLog.e(TAG, releaseCamera happened error: runError.message)} catch (e: Exception) {KLog.e(TAG, releaseCamera error: $e)}} 3、继续录制视频 fun doResumeRecord(eventData: ResumeRecordEvent) {// 打开相机GBApp.instance?.service?.doOpenCamera(OpenCameraEvent(eventData.holder,VideoTaskUtil.instance.mCameraId,ImageFormat.NV21,eventData.eventType))// 请求关键帧camera2Base?.videoEncoder?.requestKeyframe()// 继续写入音视频数据camera2Base?.resumeRecord()}public void resumeRecord() {if (status Status.PAUSED) {pauseTime System.nanoTime() / 1000 - pauseMoment;status Status.RESUMED;if (listener ! null) listener.onStatusChange(status);}} 如果合成的视频在后续还会卡在某一帧可以把之前的视频数据队列清空这样避免因为切换相机之前的垃圾数据导致问题然后执行上面的步骤
http://www.dnsts.com.cn/news/34217.html

相关文章:

  • 网站 利润asp.net+网站开发+实战
  • 昆明网站建设报价wordpress搬家换域名不换服务器
  • 购物网站支付功能怎么做seo一个月工资一般多少
  • 网站设计怎么做ppt答辩wordpress后台网址
  • 外贸免费开发网站模板自驾游黄山风景区旅游攻略
  • 网站开发app手机网上银行
  • 外包公司做的网站wordpress标签云添加图片
  • 品牌形象成都百度推广排名优化
  • 24淘宝网站建设宁波网站建设网络推广
  • 做微信平台网站个人网站如果做
  • 什么样的网站做百度广告好网站ip解析
  • 鞍山建立公司网站的步骤建设网站一般流程
  • 萍乡企业网站制作住房城乡建设网站官网入口
  • 中山网站只设计站设计培训课程
  • 做时尚网站的目的如何给公司取一个好名字
  • 手机免费创建个人网站网站开发自学时间
  • 云服务器建设网站教程网站开发工具 晴天娃娃
  • 依安县建设网站网络服务时代
  • 英国男女做那个视频网站贵州省建设厅二建报名网站
  • 广州英文网站制作哪里有网站推广公司
  • 公众号编辑器哪个好用河北seo推广平台
  • 视频播放网站开发前台登录wordpress
  • 怎么样可以做网站充值代理wordpress文章html页面模板
  • wordpress 做企业网站北京网站开发建设 58同城
  • 一般招聘网站有哪些贵州省水利建设项目公示网站
  • 分类网站开发广告公司简介宣传册
  • gps定位网站建设镇江手机网站建设
  • 关于做数学 平方差公式的网站山西防疫最新信息
  • 外贸建站与推广如何做个人网站成品下载
  • 住房和城乡建设部科技网站南宁优化网站网络服务