李佳琦的网络营销方式/seo关键词优化的技巧和方法
MediaExtractor MediaCodec手动解码播放音乐,笔记
private class DecodeAudio implements Runnable {@Overridepublic void run() {//开始播放pcmaudioTrack.play();MediaExtractor extractor = null;MediaCodec codec = null;Log.i(TAG, "run: init");FileOutputStream fileOutputStream = null;try (AssetFileDescriptor assetFileDescriptor = context.getAssets().openFd("outfile3.mp3")) {Thread.sleep(300);Log.i(TAG, "run: start");extractor = new MediaExtractor();extractor.setDataSource(assetFileDescriptor);int trackIndex = selectAudioTrack(extractor); // 选择音频轨道(如果有多个)if (trackIndex == -1) {extractor.release();throw new Exception("没有音频轨道");}extractor.selectTrack(trackIndex); // 选择指定轨道Log.i(TAG, "run: 获取信息:" + trackIndex);MediaFormat format = extractor.getTrackFormat(trackIndex);Log.i(TAG, "run: 获取信息字段:" + format.toString());String mime = format.getString(MediaFormat.KEY_MIME);Log.i(TAG, "run: 创建解码器");codec = MediaCodec.createDecoderByType(mime);codec.configure(format, null, null, 0);codec.start();// start decodefinal int TIMEOUT_US = 10000; // 超时时间MediaCodec.BufferInfo info = new MediaCodec.BufferInfo();ByteBuffer[] inputBuffers = codec.getInputBuffers();ByteBuffer[] outputBuffers = codec.getOutputBuffers();Log.i(TAG, "run: start looper");fileOutputStream = new FileOutputStream(targetFile2);while (!isEndOfStream) {int inputBufferIndex = codec.dequeueInputBuffer(TIMEOUT_US);if (inputBufferIndex >= 0) {Log.i(TAG, "run: 读取到数据了 :" + inputBufferIndex);ByteBuffer inputBuffer = inputBuffers[inputBufferIndex];int sampleSize = extractor.readSampleData(inputBuffer, 0);if (sampleSize < 0) {// 到达流的结束点codec.queueInputBuffer(inputBufferIndex, 0, 0, 0, MediaCodec.BUFFER_FLAG_END_OF_STREAM);isEndOfStream = true;} else {long presentationTimeUs = extractor.getSampleTime();codec.queueInputBuffer(inputBufferIndex, 0, sampleSize, presentationTimeUs, 0);extractor.advance();}}Log.i(TAG, "run: 进入解码过程");int outputBufferIndex = codec.dequeueOutputBuffer(info, TIMEOUT_US);if (outputBufferIndex >= 0) {Log.i(TAG, "run: 开始解码中:" + outputBufferIndex);ByteBuffer outputBuffer = outputBuffers[outputBufferIndex];byte[] pcmData = new byte[info.size];outputBuffer.get(pcmData); // 获取PCM数据Log.i(TAG, "run: pcm data:" + pcmData.length);// 写入pcmaudioTrack.write(pcmData, 0, pcmData.length);fileOutputStream.write(pcmData, 0, pcmData.length);outputBuffer.clear();codec.releaseOutputBuffer(outputBufferIndex, false);}Thread.sleep(2);}Log.i(TAG, "run: 成功解码");} catch (Exception e) {e.printStackTrace();Log.i(TAG, "run: error:" + e.getMessage());} finally {try {Thread.sleep(288);} catch (InterruptedException e) {e.printStackTrace();}if (fileOutputStream != null) {try {fileOutputStream.flush();fileOutputStream.close();} catch (IOException e) {e.printStackTrace();}}if (codec != null) {codec.stop();codec.release();}if (extractor != null) {extractor.release();}isEndOfPlayer = true;isEndOfRecord = true;releaseAudioPlayer();Log.i(TAG, "run: 线程结束");}}private int selectAudioTrack(MediaExtractor extractor) {for (int i = 0; i < extractor.getTrackCount(); i++) {MediaFormat format = extractor.getTrackFormat(i);String mimeType = format.getString(MediaFormat.KEY_MIME);if (mimeType.startsWith("audio/")) {// 找到音频轨道return i;}}return -1;}}
相关文章:

MediaExtractor MediaCodec手动解码播放音乐
MediaExtractor MediaCodec手动解码播放音乐,笔记 private class DecodeAudio implements Runnable {Overridepublic void run() {//开始播放pcmaudioTrack.play();MediaExtractor extractor null;MediaCodec codec null;Log.i(TAG, "run: init");FileOutputStrea…...

element表格+表单+表单验证结合运用
目录 一、结果展示 二、实现代码 一、结果展示 1、图片 2、描述 table中放form表单,放输入框或下拉框或多选框等; 点击添加按钮,首先验证表单,如果存在没填的就验证提醒,都填了就向下添加一行表单表…...

亚马逊云科技发布Amazon HealthScribe,使用生成式AI技术实现临床文档的自动生成
近日,亚马逊云科技在纽约峰会上推出了Amazon HealthScribe,该服务符合HIPAA(《健康保险流通与责任法案》)的相关要求,可为医疗软件供应商提供一种基于语音和文字识别的生成式AI技术,帮助其创建能够自动生成…...

Windows11安装Linux子系统,并实现服务自启动,局域网访问,磁盘挂载
Windows11安装Linux子系统,并实现服务自启动,局域网访问,磁盘挂载 一、准备工作二、安装Linux子系统(wsl2)三、为Linux子系统设置桥接网络检查wsl版本在 Hyper-V 管理器中创建虚拟交换机创建 WSL 配置文件启动wsl 四、设置Windows开机自启动L…...

【Git】保姆级详解:Git配置SSH Key(密钥和公钥)到github
博主简介:22级计算机科学与技术本科生一枚🌸博主主页:是瑶瑶子啦每日一言🌼: “当人们做不到一些事情的时候,他们会对你说你也同样不能。”——《当幸福来敲门》 克里斯加德纳 Git配置SSH Key 一、什么是Git?二、什么…...

离线环境conda虚拟环境备份迁移--conda pack问题
1.第一步:创建虚拟环境 conda create -n pyenv --clone base 或者 conda create -n pyenv python3.8.5 --offline 命令执行结束,在路径/xxxx/anaconda/envs 下看到pyenv 或者 conda info --envs 查看罗列虚拟环境 2.第二步:打包环境 conda …...

挂载 IK 分词器至 Elasticsearch Docker 容器 - Docker Docker Compose 教程
简介 本博客将讲解如何在 Docker 和 Docker-Compose 中运行 Elasticsearch,并挂载 IK 分词器。 步骤 一、快速运行Elasticsearch:8.1.3 1.首先,我们需要创建一个新的 Docker 网络:"elastic"。这个网络会提供给我们接下来所要创…...

7.6 通俗易懂解读残差网络ResNet 手撕ResNet
一.举例通俗解释ResNet思想 假设你正在学习如何骑自行车,并且想要骑到一个遥远的目的地。你可以选择直接骑到目的地,也可以选择在途中设置几个“中转站”,每个中转站都会告诉你如何朝着目的地前进。 在传统的神经网络中,就好比只…...

robotframework+selenium 进行webui页面自动化测试
robotframework其实就是一个自动化的框架,想要进行什么样的自动化测试,就需要在这框架上添加相应的库文件,而用于webui页面自动化测试的就是selenium库. 关于robotframework框架的搭建我这里就不说了,今天就给大家根据一个登录的实…...

手机突然无法获取ip地址
在日常生活中,我们对手机的依赖越来越大,尤其是在联网方面。然而,有时候我们可能会遇到手机无法获取IP地址的问题,这给我们的正常使用带来了很多不便。当我们的手机无法获得IP地址时,我们将无法连接到互联网或局域网&a…...

C++——关于命名空间
写c项目时,大家常用到的一句话就是: using namespace std; 怎么具体解析这句话呢? 命名冲突: 在c语言中,我们有变量的命名规范,如果一个变量名或者函数名和某个库里面自带的库函数或者某个关键字重名&…...

怎么进行流程图制作?用这个工具制作很方便
怎么进行流程图制作?流程图是一种非常有用的工具,可以帮助我们更好地理解和展示各种复杂的业务流程和工作流程。它可以将复杂的过程简化为易于理解的图形和文本,使得人们更容易理解和跟踪整个流程。因此,制作流程图是在日常工作中…...

【ChatGPT 指令大全】怎么使用ChatGPT来辅助学习英语
在当今全球化的社会中,英语已成为一门世界性的语言,掌握良好的英语技能对个人和职业发展至关重要。而借助人工智能的力量,ChatGPT为学习者提供了一个有价值的工具,可以在学习过程中提供即时的帮助和反馈。在本文中,我们…...

Ubuntu20配置仅主机网络
Ubuntu20配置仅主机网络,使虚拟机与物理机网络联通且配置固定IP 进入终端:vim /etc/netplan/01-network-manager-all.yaml 修改为: network:ethernets:enp0s8:addresses: [192.168.138.108/24]dhcp4: false optional: truegateway4: 192.…...

调整奇数偶数顺序
调整数组使奇数全部都位于偶数前面。 题目: 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。 思路: 1. 给定两个下标left和right&#…...

日志的规范
确定日志级别: 确保你的系统有一个明确的日志级别策略。通常,日志级别包括DEBUG,INFO,WARN,ERROR和FATAL。DEBUG级别的日志记录所有详细信息,适用于开发和调试环境。INFO级别的日志记录常规操作信息&#x…...

Spring AOP(AOP概念,组成成分,实现,原理)
目录 1. 什么是Spring AOP? 2. 为什么要用AOP? 3. AOP该怎么学习? 3.1 AOP的组成 (1)切面(Aspect) (2)连接点(join point) (3&a…...

Android WebView简单应用:构建内嵌网页浏览功能
在现代移动应用开发中,内嵌网页浏览功能是许多应用程序的常见需求。Android平台提供了WebView组件,它允许开发者将网页内容嵌入到应用中,并提供了丰富的功能和定制选项。本文将介绍如何在Android应用中使用WebView组件,帮助您快速…...

并发——乐观锁常见的两种实现方式,乐观锁的缺点
文章目录 乐观锁常见的两种实现方式1. 版本号机制2. CAS算法 乐观锁的缺点1 ABA 问题2 循环时间长开销大3 只能保证一个共享变量的原子操作 乐观锁常见的两种实现方式 乐观锁一般会使用版本号机制或CAS算法实现。 1. 版本号机制 一般是在数据表中加上一个数据版本号version字段…...
Spring 事务管理
目录 1. 事务管理 1.1. Spring框架的事务支持模型的优势 1.1.1. 全局事务 1.1.2. 本地事务 1.1.3. Spring框架的一致化编程模型 1.2. 了解Spring框架的事务抽象(Transaction Abstraction) 1.2.1. Hibernate 事务设置 1.3. 用事务同步资源 1.3.1…...

unity修改单个3D物体的重力的大小该怎么处理呢?
在Unity中修改单个3D物体的重力大小可以通过以下步骤实现: 创建一个新的C#脚本来控制重力: 首先,创建一个新的C#脚本(例如:GravityModifier.cs)并将其附加到需要修改重力的3D物体上。在脚本中,…...

[Qt]FrameLessWindow实现调整大小、移动弹窗并具有Aero效果
说明 我们知道QWidget等设置了this->setWindowFlags(Qt::FramelessWindowHint);后无法移动和调整大小,但实际项目中是需要窗口能够调整大小的。所以以实现FrameLess弹窗调整大小及移动弹窗需求,并且在Windows 10上有Aero效果。 先看一下效果…...

【API生命周期看护】API日落
一、基本概念 在API的整个生命周期中,不可能是永远不变的。功能可能有变动、服务也可能有升级迭代,这个时候对外的能力入口:API自然也需要改变。 一般来说,API的变动是不可以引入兼容性问题的,也即不管做什么变动&am…...

PHP 使用ThinkPHP实现电子邮件发送示例
文章目录 首先我们需要设置我们的邮箱客户端授权,获取到授权码找到我们的邮箱设置去账号中找到这一堆服务,找到后开启smtp服务开启服务后管理服务 接下来需要去下载相应的第三方类库(我这里使用的是PHPMailer)在thinkPHP中封装一下邮件服务类实际调用效果…...

Leetcode-每日一题【剑指 Offer 18. 删除链表的节点】
题目 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 注意:此题对比原题有改动 示例 1: 输入: head [4,5,1,9], val 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调…...

[LINUX使用] top 命令的使用
COLUMNS150 LINES100 top 序号 是否为启动命令 命令模板 详解 1 no vh 帮助 2 yes -d 0.01 0.01秒的间隔刷新top输出 3 no c COMMAND列切换 4 yes -e [k | m | g | t | p] 以何种计量单位显示内存列 k-kb,m-mb,g-gb,t-t…...

通过redis进行缓存分页,通过SCAN扫描进行缓存更新
问题:当我们要添加缓存时,如果我们用了PageHelper时,PageHelper只会对查询语句有效(使用到sql的查询),那么如果我们把查询到的数据都添加到缓存时,就会无法进行分页; 此时我们选择将…...

C#小轮子 Debug,Release,发布模式如何运行不同的代码
文章目录 前言C#运行模式运行模式介绍三种模式区分代码 前言 编译模式和发布模式的代码不一样是非常正常的。比较常见的是数据库不一样。编译测试数据库和发布真实的数据库地址不一样。 C#运行模式 运行模式介绍 运行模式有三种: Debug 不进行优化,…...

【【萌新的STM32 学习-6】】
萌新的STM32 学习-6 BSP 文件夹,用于存放正点原子提供的板级支持包驱动代码,如:LED、蜂鸣器、按键等。 本章我们暂时用不到该文件夹,不过可以先建好备用。 CMSIS 文件夹,用于存放 CMSIS 底层代码(ARM 和 ST…...

“深入解析JVM:探索Java虚拟机的工作原理“
标题:深入解析JVM:探索Java虚拟机的工作原理 摘要:本文将深入解析Java虚拟机(JVM)的工作原理,从字节码到执行过程,从内存模型到垃圾回收机制,逐步剖析JVM的核心组成部分和工作原理。…...