视频知识整理

news2024/11/19 17:48:08

视频播放器原理

视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:

解协议:将流媒体协议的数据,解析为标准的相应的封装格式数据

解封装:将封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据

解码:将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据

音视频同步:根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。

如果播放本地文件则不需要解协议,为以下几个步骤:解封装,解码视音频,视音频同步。他们的过程如图所示。

视频格式:有机组合视频数据、多音轨和多字幕为一个文件。

区分封装格式和编码格式,主要目的是保证一定清晰度的前提下缩小存储空间。

2 下载与流媒体区别

当视频流式传输以在用户设备上播放时,实际文件不会下载到设备或硬盘驱动器上。而是,视频数据包一次传输几个,因此视频会分部分加载,而不是一次性加载。

任何形式的媒体消费,只要内容以小块数据包的形式传输给最终用户,而不是首先完全下载,都可以被视为构成流媒体。

流媒体允许用户连续观看此类内容并享受无缝的观看体验。与首先下载整个媒体文件不同,内容以数据包的形式一次传输几秒钟,然后存储在用户的设备上以供远程播放。

当视频下载到用户的设备上时,将复制整个文件。只有下载完整个文件后,视频才能开始播放。

3 主流封装格式特点 

格式特点

特殊说明

MKV

不是一种压缩格式

能在一个文件中容纳无限数量的视频、音频、图片或字幕轨道

MOV

保持较小文件大小情况下,能提供高质量的视频压缩

支持无损压缩,即可以保存原始视频数据,保证最高的视觉质量

文件大、兼容性差,可编辑效果好

支持多音轨,支持字幕、章节标记、元数据等功能,丰富了视频的交互性和信息展示

苹果拍摄
MP4

国际通用格式

压缩比高,能保证图像质量情况下文件小

兼容性强,在PR里用MP4格式进行剪辑比较稳定

WMV

压缩比很高,文件小,视频质量良好

支持流媒体技术,可在线播放,流畅度好

播放使用的软件较少,播放时需要占用较大的CPU

微软专有格式,需要许可
AVI

视频清晰,文件大,

允许音视频同步回放。

播放一般需要插件,若插件不匹配,只能播放图像,却没声音。

大多是相机拍摄,时间较短
FLV文件极小、加载速度极快
ts

主要用于直播的码流结构,具有很好的容错能力(.ts、.mpg或.mpeg)

主要特性包括多路复用、错误恢复和时间戳等

体积大(存储和带宽)

        多路复用使其能同时传输多路音视频流

        强大的错误检测和纠正机制保障数据传输的稳定性

        时间戳则有助于实现内容的同步播放

从视频流的任一片段开始都可以独立解码(某些格式前面一段cut掉整个文件无法解码)

TS流中不包含快速seek的机制,只能通过协议层实现seek。HLS协议基于TS流实现的。

除了AVI之外,其他封装格式都支持流媒体,即可以“边下边播”。有些格式更“万能”一些,支持的视音频编码标准多一些,比如MKV。而有些格式则支持的相对比较少,比如说RMVB。

主要特点区分:流传输、体积、兼容性、高清晰。

参考:[总结]视音频编解码技术零基础学习方法_雷霄骅博士的博客学编解码-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1594151.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ESP32使用MAX98357播放音频】

【ESP32使用MAX98357播放音频】 1. 前言2. 先决条件2.1 硬件准备2.2 软件准备2.3 接线3. 核心代码3.1 驱动实现3.2 代码解析4. 播放音乐5. 结论1. 前言 在物联网和智能家居领域,音频播放功能越来越受到重视。ESP32作为一款功能强大的微控制器,结合MAX98357音频放大器模块,可…

Java入门教程||Java 变量

Java 变量 Java教程 - Java变量 变量由标识符,类型和可选的初始化程序定义。变量还具有范围(可见性/生存期)。 Java变量类型 在Java中,必须先声明所有变量,然后才能使用它们。变量声明的基本形式如下所示&#xff1…

CVPR 2024 | 仅需文本或图像提示,新框架CustomNeRF精准编辑3D场景

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 美图影像研究院(MT Lab)与中国科学院信息工程研究所、北京航空航天大…

AutoGen - Build Powerful AI Agents with ChatGPT/GPT-4

原文:AutoGen - Build Powerful AI Agents with ChatGPT/GPT-4 | MLExpert - Crush Your Machine Learning interview In this tutorial, well explore AutoGen1, a Microsoft library that lets you create LLM applications with agents. These agents can communicate and …

Qt控件---输入类

文章目录 QLineEdit(单行输入)设置验证器 QTextEdit(多行输入)QComboBox(下拉框)通过读取文件设置条目 QSpinBox & QDoubleSpinBox(数字微调框)QDateEdit & QTimeEdit &…

十款组装台式电脑可能会用到的主板,看下有没有适合你的

序言 组装台式电脑,还是升级老化的电脑?以下是你需要了解的有关选择合适主板的所有信息。 如果说内存、显卡和 CPU 是 PC 充满活力的四肢,是完成工作和启动你喜爱的游戏的部件,那么主板就是骨架和结缔组织,甚至是灵魂。 可以肯定的是,其他组件在决定 PC 的整体性能和功…

golang 使用栈模拟计算器

思路: // Author sunwenbo // 2024/4/12 16:51 package mainimport ("errors""fmt""strconv" )// 使用数组来模拟一个栈的应用 type Stack struct {MaxTop int //表示栈最大可以存放数的个数Top int //表示栈底&#xff…

【Java集合进阶】数据结构(二又树,二又查找树,平衡二又树)

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 …

java项目实战之图书管理系统(1)

✅作者简介:大家好,我是再无B~U~G,一个想要与大家共同进步的男人😉😉 🍎个人主页:再无B~U~G-CSDN博客 1.背景 图书管理系统是一种用于管理图书…

MongoDB 初识

介绍 MongoDB是一种开源的文档型数据库管理系统,它使用类似于JSON的BSON格式(Binary JSON)来存储数据。与传统关系型数据库不同,MongoDB不使用表和行的结构,而是采用集合(Collection)(Mysql表)和…

Linux 快问快答

如果对于找 Java 后端开发的话,我感觉会这几个差不多了,面试官应该不会问的这么详细吧。一般就问问 Linux 的几个常用的命令,然后做一些简单的性能排查就好了。如果面试被问到另外的问题,那我再补充进来,现在先掌握这么…

979: 输出利用先序遍历创建的二叉树的后序遍历序列

解法&#xff1a; #include<iostream> using namespace std; struct TreeNode {char val;TreeNode* left;TreeNode* right;TreeNode(char c) :val(c), left(NULL), right(NULL) {}; }; TreeNode* buildTree() {char c;cin >> c;if (c #) {return NULL;}TreeNode*…

CTF之comment

网站的登录框里有提示 账号&#xff1a;zhangwei 密码&#xff1a;zhangwei***&#xff08;后三位要自己猜&#xff09; 用burpsuit抓包爆破发现密码为zhangwei666 进去后就一个留言榜&#xff08;目前没发现怎么用&#xff09; 扫一下网站发现git泄露 1.下载 进入root用户&…

964: 数细胞

样例&#xff1a; 解法&#xff1a; 1.遍历矩阵 2.判断矩阵[i][j]&#xff0c;若是未标记细胞则遍历相邻所有未标记细胞并标记&#xff0c;且计数 实现&#xff1a;遍历相邻所有未标记细胞 以DFS实现&#xff1a; function dfs(当前状态) {if (终止条件) {}vis[标记当前状…

构建动态交互式H5导航栏:滑动高亮、吸顶和锚点导航技巧详解

功能描述 产品要求在h5页面实现集锚点、吸顶及滑动高亮为一体的功能&#xff0c;如下图展示的一样。当页面滑动时&#xff0c;内容区域对应的选项卡高亮。当点击选项卡时&#xff0c;内容区域自动滑动到选项卡正下方。 布局设计 css 布局 为了更清晰的描述各功能实现的方式&…

CentOS 7安装Nginx

说明&#xff1a;本文介绍如何在CentOS 7操作系统中安装Nginx 下载安装 首先&#xff0c;去官网上下载Nginx压缩包&#xff0c;官网地址&#xff1a;https://nginx.org/en/download.html&#xff0c;我这里下载稳定版1.24.0&#xff1b; 上传到云服务器上&#xff0c;解压&am…

数据分析案例(三):基于RFM分析的客户分群

实验2 基于RFM分析的客户分群 Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢…

读书笔记:高效能人士的七个习惯

前言 恐惧感和不安全感 现代社会&#xff0c;太多的人饱受恐惧感的折磨。他们恐惧将来&#xff0c;恐惧失业&#xff0c;恐惧无力养家。这种弱点&#xff0c;常常助长了一种倾向&#xff1a;无论在工作时&#xff0c;还是回到家中&#xff0c;都倾向于零风险的生活&#xff0…

CMMI认证是什么?如何确定CMMI认证的目标和范围

CMMI&#xff08;Capability Maturity Model Integration&#xff09;认证是一种用于评估和改进组织软件和项目管理过程的框架。它由美国国防部软件工程所&#xff08;SEI&#xff09;开发&#xff0c;旨在帮助组织提高其软件和项目管理的成熟度水平。 CMMI认证的意义在于&…

Python求利率

要求 编写程序计算在给定利率、指定年数的情况下投资的未来值。这个计算公式如下。 使用文本域输入投资额、年份和利率。当用户单击“calculate”按钮时&#xff0c;在文本域中显示未来的投资值&#xff0c;如图所示。 代码实现 import tkinter as tkdef calculate():amou…