播放器播放视频流程
image.png
流媒体

所谓流媒体是指采用流式传输的方式在Internet/Intranet播放的媒体格式,如音频、视频或多媒体文件。流媒体在播放前并不下载整个文件,只将开始部分内容存入内存,在计算机中对数据包进行缓存并使媒体数据正确地输出。流媒体的数据流随时传送随时播放,只是在开始时有些延迟。

流媒体协议

服务器和客户端之间通信遵守的协议,如RTP/RTCP/RTSP/RTMP/MMS/HLS
备注:播放本地视频不需要解协议

封装/解封装(demux/mux)

把视频码流和音频码流按照一定的格式存储在一个文件中
封装格式:mp4、rmvb、avi、flv、mkv等

image.png
视频编码/解码(code/encode)

视频编码是一种压缩标准,主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间。

image.png

对比:MPEG4(MPEG-4 && MP4
MPEG4(MPEG-4)是一种编码标准(code),mp4是一种封装格式(mux)

对比:AVC & SVC & H.264
AVC是H.264的别名,advanced video code两者相等。
SVC是AVC的扩展模式,全程为Scalable video code,翻译为可分级编码

可分级编码

H.264 SVC以H.264 AVC视频编解码器标准为基础,利用了AVC编解码器的各种高效算法工具,在编码产生的编码视频时间上(帧率)、空间上(分辨率)可扩展,并且是在视频质 量方面可扩展的,可产生不同帧速率、分辨率或质量等级的解码视频。

H.264 SVC通过在GOP(编码图像组)中设置可丢弃的参考帧实现时间上的可分级。0-16视频帧构成全帧率视频,除T3标志外的所有视频帧构成了半帧率视频,所有 T0标志和T2标志的视频帧构成了1/3帧率视频,所有 只是T0标志的视频帧构成了1/4帧率视频。

SVC 时间可分级、SVC 空间可分级
H.264 SVC通过在在编码码流嵌入具有相关性的多个不同分辨率的子流实现空间上的可分级。上层所有的视频帧构成了高分辨率视频,下层所有的视频帧构成了低分辨率视频,为此,具备H.264 SVC编码的视频会议系统,在保证高效的视频压缩性能的基础上,视频广播端可以通过一次编码产生具有不同帧率、分辨率的视频压缩码流,以适应不同网络带 宽、不同的显示屏幕和终端解码能力的应用需求,从而有效地避免了视频会议系统中MCU上复杂而昂贵的转码。

音频编码

主要作用是将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量。音频编码也是互联网视音频技术中一个重要的技术。但是一般情况下音频的数据量要远小于视频的数据量,因而即使使用稍微落后的音频编码标准,而导致音频数据量有所增加,也不会对视音频的总数据量产生太大的影响。高效率的音频编码在同等的码率下,可以获得更高的音质。

image.png

IOS-播放器开发(1)-视频基本原理相关推荐

  1. iOS 视频播放器开发

    需求设计 做一个小学生教育辅导视频播放器. 参考小猿搜题视频播放器 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L0GsyFSt-1675164972791)(htt ...

  2. 基于VLC的播放器开发

    VLC的C++封装 因为工作需要,研究了一段时间的播放器开发,如果从头开始做,可以学习下FFmpeg(http://www.ffmpeg.org/),很多播放器都是基于FFmpeg开发的,但是这样工作 ...

  3. 《Android FFmpeg 播放器开发梳理》第一章 播放器初始化与解复用流程

    <Android FFmpeg 播放器开发梳理>: 第零章 基础公共类的封装 播放器初始化与解复用流程 这一章,我们来讲解播放器解复用(从文件中读取数据包)的流程.在讲解播放器的读数据包流 ...

  4. 微信公众号教程(18)微信音乐播放器开发 上

    微信音乐播放器开发 原文:http://www.cnblogs.com/imaker/p/6252638.html 一.Html5的audio组件   HTML5 有两个很炫的元素,就是Audio和 ...

  5. 搭建webassembly网页播放器(五)---网页播放器开发

    在前面的章节中,我们解决emcc环境以及使用emcc来编译ffmpeg得到网页开发中可以使用的js库,本章节,我们就来实现一个简单的播放器. 视频课程以及源码下载: https://edu.csdn. ...

  6. DC音乐播放器开发日记

    DC音乐播放器开发日记 MediaPlayer介绍: MediaPlayer的状态转换图也表征了它的生命周期,搞清楚这个图可以帮助我们在使用MediaPlayer时考虑情况更周全,写出的代码也更具健壮 ...

  7. MFC+DuiVision结合VLC播放器开发直播客户端

    MFC+DuiVision结合VLC播放器开发直播客户端 说明:windows 10 VS2015社区版 关键字:c++ VisualStudio DuiVision VLC播放器 开发这个视频播放器 ...

  8. 从零实现简易播放器-0.音视频基本概念

    音视频基本概念 作者:史正 邮箱:shizheng163@126.com 如有错误还请及时指正 如果有错误的描述给您带来不便还请见谅 如需交流请发送邮件,欢迎联系 我的csdn : https://b ...

  9. 【Android 高性能音频】Oboe 播放器开发 ( 为 OpenSL ES 配置参数以获得最佳延迟 | Oboe 音频流 | Oboe 音频设备 )

    文章目录 一.获得最佳延迟 二.Oboe 音频流 三.Oboe 音频设备 Oboe GitHub 主页 : GitHub/Oboe ① 简单使用 : Getting Started ② Oboe 全指 ...

  10. 【基于Python+tkinter的音乐播放器开发-哔哩哔哩】 https://b23.tv/eG2TwOL

    [基于Python+tkinter的音乐播放器开发-哔哩哔哩] https://b23.tv/eG2TwOL https://b23.tv/eG2TwOL

最新文章

  1. 机器人越像人越好?被机器人盯着会变『蠢』
  2. tensorflow随笔-读写数据tf.data
  3. 和硕看重物联网大势 程建中:从擅长领域出发
  4. 为什么我从 Git Flow 开发模式切换到了 Trunk Based 开发模式?
  5. 智慧交通day02-车流量检测实现14:代码汇总+问题修正
  6. nacos 本地测试_Nacos注册中心落地实践
  7. 操作系统:进程间的相互作用(多线程基础)
  8. 微软python免费课程_微软再推免费在线Python教程 面向数据科学和机器学习初学者...
  9. http://zhcsmx22.blog.51cto.com
  10. 命令行打印二维码-pyqrcode
  11. C++11 关键字override和final
  12. php 抽象工厂模式,php设计模式(五)抽象工厂模式
  13. xp 64位系统下载
  14. 详解电子名片不一样的展示推广功能
  15. 代码阅读工具使用入门
  16. [转帖] “王者对战”之 MySQL 8 vs PostgreSQL 10
  17. Linux常见压缩工具
  18. 【读书笔记】算法的乐趣
  19. 个体工商户注册后,都需做哪些事呢?这3点很重要
  20. 戏说PUBER之----LULU与绿猪的故事(2)

热门文章

  1. java中Field中的方法,解析Java中的Field类和Method类
  2. ParNew垃圾回收器总结
  3. ElasticSearch全文搜索引擎之整合SpringBoot篇
  4. 面试题之Servlet工作原理
  5. 《黑客大曝光:移动应用安全揭秘及防护措施》一3.1 了解iPhone
  6. Selector.wakeup实现注记
  7. [BZOJ 3622]已经没有什么好害怕的了(Dp+容斥原理)
  8. Win7如何硬盘安装Ubuntu实现双系统
  9. thymeleaf模板的应用
  10. 使用telnet 方式管理交换机