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

联谊会建设网站wordpress微信快速登录

联谊会建设网站,wordpress微信快速登录,如何申请域名和ip地址,做游戏的php网站【关键字】 视频提取类Extractor、视频编解码、保存pcm文件 【写在前面】 在使用API6开发HarmonyOS应用时#xff0c;通常会开发一些音视频媒体功能#xff0c;这里介绍如何从视频中提取音频保存到pcm文件功能#xff0c;生成pcm音频文件后#xff0c;就可使用音频播放类… 【关键字】 视频提取类Extractor、视频编解码、保存pcm文件 【写在前面】 在使用API6开发HarmonyOS应用时通常会开发一些音视频媒体功能这里介绍如何从视频中提取音频保存到pcm文件功能生成pcm音频文件后就可使用音频播放类AudioRenderer进行播放了。这里主要介绍从视频提取音频并保存到pcm文件的开发步骤。 【开发步骤】 步骤1对视频格式的文件进行提取音频文件并通过解码器解码并监听获取到的buffer数据直接使用Extractor从视频中提取出来的音频数据不能直接作为类似pcm数据源进行播放需要使用解码器解码之后得到的原始数据才可AudioRenderer进行播放。新建VideoDecoder类在里面封装相关功能代码。使用Extractor从视频提取音频数据并使用解码器解码代码如下 // 可创建VideoDecoder类实现相关功能 private Format format;private Codec decoder;private Extractor extractor;public void createDecoder() {decoder Codec.createDecoder(); // 创建解码器extractor new Extractor(); // 创建Extractor解封装类boolean ret extractor.setSource(new Source(/data/data/com.harmonyospro.myapplication/vedio_audio_test.mp4)); // 设置数据源com.harmonyospro.myapplication为应用包名也可设置为网络视频数据源System.out.println(setSource ret ret);int trackCount extractor.getTotalStreams();//获取轨道for (int i 0; i trackCount; i) {format extractor.getStreamFormat(i);if (format.getStringValue(mime).contains(audio)) { // 视频videoaudio音频/*** tc.steps: step2.set codec format for decoder* tc.expected: step2.the return value is true*/ret decoder.setCodecFormat(format);System.out.println(setCodecFormat ret ret);ret extractor.specifyStream(i);System.out.println(specifyStream ret ret);System.out.println(format.toString() format.toString());System.out.println(format.getStringValue(mine) format.getStringValue(mime));System.out.println(format.getStringValue(width) format.getIntValue(width));System.out.println(format.getStringValue(height) format.getIntValue(height));break;}}decoder.registerCodecListener(listener);}Codec.ICodecListener listener new Codec.ICodecListener() {Overridepublic void onReadBuffer(ByteBuffer byteBuffer, BufferInfo bufferInfo, int i) {Format fmt decoder.getBufferFormat(byteBuffer);System.out.println(fmt.toString() fmt.toString());// 写入文件writeFile(byteBuffer,bufferInfo,i);System.out.println(onReadBuffer bufferInfo.toString());}Overridepublic void onError(int errorCode, int act, int trackId) {throw new RuntimeException();}};/*** 调用 start()方法开始解码*/public void start(){boolean start decoder.start();System.out.println(start start);}/*** 调用getAvailableBuffer取到一个可用的ByteBuffer把数据填入ByteBuffer里然后再调用writeBuffer把ByteBuffer写入解码器实例*/public void framebuffer(){int i 1;boolean reachEnd false;while (!reachEnd){extractor.next();//下一帧ByteBuffer dstBuf null;dstBuf decoder.getAvailableBuffer(100000);if (dstBuf null) {try {Thread.sleep(200);} catch (InterruptedException e) {System.out.println(InterruptedException);}continue;}System.out.println(02b dstBuf.toString() dstBuf.toString());BufferInfo bufferInfo new BufferInfo();bufferInfo.offset 0;bufferInfo.size extractor.readBuffer(dstBuf, 0);bufferInfo.timeStamp extractor.getFrameTimestamp();bufferInfo.bufferType extractor.getFrameType();System.out.println(bufferInfo bufferInfo bufferInfo.timeStamp);reachEnd extractor.getStreamId() -1;System.out.println(reachEnd reachEnd);if(reachEnd){bufferInfo.bufferType bufferInfo.BUFFER_TYPE_END_OF_STREAM;}boolean ret decoder.writeBuffer(dstBuf, bufferInfo);System.out.println(writeBuffer ret ret);try {Thread.sleep(200);} catch (InterruptedException e) {System.out.println(InterruptedException);}}} /*** 停止解码释放资源*/public void stopAndRelease(){System.out.println(VedioDecoder stopAndRelease);decoder.stop();decoder.release();} 步骤2封装writeFile方法将获取到的buffer数据写入pcm文件中此处com.harmonyospro.myapplication为工程bundleName可替换为应用包名代码如下 private void writeFile(ByteBuffer outputBuffer, BufferInfo info, int trackId) {FileOutputStream fileOutputStream null;File fd new File(/data/data/com.harmonyospro.myapplication/1.pcm);try {fileOutputStream new FileOutputStream(fd, true);final byte[] chunk new byte[info.size];outputBuffer.get(chunk);fileOutputStream.write(chunk, 0, outputBuffer.limit());outputBuffer.clear();} catch (FileNotFoundException e) {System.out.println(02b FileNotFoundException);} catch (IOException e) {System.out.println(02b IOException);}finally {try {fileOutputStream.close();} catch (IOException e) {System.out.println(IOException);}} } 步骤3在需要调用视频提取音频的地方进行方法调用代码如下 VideoDecoder videoDecoder new VideoDecoder(); videoDecoder.createDecoder(); videoDecoder.start(); videoDecoder.framebuffer(); //vedioDecoder.stopAndRelease(); // 需要停止的时候停止 这里就完成从视频获取音频并保存到pcm文件的功能了获取到pcm文件就可以使用AudioRenderer进行播放了。 【参考文档】 视频编解码文档https://developer.harmonyos.com/cn/docs/documentation/doc-guides/media-video-codec-0000000000031749 媒体提取开发指导https://developer.harmonyos.com/cn/docs/documentation/doc-guides/media-video-extractor-0000000000044202 音频播放开发指导https://developer.harmonyos.com/cn/docs/documentation/doc-guides/media-audio-playback-0000000000031734
http://wiki.neutronadmin.com/news/409350/

相关文章:

  • c 网站开发框架有程序外包接单
  • 局网站建设合同长春制作公司网站
  • 石家庄做网站推广排名的公司西安网站建设案例
  • 外包做网站一般多少钱北京朝阳区二手房出售
  • 现货黄金什么网站可以做直播做设计应该看哪些网站
  • 电子商务网站建设教程pdf一台电脑如何做网站
  • 石化建设分会网站百度索引量和网站排名
  • 企业网站的制作用到的技术静安区网站开发
  • 专业定制网站设计阳春网站建设
  • 保健品 东莞网站建设商城网站建设二次开发
  • 淘宝客的优惠卷网站怎么做的互联网创业项目网
  • 如何做领券网站肥城网站网站建设
  • 网站数据库配置长沙工程有限公司
  • 常见的微网站平台有哪些方面网站托管费
  • 邯郸建立网站费用怎么用dw做博客网站
  • iH5做网站google地图嵌入网站
  • PHP搭建IDC网站昌平网站建设浩森宇特
  • 有没有网站可以做发虚拟币郴州网站建设哪家好
  • 门户网站内容建设岗位职责企业网站开发计划书
  • 西部数码网站管理助手3.1php做网站技术方案
  • 网站建设中 页面源代码德阳响应式网站建设
  • 兰州网站建设多少钱皮具网站建设服装网站
  • 网站登录界面用什么软件做网站底部友情链接怎么做的
  • h5哪个网站可以做棠下手机网站开发
  • 广东专业网站定制seo软件优化
  • wordpress 搭建多站点深圳seo网络优化
  • 如何推广手机网站作文素材网站
  • 电商网站设计流程图镭拓网站建设官网
  • 微信开发者文档小程序百度点击优化
  • 网站多语言 设计我做的网站怎么是危险网站