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

免费推广网站短视频基础微网站开发公司

免费推广网站短视频,基础微网站开发公司,定制建站 app建设,建筑工程总公司这一节主要了解MediaCodec处理音频,MediaCodec直译媒体解码器,用于访问媒体编解码器,即编码器/解码器组件,它是 Android 多媒体支持基础设施的一部分;从广义上讲,编解码器处理输入数据以生成输出数据。它异…

         这一节主要了解MediaCodec处理音频,MediaCodec直译媒体解码器,用于访问媒体编解码器,即编码器/解码器组件,它是 Android 多媒体支持基础设施的一部分;从广义上讲,编解码器处理输入数据以生成输出数据。它异步处理数据并使用一组输入和输出缓冲区。在简单的层面上,您请求(或接收)一个空的输入缓冲区,用数据填充它并将其发送到编解码器进行处理。编解码器用完数据并将其转换为空输出缓冲区之一。最后,您请求(或接收)已填充的输出缓冲区,使用其内容并将其释放回编解码器。

        PCM(脉冲编码调制)是一种常见的音频数据格式,但由于其体积较大,不利于网络传输和存储,因此通常需要将其转换为AAC(高级音频编码)格式,简单看个栗子:

 PCM转AAC:

 1. 创建AAC编码器MediaFormat format = MediaFormat.createAudioFormat(MediaFormat.MIMETYPE_AUDIO_AAC, sampleRate, channelCount);  
format.setInteger(MediaFormat.KEY_AAC_PROFILE, MediaCodecInfo.CodecProfileLevel.AACObjectLC);  
format.setInteger(MediaFormat.KEY_BIT_RATE, bitRate);  
format.setInteger(MediaFormat.KEY_MAX_INPUT_SIZE, frameSize); // 根据你的PCM数据设置  MediaCodec encoder = MediaCodec.createEncoderByType(MediaFormat.MIMETYPE_AUDIO_AAC);  
encoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);  
encoder.start();
2. 编码PCM数据ByteBuffer[] inputBuffers = encoder.getInputBuffers();  
ByteBuffer[] outputBuffers = encoder.getOutputBuffers();  
MediaCodec.BufferInfo bufferInfo = new MediaCodec.BufferInfo();  // 假设你有一个PCM数据的ByteBuffer  
ByteBuffer pcmData = ...; // 从文件或网络获取PCM数据  int inputBufferIndex = encoder.dequeueInputBuffer(-1);  
if (inputBufferIndex >= 0) {  ByteBuffer inputBuffer = inputBuffers[inputBufferIndex];  inputBuffer.clear();  inputBuffer.put(pcmData);  encoder.queueInputBuffer(inputBufferIndex, 0, pcmData.remaining(), 0, 0);  
}  int outputBufferIndex = encoder.dequeueOutputBuffer(bufferInfo, 10000);  
while (outputBufferIndex >= 0) {  ByteBuffer outputBuffer = outputBuffers[outputBufferIndex];  byte[] aacData = new byte[bufferInfo.size];  outputBuffer.get(aacData);  // 处理AAC数据,例如写入文件或发送到网络  encoder.releaseOutputBuffer(outputBufferIndex, false);  outputBufferIndex = encoder.dequeueOutputBuffer(bufferInfo, 0);  
}  // 结束编码  
encoder.signalEndOfInputStream();

AAC转PCM

1. 创建AAC解码器MediaFormat format = MediaFormat.createAudioFormat(MediaFormat.MIMETYPE_AUDIO_AAC, sampleRate, channelCount);  
format.setInteger(MediaFormat.KEY_AAC_PROFILE, MediaCodecInfo.CodecProfileLevel.AACObjectLC);  
format.setInteger(MediaFormat.KEY_MAX_INPUT_SIZE, aacFrameSize); // 根据你的AAC数据设置  MediaCodec decoder = MediaCodec.createDecoderByType(MediaFormat.MIMETYPE_AUDIO_AAC);  
decoder.configure(format, null, null, 0);  
decoder.start();
2. 解码AAC数据ByteBuffer[] inputBuffers = decoder.getInputBuffers();  
ByteBuffer[] outputBuffers = decoder.getOutputBuffers();  
MediaCodec.BufferInfo bufferInfo = new MediaCodec.BufferInfo();  // 假设你有一个AAC数据的ByteBuffer  
ByteBuffer aacData = ...; // 从文件或网络获取AAC数据  int inputBufferIndex = decoder.dequeueInputBuffer(-1);  
if (inputBufferIndex >= 0) {  ByteBuffer inputBuffer = inputBuffers[inputBufferIndex];  inputBuffer.clear();  inputBuffer.put(aacData);  decoder.queueInputBuffer(inputBufferIndex, 0, aacData.remaining(), 0, 0);  
}  int outputBufferIndex = decoder.dequeueOutputBuffer(bufferInfo, 10000);  
while (outputBufferIndex >= 0) {  ByteBuffer outputBuffer = outputBuffers[outputBufferIndex];  byte[] pcmData = new byte[bufferInfo.size];  outputBuffer.get(pcmData);  // 处理PCM数据,例如播放或写入文件  decoder.releaseOutputBuffer(outputBufferIndex, true);  outputBufferIndex = decoder.dequeueOutputBuffer(bufferInfo, 0);  
}  // 结束解码  
decoder.stop();  
decoder.release();

注:

正确配置编解码器:在创建和配置MediaCodec实例时,需要确保使用正确的参数,如音频格式、采样率、通道数等。这些参数应该与你的音频数据源和目标格式相匹配。错误的配置可能导致编码或解码失败。

处理缓冲区:MediaCodec使用输入和输出缓冲区来传递音频数据。你需要正确地管理这些缓冲区,包括从PCM数据源读取数据到输入缓冲区,以及从输出缓冲区获取编码后的AAC数据。

线程同步:音频编码和解码通常是异步进行的,因此需要在正确的线程上调用MediaCodec的方法,并妥善处理线程同步问题。

http://www.yayakq.cn/news/991768/

相关文章:

  • 开个网站建设公司需要什么软件搜索seo神器
  • 网站功能策划知名网站建设多少钱
  • 网站建设营销制作设计做导购网站用什么样的主机
  • 婚庆摄影网站模板大连网站设计收费标准
  • seo建站还有市场吗快速 模板 做网站
  • 啥网站都能看的浏览器下载怎样加强公司网站建设
  • 门户型网站开发难度php的网站模板
  • 8一9岁的手工关键词优化网站排名
  • 塘下网站建设公司免费网站建设模版云盘
  • 网站推广解释网站自动采集系统
  • 郑州专业网站设计公司地址国家高新技术企业认定管理工作网
  • 网站建站中关键字搜索怎么弄一个人免费视频在线观看高清
  • 高邮城乡建设网站青岛网页设计哪个公司好
  • 网站便宜建设现在如何进行网上推广
  • 网站开发用什么语言沈阳男科三甲医院排行榜
  • 怎么用ppt做网站设计绍兴seo推广
  • 济南网站制作多少钱怎样在安装wordpress
  • 汽车行业网站设计对电子商务网站建设与管理的心得
  • 哪个网站注册域名便宜有没有网址呀
  • 图书馆网站建设论文网站管理员怎么做联系方式
  • 建网站一般多少钱数据库调用做wordpress
  • 网站开发可选择方案有哪些wordpress知更鸟修改
  • 山东德州网站建设哪家最好编程常用代码大全
  • 没企业可以做网站吗小程序开发
  • 深圳网站seo网站建设基本流程 dns
  • 邯郸手机网站建设潍坊网站建设优化排名
  • 网站中的横幅怎么做wordpress 编辑器 换行
  • 中山网站建设收费标准网页首页设计教程
  • 电子商务网站建设试题3网站做端口是什么问题
  • 宁波网站设计皆选蓉胜网络搜索推广策略制定