当前位置: 首页 > news >正文

视频知识整理

视频播放器原理

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

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

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

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

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

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

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

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

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

相关文章:

视频知识整理

1 视频播放器原理 视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤: 解协议:将流媒体协议的数据,解析为标准的相应的封装格式数据 解封装:将封装格式的数据,分离成为音频流压缩编码数据和视…...

【2024】使用Rancher管理k8s集群和创建k8s集群

Rancher管理k8s集群及创建k8s集群。 Rancher版本为:2.8.2目录 rancher管理k8s集群rancher创建k8s集群rancher管理k8s集群 使用rancher管理已经存在的k8s集群。 本部分内容需要自行准备好k8s集群及rancher平台,部署请看本人其他文章 。 登录到rancher平台后,点击集群管理,…...

生成对抗网络 – Generative Adversarial Networks | GAN

目录 生成对抗网络 GAN 的基本原理 非大白话版本 第一阶段:固定「判别器D」,训练「生成器G」...

基于深度学习的生活垃圾智能分类系统(微信小程序+YOLOv5+训练数据集+开题报告+中期检查+论文)

摘要 本文基于Python技术,搭建了YOLOv5s深度学习模型,并基于该模型研发了微信小程序的垃圾分类应用系统。本项目的主要工作如下: (1)调研了移动端垃圾分类应用软件动态,并分析其优劣势;分析了深…...

软件包名生成参考

服务名称-分支名称-最后提交时间(精确到秒)-最后提交-编译时间(unix时间戳) 示例:crm_5.2_221024-221020160306-b846f829-1665655859 包名生成脚本参考: 分支名称 export GIT_BRANCH$(git branch|grep "\*"|head -n1|awk {print $NF})git最…...

八大排序算法(面试被问到)

1.八大排序算法都是什么? 八大排序算法有:插入排序、冒泡排序、归并排序、选择排序、快速排序、希尔排序、堆排序、基数排序(通常不提)。此外,还可以直接调用Arrays.sort()进行排序。 2.八大排序算法时间复杂度和稳定…...

SCP指令详细使用介绍

SCP(Secure Copy Protocol)是一种用于在计算机之间安全地传输文件的协议。它通过加密的方式在网络上安全地复制文件。SCP基于SSH(Secure Shell)协议,因此它提供了加密的连接和身份验证,确保数据在传输过程中…...

《前端面试题》- JS基础 - 防抖和节流

在界面触发点击,滚动,输入校验等事件时,如果对事件的触发频率不加以限制,会给浏览器增加负担,且对用户不友好。防抖和节流就是针对类似情况的解决方案。 防抖 防抖(debounce):当连续触发事件时&#xff0…...

RAGFlow:基于OCR和文档解析的下一代 RAG 引擎

一、引言 在人工智能的浪潮中,检索增强生成(Retrieval-Augmented Generation,简称RAG)技术以其独特的优势成为了研究和应用的热点。RAG技术通过结合大型语言模型(LLMs)的强大生成能力和高效的信息检索系统…...

正则表达式|*+?

在理解编程语言和编译技术的上下文中,了解正则表达式(regular expressions)和正则集(regular sets)的概念是非常重要的。这些概念主要用于描述一组字符串的模式,广泛应用于词法分析中识别各类标记&#xff…...

前端开发攻略---根据音频节奏实时绘制不断变化的波形图。深入剖析如何通过代码实现音频数据的可视化。

1、演示 2、代码分析 逐行解析 JavaScript 代码块&#xff1a; const audioEle document.querySelector(audio) const cvs document.querySelector(canvas) const ctx cvs.getContext(2d)这几行代码首先获取了 <audio> 和 <canvas> 元素的引用&#xff0c;并使用…...

【计算机毕业设计】基于Java+SSM的实战开发项目150套(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f9e1;今天给大家分享150的Java毕业设计&#xff0c;基于ssm框架&#xff0c;这些项目都经过精心挑选&#xff0c;涵盖了不同的实战主题和用例&#xff0c;可做毕业设计和课程…...

STM32H7的MPU学习和应用示例

STM32H7的MPU学习记录 什么是MPU&#xff1f;MPU的三种内存类型内存映射MPU保护区域以及优先级 MPU的寄存器XN位AP位TEX、C、B、S位SRD 位SIZE 位CTRL 寄存器的各个位 示例总结 什么是MPU&#xff1f; MPU&#xff08;Memory Protection Unit&#xff0c;内存保护单元&#xf…...

964: 数细胞

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

流程图步骤条

1.结构 <ul class"stepUl"> <li class"stepLi" v-for"(item, index) in stepList" :key"index"> <div class"top"> <p :class"{active: currentState > item.key}">{{ item.value }}…...

GPT知识库浅析

一、引言 上篇文章《GPT简介及应用》介绍了GPT的应用场景&#xff0c;里面提到GPT bot的基本使用&#xff1a;基于GPT训练好的数据&#xff0c;回答用户的问题。 但在使用过程中&#xff0c;如果用户的问题里面出现最新的术语&#xff0c;就会出现这种提示&#xff1a; 截至我…...

SpringMVC--SpringMVC的视图

目录 1. 总述 2. ThymeleafView视图 3. 转发视图 4. 重定向视图 5. 视图控制器view-controller 1. 总述 在SpringMVC框架中&#xff0c;视图&#xff08;View&#xff09;是一个非常重要的概念&#xff0c;它负责将模型数据&#xff08;Model&#xff09;展示给用户。简单…...

Datax,hbase与mysql数据相互同步

参考文章&#xff1a;datax mysql 和hbase的 相互导入 目录 0、软件版本说明 1、hbase数据同步至mysql 1.1、hbase数据 1.2、mysql数据 1.3、json脚本&#xff08;hbase2mysql.json&#xff09; 1.4、同步成功日志 2、mysql数据同步至hbase 1.1、hbase数据 1.2、mysql…...

ubuntu spdlog 封装成c++类使用

安装及编译方法&#xff1a;ubuntu spdlog 日志安装及使用_spdlog_logger_info-CSDN博客 h文件&#xff1a; #ifndef LOGGING_H #define LOGGING_H#include <iostream> #include <cstring> #include <sstream> #include <string> #include <memor…...

【C语言】——字符串函数的使用与模拟实现(上)

【C语言】——字符串函数 前言一、 s t r l e n strlen strlen 函数1.1、函数功能1.2、函数的使用1.3、函数的模拟实现&#xff08;1&#xff09;计数法&#xff08;2&#xff09;递归法&#xff08;3&#xff09;指针 - 指针 二、 s t r c p y strcpy strcpy 函数2.1、函数功能…...

UWB-IMU、UWB定位对比研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

OpenClaw 如何实现任务恢复与失败重试?

网罗开发&#xff08;小红书、快手、视频号同名&#xff09;大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等方…...

2026届学术党必备的六大降重复率平台推荐榜单

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 令AI精确执行任务的基础&#xff0c;是下达精准的指令&#xff0c;此即降AI指令。降AI指令专…...

荔枝派Zero V3s新手避坑指南:从源码编译到SPI Flash烧录u-boot的完整流程

荔枝派Zero V3s开发实战&#xff1a;从源码编译到SPI Flash烧录的避坑手册 第一次拿到荔枝派Zero V3s开发板时&#xff0c;那种既兴奋又忐忑的心情至今记忆犹新。作为全志V3s芯片的经典开发平台&#xff0c;它凭借64MB DDR2内存、内置WiFi和丰富的外设接口&#xff0c;成为嵌入…...

学术合规性危机预警:Perplexity生成内容如何精准适配Chicago第17版?,一文锁定98.7%高校期刊投稿要求

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;学术合规性危机预警&#xff1a;Perplexity生成内容如何精准适配Chicago第17版&#xff1f; 随着AI辅助写作工具在人文社科领域的深度渗透&#xff0c;Perplexity等生成式平台输出的引文、脚注与参考文…...

Cognize-Agent™空间智能体,98.5%故障预警准确率,终结非计划停机

Cognize-Agent™空间智能体&#xff0c;98.5%故障预警准确率&#xff0c;终结非计划停机工业制造领域&#xff0c;设备非计划停机始终是制约生产效率、拉高运维成本的核心痛点。传统设备运维依赖定期检修、事后抢修&#xff0c;依赖人工巡检与单一数据监测&#xff0c;无法提前…...

CipherChat:基于词元替换的端到端加密大模型对话方案解析

1. 项目概述&#xff1a;当大模型对话遇上密码学最近在折腾大语言模型&#xff08;LLM&#xff09;应用开发的朋友&#xff0c;可能都遇到过同一个头疼的问题&#xff1a;如何保证用户和模型之间对话的隐私和安全&#xff1f;我们辛辛苦苦搭建的智能客服、个人助理或者创意写作…...

终极网盘直链下载助手完整指南:告别限速,快速获取八大平台真实下载地址

终极网盘直链下载助手完整指南&#xff1a;告别限速&#xff0c;快速获取八大平台真实下载地址 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里…...

在Windows上安装Android应用:APK Installer让跨平台操作变得简单

在Windows上安装Android应用&#xff1a;APK Installer让跨平台操作变得简单 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否想过在Windows电脑上直接运行Androi…...

ctf show web入门48

这是一道典型的 PHP 代码审计与命令注入&#xff08;Command Injection&#xff09; 绕过题。代码逻辑分析 代码的核心逻辑如下&#xff1a; 输入点&#xff1a;通过 GET 方式接收参数 c。 过滤机制&#xff1a;使用 preg_match 进行正则匹配&#xff0c;过滤了大量关键字符和命…...