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

河池市都安县建设局网站潍坊知名网站建设服务商

河池市都安县建设局网站,潍坊知名网站建设服务商,超炫酷的网站,企业门户网站制作价格怎么算很多开发者希望Android播放端实现视频窗口的放大缩小功能#xff0c;为此#xff0c;我们做了个简单的demo#xff0c;通过播放端回调RGB数据#xff0c;直接在上层view操作处理即可#xff0c;Github#xff1a;https://github.com/daniulive/SmarterStreaming 无视频无…很多开发者希望Android播放端实现视频窗口的放大缩小功能为此我们做了个简单的demo通过播放端回调RGB数据直接在上层view操作处理即可Githubhttps://github.com/daniulive/SmarterStreaming 无视频无真相http://www.iqiyi.com/w_19s9sa7epp.html 基本流程如下 1. 基础的初始化和参数设定 libPlayer new SmartPlayerJniV2();myContext this.getApplicationContext();sSurfaceView (SurfaceView) this.findViewById(R.id.surface);surface_renderer new RGBSurfaceRenderer(sSurfaceView); private void InitAndSetConfig() {playerHandle libPlayer.SmartPlayerOpen(myContext);if (playerHandle 0) {Log.e(TAG, surfaceHandle with nil..);return;}libPlayer.SetSmartPlayerEventCallbackV2(playerHandle,new EventHandeV2());libPlayer.SmartPlayerSetBuffer(playerHandle, playBuffer);// set report download speed(默认2秒一次回调 用户可自行调整report间隔)libPlayer.SmartPlayerSetReportDownloadSpeed(playerHandle, 1, 2);libPlayer.SmartPlayerSetFastStartup(playerHandle, isFastStartup ? 1 : 0);//设置RTSP超时时间int rtsp_timeout 10;libPlayer.SmartPlayerSetRTSPTimeout(playerHandle, rtsp_timeout);//设置RTSP TCP/UDP模式自动切换int is_auto_switch_tcp_udp 1;libPlayer.SmartPlayerSetRTSPAutoSwitchTcpUdp(playerHandle, is_auto_switch_tcp_udp);libPlayer.SmartPlayerSaveImageFlag(playerHandle, 1);// It only used when playback RTSP stream..// libPlayer.SmartPlayerSetRTSPTcpMode(playerHandle, 1);playbackUrl rtmp://202.69.69.180:443/webcast/bshdlive-pc;//playbackUrl rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov;libPlayer.SmartPlayerSetUrl(playerHandle, playbackUrl);} 2.  设置External Render回调RGBA数据 libPlayer.SmartPlayerSetExternalRender(playerHandle, new RGBAExternalRender()); Log.i(TAG, Start playback stream);InitAndSetConfig();// External RenderlibPlayer.SmartPlayerSetExternalRender(playerHandle, new RGBAExternalRender());libPlayer.SmartPlayerSetAudioOutputType(playerHandle, 0);if (isMute) {libPlayer.SmartPlayerSetMute(playerHandle, isMute ? 1: 0);}if (isHardwareDecoder) {int isSupportHevcHwDecoder libPlayer.SetSmartPlayerVideoHevcHWDecoder(playerHandle, 1);int isSupportH264HwDecoder libPlayer.SetSmartPlayerVideoHWDecoder(playerHandle, 1);Log.i(TAG, isSupportH264HwDecoder: isSupportH264HwDecoder , isSupportHevcHwDecoder: isSupportHevcHwDecoder);}libPlayer.SmartPlayerSetLowLatencyMode(playerHandle, isLowLatency ? 1: 0);libPlayer.SmartPlayerSetFlipVertical(playerHandle, is_flip_vertical ? 1 : 0);libPlayer.SmartPlayerSetFlipHorizontal(playerHandle, is_flip_horizontal ? 1 : 0);libPlayer.SmartPlayerSetRotation(playerHandle, rotate_degrees);int iPlaybackRet libPlayer.SmartPlayerStartPlay(playerHandle);if (iPlaybackRet ! 0) {Log.e(TAG, Call SmartPlayerStartPlay failed..);return;}surface_renderer.StartRender();btnStartStopPlayback.setText(停止播放 );isPlaying true;Log.i(TAG, Start playback stream--); 3. 回调RGBA数据 class RGBAExternalRender implements NTExternalRender {// public static final int NT_FRAME_FORMAT_RGBA 1;// public static final int NT_FRAME_FORMAT_ABGR 2;// public static final int NT_FRAME_FORMAT_I420 3;private int width_ 0;private int height_ 0;private int row_bytes_ 0;private ByteBuffer rgba_buffer_ null;Overridepublic int getNTFrameFormat() {Log.i(TAG, RGBAExternalRender::getNTFrameFormat return NT_FRAME_FORMAT_RGBA);return NT_FRAME_FORMAT_RGBA;}Overridepublic void onNTFrameSizeChanged(int width, int height) {width_ width;height_ height;row_bytes_ width_ * 4;Log.i(TAG, RGBAExternalRender::onNTFrameSizeChanged width_: width_ height_: height_);rgba_buffer_ ByteBuffer.allocateDirect(row_bytes_ * height_);}Overridepublic ByteBuffer getNTPlaneByteBuffer(int index) {if (index 0) {return rgba_buffer_;} else {Log.e(TAG,RGBAExternalRender::getNTPlaneByteBuffer index error: index);return null;}}Overridepublic int getNTPlanePerRowBytes(int index) {if (index 0) {return row_bytes_;} else {Log.e(TAG,RGBAExternalRender::getNTPlanePerRowBytes index error: index);return 0;}}public void onNTRenderFrame(int width, int height, long timestamp) {if (rgba_buffer_ null)return;// rgba_buffer_.rewind();// copy buffer// test// byte[] test_buffer new byte[16];// rgba_buffer_.get(test_buffer);//Log.i(TAG, RGBAExternalRender:onNTRenderFrame w width h// height timestamp timestamp);// Log.i(TAG, RGBAExternalRender:onNTRenderFrame rgba: // bytesToHexString(test_buffer));if ( surface_renderer ! null){surface_renderer.SetRGBImage(width, height, rgba_buffer_);}}} 4. 对视频view进行放大缩小等状态处理 SuppressLint(ClickableViewAccessibility)public RGBSurfaceRenderer(SurfaceView view){surface_holder_ view.getHolder();if (surface_holder_ null){Log.e(TAG, RGBSurfaceRenderer, surfaceHolder with null..);return;}surface_holder_.addCallback(this);view.setOnTouchListener(new View.OnTouchListener(){Overridepublic boolean onTouch(View v, MotionEvent event){Log.e(TAG, onTouch called..);switch (event.getAction() MotionEvent.ACTION_MASK) {case MotionEvent.ACTION_DOWN:start_point_.set(event.getX(), event.getY());status_ DRAG;break;case MotionEvent.ACTION_POINTER_DOWN:float distance spacing(event);if (distance 10f) {status_ ZOOM;start_distance_ distance;}break;case MotionEvent.ACTION_MOVE:if (status_ DRAG) {dragAction(event);} else {if (event.getPointerCount() 1)return true;zoomAcition(event);}break;case MotionEvent.ACTION_UP:case MotionEvent.ACTION_POINTER_UP:status_ NONE;break;default:break;}return true;}});}5. 关闭播放 if (isPlaying) {Log.i(TAG, Stop playback stream);int iRet libPlayer.SmartPlayerStopPlay(playerHandle);if (iRet ! 0) {Log.e(TAG, Call SmartPlayerStopPlay failed..);return;}surface_renderer.StopRender();libPlayer.SmartPlayerClose(playerHandle);playerHandle 0;isPlaying false;btnStartStopPlayback.setText(开始播放 );Log.i(TAG, Stop playback stream--);}
http://www.zqtcl.cn/news/707426/

相关文章:

  • 淘宝客网站推广怎么做图文识别微信小程序是什么
  • 郑州网站建设、北京做网页公司
  • 代码错误网站wordpress主题屏蔽更新
  • 建五金方面的网站广告联盟app手机版
  • 宜宾建设网站公众号怎么制作流程
  • 上海崇明网站建设崇信县门户网站首页
  • 北京手机版建站系统开发学网页设计需要什么学历
  • 英文网站备案互联网排名前十的公司2021
  • 网站外部外链建设如何开发wordpress主题
  • 个人网站首页内容辽宁省建设网站
  • 二建证从住房建设厅网站调出流程需求分析 网站
  • 鞋子网站模板做网站开发学什么软件
  • 网站建设的需求客户中企动力科技股份有限公司招聘
  • 小程序定制 seo营销seo托管公司
  • 杭州网站设计公司联系亿企邦网站建设在电访销售话术
  • 安康网站开发公司报价网站开发人员考核
  • 谷歌网站 百度清苑住房和城乡建设局网站
  • 南宁世尊商贸网站建设如何查看一个网站是否备案
  • h5手机网站怎么做搜索引擎关键词怎么选
  • 弱电网站源码工程造价建设信息网站
  • 村级网站模板做公司永久免费网站什么好
  • 厦门做网站培训安康市电梯公司
  • 江苏水利建设网站排行榜百度
  • 营销导向的企业网站优化wordpress制作企业
  • 株洲网站建设公司wordpress资讯类主题破解版
  • 网站导航栏设计要求wordpress直达按钮
  • 网站建设寻找可以途径网站制作的目的
  • 私募基金网站建设wordpress快讯插件
  • 无锡网站搜索引擎优化校园二级网站建设
  • 用vps刷网站流量要怎么做云主机开网站教程