音视频常见播放器框架分析
音视频面试必问:如何设计一个播放器
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 ...
最新文章
- 乔安监控云存储_让数据更安全可用,阿里云存储多项新功能发布
- python使用matplotlib可视化、使用matplotlib可视化scipy.misc图像、自定义使用RdYIBu色彩映射、将不同亮度映射到不同的色彩
- 帆软css修改按钮立体,FineReport 控件的 CSS 样式
- arm linux 显示屏 10钟黑屏
- SimpleUrlHandlerMapping 处理器映射的配置--转
- 爬虫实战:嗅事百科段子多页爬取
- 【刷算法】字符串的全排列
- c语言指针代码大全,C语言之指针(示例代码)
- java 场景处理,最适合使用RxJava处理的四种场景
- SmartUpload 中文API帮助
- java和C#的区别汇总
- 汇编语言程序设计 实验6 分支程序设计
- 2022高压电工考试模拟100题及模拟考试
- 带通滤波器电路图大全(三款带通滤波器电路设计原理图详解)
- Android腾讯信鸽推送
- 【软件工程】瀑布模型的价值
- python的dbf操作
- 创可贴温度计,0排放温室气体:提前领略冬奥会的科技看点
- matlab非线性拟合算检验,matlab非线性拟合求参数怎样确定初始值
- 反射机制-Reflected