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

网站模板中心 网站推荐品牌网络推广

网站模板中心 网站推荐,品牌网络推广,网站彩票代理怎么做,怎么用net123做网站【关键字】 音频编码、管道模式、createEncoder 【写在前面】 在使用API6开发HarmonyOS应用时,如何将pcm源文件进行编码并写入文件,最后生成aac文件,本文直接附上主要代码开发步骤供大家参考。 【主要功能代码】 import ohos.media.codec.…

 【关键字】

音频编码、管道模式、createEncoder

【写在前面】

在使用API6开发HarmonyOS应用时,如何将pcm源文件进行编码并写入文件,最后生成aac文件,本文直接附上主要代码开发步骤供大家参考。

【主要功能代码】

import ohos.media.codec.Codec;
import ohos.media.common.BufferInfo;
import ohos.media.common.Format;
import ohos.media.common.Source;import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;public class AudioEncoder {void creatEncoder(){}FileOutputStream fileOutputStream = null;public void encode(){System.out.println("encode start");try {File fd = new File("/data/data/com.example.myapplication/11.aac");fileOutputStream = new FileOutputStream(fd, true);} catch (FileNotFoundException e) {System.out.println("FileNotFoundException");} finally {}final Codec encoder = Codec.createEncoder();String path = "/data/data/com.example.myapplication/11.pcm";System.out.println("encoder = " + encoder);boolean ret = encoder.setSource(new Source(path), null);System.out.println("setSource ret = " + ret);Format fmt = new Format();// format格式中转码率和声道需与pcm相同fmt.putStringValue(Format.MIME, Format.AUDIO_AAC);fmt.putIntValue(Format.BIT_RATE, 128000);fmt.putIntValue(Format.CHANNEL, 2);fmt.putIntValue(Format.SAMPLE_RATE, 44100);fmt.putIntValue(Format.FRAME_RATE, 30); // 此设置必须,数值一般为30/60,或自行设置需要数值boolean b1 = encoder.setSourceFormat(fmt);System.out.println("setSourceFormat = " + b1);Codec.ICodecListener listener = new Codec.ICodecListener() {@Overridepublic void onReadBuffer(ByteBuffer byteBuffer, BufferInfo bufferInfo, int trackId) {System.out.println("byteBuffer = " + byteBuffer + "trackId = " + trackId + "bufferinfo = " + bufferInfo.bufferType);if(bufferInfo.bufferType == 4){encoder.stop();encoder.release();try {fileOutputStream.close();} catch (IOException e) {// 打印异常System.out.println("IOException");}return;}writeFile(byteBuffer,bufferInfo,trackId);}@Overridepublic void onError(int errorCode, int act, int trackId) {System.out.println( "PlayerCallback onError errorCode: "+errorCode +", trackId:"+trackId);}};boolean b = encoder.registerCodecListener(listener);System.out.println("registerCodecListener = " + b);boolean start = encoder.start();System.out.println("start = " + start);}private void writeFile(ByteBuffer outputBuffer, BufferInfo info, int trackId) {try {final byte[] chunk = new byte[info.size+7];addADTSHeader(chunk,info.size+7);outputBuffer.get(chunk,7,info.size);fileOutputStream.write(chunk);outputBuffer.clear();} catch (FileNotFoundException e) {System.out.println("FileNotFoundException");} catch (IOException e) {System.out.println("IOException");} finally {}}/*** 添加AAC帧文件头** @param packet    packet* @param packetLen packetLen*/private void addADTSHeader(byte[] packet, int packetLen) {int profile = 2; // AACint freqIdx = 4; // 44.1kHzint channelCount = 2;//声道packet[0] = (byte) 0xFF;packet[1] = (byte) 0xF9;packet[2] = (byte) (((profile - 1) << 6) + (freqIdx << 2) + (channelCount >> 2));packet[3] = (byte) (((channelCount & 3) << 6) + (packetLen >> 11));packet[4] = (byte) ((packetLen & 0x7FF) >> 3);packet[5] = (byte) (((packetLen & 7) << 5) + 0x1F);packet[6] = (byte) 0xFC;}
}

【说明和注意事项】

1、AAC文件有两种添加头文件方式:ADIF与ADTS,此处使用ADTS方式,ADTS是每一段编码都有一个头部,因此并不能只添加一次,需要在回调中添加头文件;添加头文件保存的aac文件可以直接播放;

2、format中需要设置FRAME_RATE,即fmt.putIntValue(Format.FRAME_RATE, 30);,数值必须大于0,否则可能会编码失败

3、编解码功能建议在子线程中执行,不要在主线程中。

【参考文档】

视频编解码文档:文档中心:视频编码

http://www.yidumall.com/news/28522.html

相关文章:

  • 成都个人学做网站浅议网络营销论文
  • 芜湖做公司网站的无锡网站优化
  • 广西棋牌软件开发公司seo优化推广业务员招聘
  • 做个网站需要多钱seo搜索引擎优化招聘
  • 长沙电商网站数字经济发展情况报告
  • 查看网站信息图标怎么做百度推广代理开户
  • 校园网站建设申请报告网站优化排名推广
  • 个人网站百度推广收费友情链接有哪些展现形式
  • 网站设计一年费用站长之家官网
  • 大学网站建设考核办法sem招聘
  • 杭州盘石做网站专业吗广告联盟全自动赚钱系统
  • 网站开发流程博客湖南网站seo找行者seo
  • 如何在网站中插入背景音乐seo外包收费
  • 唐山市住房和城乡建设局官方网站新冠疫情最新数据
  • 房地产开发网站建设百度关键词优化查询
  • 政务服务网站的建设原则报个计算机培训班多少钱
  • 建立网站难吗网络稿件投稿平台
  • 做音乐网站用什么程序滕州网站建设优化
  • 企业网站东莞网站建设制作怎么做宣传推广
  • 做网站允许发布什么内容网络热词2022流行语及解释
  • 电商网站建设比较好的广州日新增51万人
  • 谷歌官方网站注册上海比较大的优化公司
  • 织梦生成网站地图长沙百度网站排名优化
  • 深圳展览展示公司排行绍兴百度seo
  • 莱芜摩托车网站seo教程技术整站优化
  • wordpress文章分集搜索引擎优化方法有哪几种
  • 做网站的难点是什么高清视频网络服务器
  • 做电影网站看电影算网站流量吗广安seo外包
  • 郑州网站设计费用怎么建立网站
  • 门店门面设计效果图网站优化推广方案