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

音视频项目—基于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 没有分配成功,则进行上面的操作。

好了,今天先讲这么多,剩余的下文解析。

欲知后事如何,请听下回分解。

http://www.lryc.cn/news/239053.html

相关文章:

  • 使用netty实现WebSocket协议通信
  • uniapp开发小程序,包过大解决方案
  • Go语言中string与byte转换
  • 机器学习8:在病马数据集上进行算法比较(ROC曲线与AUC)
  • 70. 爬楼梯 --力扣 --JAVA
  • 体感互动游戏VR游戏AR体感游戏软件开发
  • 计算3个点的6种分布在平面上的占比
  • 【香橙派】实战记录1——简介及烧录 Linux 镜像
  • redis之高可用
  • 使用 Core Tools 在本地开发 Azure Functions
  • Java零基础——Spring篇
  • jenkins清理缓存命令
  • 什么是深度学习
  • 数字IC基础:有符号数和无符号数加、减法的Verilog设计
  • 2023年11月25日(星期六)骑行三家村
  • .skip() 和 .only() 的使用
  • 如何证明特征值的几何重数不超过代数重数
  • Android修行手册-POI操作Excel文档
  • 浅析教学型数控车床使用案例
  • 图论 2023.11.20
  • 思福迪 运维安全管理系统 test_qrcode_b 远程命令执行漏洞
  • electron项目开机自启动
  • 2023年约特干故城夜间演艺《万方乐奏有于阗》完美谢幕
  • 学习网络编程No.10【深入学习HTTPS】
  • ubuntu下docker环境使用GPU配置
  • 渗透工具---BurpSuite 插件开发之HelloWorld
  • 2216. 美化数组的最少删除数
  • 竞赛 题目:基于深度学习的人脸表情识别 - 卷积神经网络 竞赛项目 代码
  • 基于安卓android微信小程序的好物分享系统
  • 【Spring Boot】使用WebSocket协议完成来单提醒及客户催单功能