音视频项目—基于FFmpeg和SDL的音视频播放器解析(十七)
介绍
在本系列,我打算花大篇幅讲解我的 gitee 项目音视频播放器,在这个项目,您可以学到音视频解封装,解码,SDL渲染相关的知识。您对源代码感兴趣的话,请查看基于FFmpeg和SDL的音视频播放器
如果您不理解本文,可参考我的前一篇文章音视频项目—基于FFmpeg和SDL的音视频播放器解析(十六)
解析
接着上文,我们继续解析 fill_audio_pcm 函数
av_fast_malloc(&is->audio_buf1, &is->audio_buf1_size, out_bytes);
int len2 = swr_convert(is->swr_ctx, out, out_samples, in, frame->nb_samples);
if(len2 < 0){return;
}
is->audio_buf = is->audio_buf1;
is->audio_buf_size = av_samples_get_buffer_size(NULL, is->dst_tgt.channels, len2, is->dst_tgt.fmt, 1);
av_fast_malloc 重新分配 buffer 的大小。
swr_convert 切换采样率
然后给一些变量赋值
}else {audio_size = av_samples_get_buffer_size(NULL, is->dst_tgt.channels, frame->nb_samples, (enum AVSampleFormat) frame->format, 1);av_fast_malloc(&is->audio_buf1, &is->audio_buf1_size, audio_size);is->audio_buf = is->audio_buf1;is->audio_buf_size = audio_size;memcpy(is->audio_buf, frame->data[0], audio_size);
}
如果 swrcontext 没有分配成功,则进行上面的操作。
好了,今天先讲这么多,剩余的下文解析。
欲知后事如何,请听下回分解。
相关文章:
音视频项目—基于FFmpeg和SDL的音视频播放器解析(十七)
介绍 在本系列,我打算花大篇幅讲解我的 gitee 项目音视频播放器,在这个项目,您可以学到音视频解封装,解码,SDL渲染相关的知识。您对源代码感兴趣的话,请查看基于FFmpeg和SDL的音视频播放器 如果您不理解本…...
使用netty实现WebSocket协议通信
服务器与浏览器之间实现通信,一般都是由浏览器发起http请求,服务端对http请求进行响应,要实现服务端主动向浏览器推送数据,一般采用的方案都是websocket主动推送,或者前端实现轮询方式拉取数据,轮询方式多少…...
uniapp开发小程序,包过大解决方案
1、首先和大家说一下 微信小程序 主包限制不能超过2M 分包一共不能超过8M 然后具体解决优化步骤如下, 将主包进行分包 在pages.json 下subPackages里面进行配置分包 分包配置完 配置过的文件都需要进行修改对应的路径 2 、 在运行的时候 一定要勾选 压缩代码 有…...
Go语言中string与byte转换
简介 string与byte的转换是最常见的一种,通常我们会使用强转方式,但其实还有另一种更加高效的方式,本文会演示两种转换方式。 普通转换 func main() {fmt.Println([]byte("abcd"))fmt.Println(string([]byte{1, 2, 3})) }输出 […...
机器学习8:在病马数据集上进行算法比较(ROC曲线与AUC)
ROC曲线与AUC。使用不同的迭代次数(基模型数量)进行 Adaboost 模型训练,并记录每个模型的真阳性率和假阳性率,并绘制每个模型对应的 ROC 曲线,比较模型性能,输出 AUC 值最高的模型的迭代次数和 ROC 曲线。 …...
70. 爬楼梯 --力扣 --JAVA
题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 解题思路 通过对爬楼梯进行分解,爬到当前台阶的方式分为两种,即由上一个台阶通过爬1和上两个台阶爬2,同公…...
体感互动游戏VR游戏AR体感游戏软件开发
随着科技的不断发展,体感互动游戏正逐渐成为游戏行业的一个重要趋势。这类游戏通过利用传感器、摄像头和运动控制器等技术,使玩家能够通过身体动作与游戏进行实时互动,极大地提升了娱乐体验。 1. 游戏设计与互动元素 体感互动游戏的核心在于…...
计算3个点的6种分布在平面上的占比
假设平面的尺寸是6*6,用11的方式构造2,在用21的方式构造3 2 2 2 1 2 2 2 2 2 1 2 2 2 2 2 1 2 2 3 3 3 x 3 3 2 2 2 1 2 2 2 2 2 1 2 2 在平面上有一个点x,11的操作吧平面分成了3部分2a1,2a…...
【香橙派】实战记录1——简介及烧录 Linux 镜像
文章目录 一、简介1、参数2、结构3、其他配件4、下载资料 二、基于 Windows PC 将 Linux 镜像烧写到 TF 卡的方法1、使用 balenaEtcher 烧录 Linux 镜像的方法2、效果 一、简介 Orange Pi Zero 3 香橙派是一款开源的单板卡片电脑, 新一代的arm64开发板,…...
redis之高可用
(一)redis之高可用 1、在集群当中有一个非常重要的指标,提供正常服务的时间的百分比(365天)99.9% 2、redis的高可用的含义更加广泛,正常服务是指标之一,数据容量的扩展、数据的安全性 3、在r…...
使用 Core Tools 在本地开发 Azure Functions
学习模块 使用 Core Tools 在本地创建和运行 Azure Functions - Training | Microsoft Learn 文档 使用 Core Tools 在本地开发 Azure Functions | Microsoft Learn GitHub - Azure/azure-functions-core-tools: Command line tools for Azure Functions 其它 安装适用于 A…...
Java零基础——Spring篇
1.Spring框架的介绍 1.1 传统的项目的架构 在传统的项目中,一般遵循MVC开发模型。 (1) view层与用户进行交互,显示数据或者将数据传输给view层。 (2) 在controller层创建service层对象,调用service层中业务方法。 (3) 在service层创建dao…...
jenkins清理缓存命令
def jobName "yi-cloud-operation" //删除的项目名称 def maxNumber 300 // 保留的最小编号,意味着小于该编号的构建都将被删除 Jenkins.instance.getItemByFullName(jobName).builds.findAll { it.number < maxNumber }.each { it.delet…...
什么是深度学习
一、深度学习的发展历程 1.1 Turing Testing (图灵测试) 图灵测试是人工智能是否真正能够成功的一个标准,“计算机科学之父”、“人工智能之父”英国数学家图灵在1950年的论文《机器会思考吗》中提出了图灵测试的概念。即把一个人和一台计算机分别放在两个隔离的房…...
数字IC基础:有符号数和无符号数加、减法的Verilog设计
相关阅读 数字IC基础https://blog.csdn.net/weixin_45791458/category_12365795.html?spm1001.2014.3001.5482 本文是对数字IC基础:有符号数和无符号数的加减运算一文中的谈到的有符号数加减法的算法进行Verilog实现,有关算法细节请阅读原文࿰…...
2023年11月25日(星期六)骑行三家村
2023年11月25日 (星期六) 骑行三家村(赏红杉林),早8:30到9:00, 大观公园门囗集合,9:30准时出发 【因迟到者,骑行速度快者,可自行追赶偶遇。】 偶遇地点:大观公园门口集合 ,家住东,南…...
.skip() 和 .only() 的使用
.skip() 和 .only() 的使用 说明 在做自动化测试中,跳过执行某些测试用例,或只运行某些指定的测试用例,这种情况是很常见的Cypress中也提供了这种功能 如何跳过测试用例 通过describe.skip() 或者 context.skip() 来跳过不需要执行的测试…...
如何证明特征值的几何重数不超过代数重数
设 λ 0 \lambda_0 λ0 是 A A A 的特征值,则 λ 0 \lambda_0 λ0 的代数重数 ≥ \geq ≥ 几何重数 证明 假设 A A A 的特征值 λ 0 \lambda_0 λ0 对应的特征向量有 q 维,记为 α 1 , . . . , α q \alpha_1, ... , \alpha_q α1,...,…...
Android修行手册-POI操作Excel文档
Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…...
浅析教学型数控车床使用案例
教学型数控车床是一种专为教学和培训设计的机床,它具有小型化、高精度和灵活性的特点,可以作为学校和技术学院的培训机器。下面是一个使用案例,以展示教学型数控车床在教学实训中的应用。 案例背景: 某职业技术学院的机械工程专业…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...
