音视频面试必问:如何设计一个播放器

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播放器-音视频流媒体高级开发 学习资料、视频教程

音视频常见播放器框架分析相关推荐

  1. C#基于WindowsMediaPlayer实现音视频文件播放器

    原文地址:http://www.c-sharpcorner.com/uploadfile/e628d9/playing-audio-and-video-files-using-C-Sharp/ 目的 ...

  2. Android播放器框架分析之AwesomePlaye

    详见:http://blog.csdn.net/mirkerson/article/details/40184479</> 转载于:https://www.cnblogs.com/1995 ...

  3. ffmpeg播放器 android,Android使用FFmpeg(六)--ffmpeg实现音视频同步播放

    关于 准备工作 正文 依旧依照流程图来逐步实现同步播放: 从流程图可以看出,实现同步播放需要三个线程,一个开启解码的装置得到packet线程,然后分别是播放音频和视频的线程.这篇简书是以音频播放为基准 ...

  4. 高德智慧景区随身听播放器框架设计与实现

    简介:我们开发选型并没有采用传统的TTS技术(由文本内容生成机器语音),而是采用了更加通用音频格式(比如mp3),作为讲解的音频输入源,方便讲解者进行二次创作.本文将简单回顾高德智慧景区随身听播放器的 ...

  5. 【网络通信 -- 直播】音视频常见封装格式 -- MEPG2 TS

    [网络通信 -- 直播]音视频常见封装格式 -- MEPG2 TS [1]相关码流基本概念 ES 流(Elementary Stream)基本码流,直接取自编码器的数据流,可以为音频(AAC 等).视 ...

  6. Qt仿腾讯视频简易播放器 【源码开源】

    Qt仿腾讯视频简易播放器1.0.0.0 开源 文章目录 Qt仿腾讯视频简易播放器1.0.0.0 开源 (一).控件介绍 (二).效果图 工程代码 Qt交流群 结尾 (一).控件介绍 Qt仿腾讯视频简易 ...

  7. 音视频常见概念:软解硬解、IBP帧、GOP、YUV编码

    音视频常见概念 软解与硬解 IBP帧 GOP YUV编码 RGB与YUV相互转换 参考资料 软解与硬解 视频解码分为软解和硬解. 所谓"软解"就是通过软件让 CPU 进行视频解码处 ...

  8. android 播放器架构,Android播放器框架设计系列-1

    视频播放器框架已经非常成熟了,但是由于项目需求各种各样,第三方库使用起来需要大量修改定制,并且还会出现各种问题,因此把之前项目中开发的模块提取出来进行完善扩展,写了一套自研的播放框架,并且引入Jetp ...

  9. 音视频转码器产品规格

    音视频转码器产品规格 QQ:16614119 一.            产品简介: 音视频转码器是一套商业级的实时.非实时转码产品.提供常用编码格式之间的转换:支持远程控制转码任务:支持多种输入输出 ...

  10. android 视频播放器通用的编码框架,Android播放器框架设计系列-1

    视频播放器框架已经非常成熟了,但是由于项目需求各种各样,第三方库使用起来需要大量修改定制,并且还会出现各种问题,因此把之前项目中开发的模块提取出来进行完善扩展,写了一套自研的播放框架,并且引入Jetp ...

最新文章

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

热门文章

  1. 【新冠肺炎】SIR模型预测与数据分析之代码篇
  2. 前台收银系统授权服务器未开启,佳为软件操作大全 佳为收银系统
  3. 最新黑马软件测试全套视频教程
  4. 计算机机房的荷载,​计算机信息中心机房建设标准
  5. 中海达数据怎么转rinex_GPS_OEM原始数据向Rinex格式转换的方法[1]
  6. Elsevier LaTeX 模板
  7. WebStorm破解激活
  8. 基于java的论文查重系统设计
  9. 天津卫视宣传德云社、祁隆之前,和合国际已酝酿收购《借我星光》
  10. 数学建模之常见的优化模型