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

音视频项目—基于FFmpeg和SDL的音视频播放器解析(十六)

介绍

在本系列,我打算花大篇幅讲解我的 gitee 项目音视频播放器,在这个项目,您可以学到音视频解封装,解码,SDL渲染相关的知识。您对源代码感兴趣的话,请查看基于FFmpeg和SDL的音视频播放器

如果您不理解本文,可参考我的前一篇文章音视频项目—基于FFmpeg和SDL的音视频播放器解析(十五)

解析

接着上文,我们继续解析函数 fill_audio_pcm 。

is->swr_ctx = swr_alloc_set_opts(NULL, is->dst_tgt.channel_layout,(enum AVSampleFormat)is->dst_tgt.fmt,is->dst_tgt.freq,frame->channel_layout,(enum AVSampleFormat)frame->format,frame->sample_rate,0, NULL);
if(!is->swr_ctx || swr_init(is->swr_ctx) < 0){swr_free((SwrContext**)(&is->swr_ctx));return;
}

swr_alloc_set_opts 分配 SwrContext。

如果没分配或者初始化 swrcontext 失败,则释放并返回。

if(is->swr_ctx){const uint8_t** in = (const uint8_t**) frame->extended_data;uint8_t** out = &is->audio_buf1;int out_samples = frame->nb_samples * is->dst_tgt.freq / frame->sample_rate + 256;int out_bytes = av_samples_get_buffer_size(NULL, is->dst_tgt.channels, out_samples, is->dst_tgt.fmt, 0);if(out_bytes < 0){return;
}

如果 swrcontext 分配且初始化成功,并赋值。

然后通过 av_samples_get_buffer_size,获取 buffer_size,如果小于 0,则返回。

好了,今天就解析到这里。

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

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

相关文章:

  • Elasticsearch文档操作
  • 聊一聊go的单元测试(goconvey、gomonkey、gomock)
  • Positive Technologies 利用 PT Cloud Application Firewall 保护中小型企业的网络资源
  • 深入解析序列模型:全面阐释 RNN、LSTM 与 Seq2Seq 的秘密
  • vue项目本地开发构建速度优化 hard-source-webpack-plugin
  • 燕之屋通过港交所聆讯:苦战IPO十余年,黄健等人提前精准套现
  • 【51单片机系列】C51基础
  • openssl1.0.2版本Windows安装问题
  • 【Java 进阶篇】Ajax 实现——原生JS方式
  • Spring Cloud Stream实践
  • 高精度算法【Java】(待更新中~)
  • 说一说HTTP1.0、1.1、2.0版本区别和优化
  • 51.Sentinel微服务保护
  • 【Java 进阶篇】Ajax 实现——JQuery 实现方式 `ajax()`
  • I.MX6ULL开发笔记(一)——环境搭建、镜像烧录、网络连接
  • Javaweb之Ajax的详细解析
  • java基于RestTemplate的微服务发起http请求
  • django理解02 前后端分离中的问题
  • 设计模式-迭代器模式-笔记
  • 【数据结构】C语言实现队列
  • 牛客——OR36 链表的回文结构(C语言,配图,快慢指针)
  • Docker build 技巧 —— 筑梦之路
  • 2 Redis的高级数据结构
  • Hive默认分割符、存储格式与数据压缩
  • update_engine-FilesystemVerifierAction和PostinstallRunnerAction
  • 深度学习乳腺癌分类 计算机竞赛
  • 【Python百宝箱】掌握Python Web开发三剑客:Flask、Django、FastAPI一网打尽
  • 【人工智能时代的刑法体系与责任主体概述】
  • 透视maven打包编译正常,intellj idea编译失败问题的本质
  • npm报错