音视频常见播放器框架分析
音视频面试必问:如何设计一个播放器
1.常见播放器框架分析
2.如何解决播放端延迟的问题
3.音视频如何做同步
4.快进、快退、逐帧播放如何实现
音视频开发技术精讲《常见播放器框架分析》
播放器框架
SDL2播放音频
使用SDL播放解码后的音频数据,SDL播放音频数据的流程
如下:
播放器-播放做了哪一些事情?
打开媒体文件
分析媒体流成分
查找相应的解码器
数据读取线程-读取数据包并放入包缓存队列 av_read_frame
解码线程-解码数据包得到数据帧并放入帧缓存队列
audio_ thread 音频解码线程
video_ thread视频解码
音频回调接口-读取音频数据帧
sdl_audio_callback
视频刷新线程-以音频为基准做同步显示图像
video_refresh
播放器-静音和音量控制的本质
音量控制的本质:控制采样点的幅值
静音,将采样点数值置为0
音量+,提升采样点的幅值
音量-,降低采样点的幅值
播放器-静音和音量控制的本质
ffplay控制音量的方式
最大音量:输出解码后的原始数据
静音:即是输出数值为0的数据 toggle_ mute( )
改变音量:通过SDL_ MixAudio改变解码后数据的幅值update_ volume()
比如下图所示(sdI audio_ callback函数内) :
以下是ffplay的方式供参考
播放器-快进快退
快进和快退的本质是seek到某个点重新开始播放。
- 跳转到指定的数据位置avformat_ seek_ file
- 清空packet队列
- 清空frame队列(在ffplay里面是通过serial去控制)
- 清空解码器
seek/快进/快退: stream_ seek()/ avformat_ seek_ file()
seek播放流程
- 左右箭头产生seek事件;
- 将文件seek到指定时间点,清空packet队列,刷新解码器.
- 切换时钟序列(ffplay)
注意:不同的容器(比如MP4和FLV) seek的机制是不一样的。有些容器
seek的时间会快些,有些则相对耗时。这个和容器的存储结构有关系。
FFmpeg/WebRTC/RTMP/RTSP/HLS/RTP播放器-音视频流媒体高级开发 学习资料、视频教程
音视频常见播放器框架分析相关推荐
- C#基于WindowsMediaPlayer实现音视频文件播放器
原文地址:http://www.c-sharpcorner.com/uploadfile/e628d9/playing-audio-and-video-files-using-C-Sharp/ 目的 ...
- Android播放器框架分析之AwesomePlaye
详见:http://blog.csdn.net/mirkerson/article/details/40184479</> 转载于:https://www.cnblogs.com/1995 ...
- ffmpeg播放器 android,Android使用FFmpeg(六)--ffmpeg实现音视频同步播放
关于 准备工作 正文 依旧依照流程图来逐步实现同步播放: 从流程图可以看出,实现同步播放需要三个线程,一个开启解码的装置得到packet线程,然后分别是播放音频和视频的线程.这篇简书是以音频播放为基准 ...
- 高德智慧景区随身听播放器框架设计与实现
简介:我们开发选型并没有采用传统的TTS技术(由文本内容生成机器语音),而是采用了更加通用音频格式(比如mp3),作为讲解的音频输入源,方便讲解者进行二次创作.本文将简单回顾高德智慧景区随身听播放器的 ...
- 【网络通信 -- 直播】音视频常见封装格式 -- MEPG2 TS
[网络通信 -- 直播]音视频常见封装格式 -- MEPG2 TS [1]相关码流基本概念 ES 流(Elementary Stream)基本码流,直接取自编码器的数据流,可以为音频(AAC 等).视 ...
- Qt仿腾讯视频简易播放器 【源码开源】
Qt仿腾讯视频简易播放器1.0.0.0 开源 文章目录 Qt仿腾讯视频简易播放器1.0.0.0 开源 (一).控件介绍 (二).效果图 工程代码 Qt交流群 结尾 (一).控件介绍 Qt仿腾讯视频简易 ...
- 音视频常见概念:软解硬解、IBP帧、GOP、YUV编码
音视频常见概念 软解与硬解 IBP帧 GOP YUV编码 RGB与YUV相互转换 参考资料 软解与硬解 视频解码分为软解和硬解. 所谓"软解"就是通过软件让 CPU 进行视频解码处 ...
- android 播放器架构,Android播放器框架设计系列-1
视频播放器框架已经非常成熟了,但是由于项目需求各种各样,第三方库使用起来需要大量修改定制,并且还会出现各种问题,因此把之前项目中开发的模块提取出来进行完善扩展,写了一套自研的播放框架,并且引入Jetp ...
- 音视频转码器产品规格
音视频转码器产品规格 QQ:16614119 一. 产品简介: 音视频转码器是一套商业级的实时.非实时转码产品.提供常用编码格式之间的转换:支持远程控制转码任务:支持多种输入输出 ...
- android 视频播放器通用的编码框架,Android播放器框架设计系列-1
视频播放器框架已经非常成熟了,但是由于项目需求各种各样,第三方库使用起来需要大量修改定制,并且还会出现各种问题,因此把之前项目中开发的模块提取出来进行完善扩展,写了一套自研的播放框架,并且引入Jetp ...
最新文章
- windows pxe 安装linux,菜鸟学Linux 第103篇笔记 pxe自动化安装linux
- [译]Kotlin + buildSrc:更好的管理Gadle依赖
- 架构师之路 — 部署架构 — 超大规模负载均衡架构演进
- android信鸽推送demo_【厚积薄发】手游推送方案
- 【数据结构与算法】之深入解析“分发糖果”的求解思路与算法示例
- 工业交换机为何要老化测试
- ElasticSearch中的简单查询
- java 同步和异步_知道什么叫同步和异步吗?
- RTP协议与RTCP协议简介
- Hadoop生态系统各组件功能
- leedcode每日一题:860. 柠檬水找零
- 新手指南:到国外域名注册商注册域名
- 前端实现图片验证码效果(数字和字母)
- sysbench 压力测试工具(实战)
- 卸妆·回归:“超级医保局时代“的医院信息化转型
- 图像分类算法优化技巧
- 项目实战第三篇:STM32多功能智能小车硬件选型2(传感器选型篇)
- 基础(一):SCSI硬盘与IDE硬盘有什么区别
- mo管理器初始化python失败_python~异常及初始化包
- Springboot 通过流返回文件