视频知识整理

视频播放器原理

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

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

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

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

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

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

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

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

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博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity之PlayableGraph实现动画的正播和倒播

内容将会持续更新,有错误的地方欢迎指正,谢谢! Unity之PlayableGraph实现动画的正播和倒播 TechX 坚持将创新的科技带给世界! 拥有更好的学习体验 —— 不断努力,不断进步,不断探索 TechX —— 心探索、心进取&am…

Java基于微信小程序的在线投稿小程序(V2.0),附源码

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…

深入浅出 -- 系统架构之日均亿级吞吐量的网关架构(DNS轮询解析)

在前篇关于《Nginx》的文章中曾经提到:单节点的Nginx在经过调优后,可承载5W左右的并发量,同时为确保Nginx的高可用,在文中也结合了Keepalived对其实现了程序宕机重启、主机下线从机顶替等功能。 但就算实现了高可用的Nginx依旧存在…

vivado 在硬件中调试逻辑设计

在硬件中调试逻辑设计 设计中包含调试核后 , 您可使用运行时间逻辑分析器功能来对硬件中的设计进行调试。 使用 Vivado Logic Analyzer 进行设计调试 Vivado Logic Analyzer 功能可用于与设计中运行的新 ILA 、 VIO 和 JTAG-to-AXI Master 调试核进行交互。…

LRU缓存结构【C语言】

#include <stdio.h> #include <stdlib.h>//双链表节点结构 typedef struct Node {int key;int value;struct Node* pre;struct Node* next; } Node;//LRU结构 typedef struct {int capacity;struct Node* head;struct Node* tail;struct Node** cache; }LRUCache;…

TCP/IP 协议栈在 Linux 内核中的 运行时序分析

1、Linux内核概述 1.1 Linux内核结构 一个完整的Linux内核一般由5部分组成&#xff0c;它们分别是内存管理、进程管理、进程间通信、bai虚拟文件系统和网络接口。 1、内存管理 内存管理主要完成的是如何合理有效地管理整个系统的物理内存&#xff0c;同时快速响应内核各个子…

顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-回铃音补偿

文章目录 前言联系我们解决问题操作步骤 前言 回铃音&#xff1a; 当别人打电话给你时&#xff0c;你的电话响铃了&#xff0c;而他听到的声音叫做回铃音。回铃音是被叫方向主叫方传送&#xff0c;也是彩铃功能的基础。我们平时打电话听到的“嘟 嘟 嘟 嘟”的声音&#xff0c;就…

4-云原生监控体系-Grafana-基本使用

1. 介绍 使用Grafana&#xff0c;您可以通过漂亮、灵活的仪表板创建、探索和共享所有数据。查询、可视化、提醒和理解您的数据&#xff0c;无论数据存储在何处。 图片出处&#xff1a; https://grafana.com/grafana/ 官方网站 2. 界面介绍 Connections 可以配置数据源&#x…

物联网实战--驱动篇之(七)RTC时钟(DS1302)

目录 一、RTC简介 二、DS1302介绍 三、初始化 四、字节读写 五、功能函数 一、RTC简介 实时时钟&#xff0c;简称RTC&#xff0c;这个在STM32的外设里也有&#xff0c;不过STM32F1系列的RTC实际上只有一个计数器功能&#xff0c;如果需要年月日要自己写软件计算 &#xff…

【应用】SpringBoot-自动配置原理

前言 本文简要介绍SpringBoot的自动配置原理。 本文讲述的SpringBoot版本为&#xff1a;3.1.2。 前置知识 在看原理介绍之前&#xff0c;需要知道Import注解的作用&#xff1a; 可以导入Configuration注解的配置类、声明Bean注解的bean方法&#xff1b;可以导入ImportSele…

MySQL——全文检索

不是所有的数据表都支持全文检索 MySQL支持多种底层数据库引擎&#xff0c;但是并非所有的引擎支持全文检索 &#xff0c;目前最常用引擎是是MyISAM和InnoDB&#xff1b;前者支持全文检索&#xff0c;后者不支持。 booolean模式操作符 实验&#xff1a; 表productnotes &…

LVGL9.1移植STM32F103C8T6花屏问题解决

这一次的话算是花了一下午差不多解决了一个问题&#xff0c;具体我是用 stm32f103c8t6(20k RAM, 128k Flash) 移植的LVGL库(屏幕是240x240的st7789, 因为RAM的buf不太够所以缩小了显示面积) 直接切入主题: 如果出现花屏问题&#xff0c; 这个问题出在你自定义编写的lv_set_flu…

Ingress配置优化和追踪

介绍 在传统的业务系统中&#xff0c;应用微服务化后&#xff0c;需要一个统一的入口来将各个服务进行整合&#xff0c;这个入口可以是Nginx、Apache、HAproxy等等。而在K8s中&#xff0c;同样需要一个工具来将应用的各个service整合到统一的入口&#xff0c;这个工具就叫Ingr…

计算机网络 虚拟局域网划分

一、实验内容 1、分别把交换机命名为SWA、SWB 2、划分虚拟局域网 valn &#xff0c;并将端口静态划分到 vlan 中 划分vlan 方法一&#xff1a;在全局模式下划分vlan&#xff0c;在SWA交换机上创建三个vlan&#xff0c;分别为vlan2&#xff0c;vlan3&#xff0c;vlan4。 方…

C++/QT 医院信息管理系统

一、项目介绍 &#xff08;1&#xff09;管理员、居民、医生三个角色登录&#xff1b;居民可注册账号登录&#xff0c;医生由管理员添加&#xff0c;管理员权限最高 &#xff08;2&#xff09;管理员&#xff1a; 模块一&#xff1a;信息管理&#xff08;医生信息管理、医院…

VUE typescript 调用stompjs[Rabbit MQ]

npm拉下来最新的2.3.9版本&#xff0c;发现一些原来Js代码已经不能用了。顺便解读了下最新定义的内容 // <reference types"node" />export const VERSIONS: {V1_0: string;V1_1: string;V1_2: string;supportedVersions: () > string[]; };export class C…

kail渗透工具之nmap的使用方法

准备工作&#xff1a;开启两台虚拟机和一台Windows主机 kail Linux攻击机&#xff1a;192.168.80.131 red hat靶机&#xff1a;192.168.80.129 Windows主机&#xff1a;192.168.252.42 1、nmap扫描工具的简介 nmap是用来探测计算机网络上的主机和服务的一种安全扫描器。为了绘…

蓝桥杯嵌入式(G431)备赛笔记——第十一届第二场真题

关键代码&#xff1a;、 user.c: u32 adc_tick 0; // 定义一个无符号32位整型变量 adc_tick&#xff0c;用于记录上次ADC处理的时间戳 u32 r37_value 0; // 定义一个无符号32位整型变量 r37_value&#xff0c;用于存储ADC通道2的采样值 u32 r38_value 0; // 定义一个无符号…

用Python给PDF文档设置背景色或背景图

PDF作为一种跨平台、高保真的文件格式被广泛应用&#xff0c;尤其在报告、手册、电子书、合同等场景中&#xff0c;其重要性不言而喻。然而&#xff0c;在满足基本内容展示需求的同时&#xff0c;为了增强视觉效果&#xff0c;提升阅读体验&#xff0c;或者出于品牌标识、企业形…

IDE Eval Reset —— idea 重置试用期插件安装

idea 重置试用期插件安装 一、在线安装&#xff1a; 1、打开IntelliJ IDEA 2、file—> setting —> plugins 添加三方插件库 点击后&#xff0c;跳出弹框点击号&#xff0c;添加图中的网址 https://plugins.zhile.io3、搜索 IDE Eval Reset &#xff0c;安装插件 4…