音视频开发7 音视频转换格式流程

先看条转换视频文件的命令

我们的目的是将  源文件 source_1920x1080.mp4 转换成 目标文件 dest_1280x720.flv

ffmpeg -i source_1920x1080.mp4 -acodec copy -vcodec libx264 -s 1280x720 dest_1280x720.flv
-acodec copy 的意思是,目标的 音频格式 使用和 源文件一样的格式。
-vcodec libx264  的意思是,目标的 视频格式 使用 libx264  格式
-s 1280x720 的意思是,目标的视频的大小为 1280x720
dest_1280x720.flv   的意思是,目标文件的名字为 dest_1280x720.flv
按照上述标准,那么我们生成的  目标文件, 声音部分 和 视频部分应该是如下的样式的:
声音部分编码保持不变,还是 AAC 的
视频部分编码 从源文件的视频编码 变成 x264的,由于源文件的视频编码本身也是AVC的(也就是x264的),因此对于用于当前演示的这个文件,实际上也是不变的,但是如果换一个 源文件的视频编码不是x264的,就需要对源文件的编码进行改动。

主要的处理流程

这里要注意的是:如果是音频流的格式没有变化,那么理论上不需要  解码 -- 处理数据帧 -- 编码 这个过程。

请思考:

如果视频流的格式没有变化,需要这个过程吗?  解码 -- 处理数据帧 -- 编码

如果视频的大小有变化,例如从1920x1080 变成 1280x720 . 应该是需要的

重要概念:

容器(Container)


容器就是一种文件格式,比如flv、mkv、mp4等。包含下面5种流以及文件头信息。

流(Stream)


是一种视频数据信息的传输方式,5种流:音频,视频,字幕,附件,数据。

包(Packet)


在ffmpeg中包代表已经编码好的一个单位的音频或者视频。

帧(Frame)


在ffmpeg中帧代表一幅静止的图像(yuv数据)或一些数量的音频采样。

编解码器(Codec)

是对视频进行压缩或者解压缩,CODEC =ENCode (编码) +DECode(解码)

复用/解复用(mux/demux)


把不同的流按照某种容器的规则放入容器,这种行为叫做复用(mux)
把不同的流从某种容器中解析出来,这种行为叫做解复用(demux)

为了更好理解以上概念,下面以h264+aac编码的flv文件转码为 h265+mp3编码的mp4文件为例,ffmpeg的处理流程是这样的:

三 学习路线中的问题解答。基础知识-- 解复用基础知识

原文链接:https://blog.csdn.net/weixin_52622200/article/details/136683908

1.什么是解复用?比如mp4格式

把不同的流按照某种容器的规则放入容器,这种行为叫做复用(mux)
把不同的流从某种容器中解析出来,这种行为叫做解复用(demux)

解复用是指将音视频数据从容器格式中解封装出来,并进行解码操作,得到原始的音频和视频信号的过程。在音视频开发中,容器格式如MP4内部包含了音频轨、视频轨以及其他元数据,解复用过程就是将这些数据提取出来并进行解码,以便播放或者进一步处理。

对于MP4格式,解复用的过程包括以下步骤:

解析文件结构:首先需要读取MP4文件的头部信息,这包括了文件的基本结构、各个数据块的位置和大小等元数据。
定位音视频数据:根据文件结构信息,找到音频轨和视频轨的位置和大小。
音频解复用:将音频数据从MP4格式中提取出来,并进行解码操作,得到原始的音频信号。
视频解复用:将视频数据从MP4格式中提取出来,并进行解码操作,得到原始的视频信号。
在解复用的过程中,需要使用相应的解码器对音频和视频数据进行解码操作,得到原始的音频和视频信号,以便后续的播放或处理

2.为什么需要不同的复用格式 mp4/FLV/TS

主要原因包括以下几点:

容器格式特性:

MP4(MPEG-4 Part 14):MP4是一种通用的多媒体容器格式,支持多种编码格式的音频和视频数据,常用于存储和播放音视频文件。MP4格式具有良好的兼容性和广泛的支持,适用于多种场景。
FLV(Flash Video):FLV是Adobe Flash Player使用的一种视频容器格式,通常用于网络视频播放。FLV格式支持在Web上高效地传输和播放视频内容,适合在线视频流媒体。
TS(Transport Stream):TS是一种用于传输和存储音视频数据的格式,常用于数字电视、广播和视频流媒体。TS格式适合实时传输和广播环境,具有较好的抗干扰性和稳定性。
应用场景:

MP4适用于通用的存储和播放需求,广泛应用于本地视频文件、在线视频平台等场景。
FLV常用于在线视频流媒体服务,如Flash播放器、网络直播等。
TS适用于数字电视、广播、IPTV等需要实时传输和播放的场景,具有优秀的传输性能和稳定性。
编解码支持:

不同的复用格式可能对特定的编码格式有更好的支持,例如某些格式可能更适合H.264编码的视频数据,而另一些则更适合AAC编码的音频数据。
网络传输特性:

不同的复用格式可能对网络传输有不同的优化,如TS格式在传输过程中可以更好地处理丢包和延迟等问题。

3.常见的复用格式 mp4/FLV/TS

当谈及常见的复用格式时,我们通常会提到MP4、FLV和TS这三种格式。下面我将对它们进行更详细的讲解:

MP4(MPEG-4 Part 14)

MP4是一种通用的多媒体容器格式,最初由国际标准化组织制定。它可以存储视频、音频、文本和图形等数据,并且支持多种编码格式的音频和视频数据。MP4文件通常使用H.264(视频编码)和AAC(音频编码)作为默认的编码方式。

特点:

  • 广泛兼容性: MP4格式拥有非常好的兼容性,几乎所有的主流设备和播放器都支持MP4格式。
  • 网络传输: 由于其压缩效率高,因此在网络上传输中占用较小的带宽。
  • 应用领域: 适用于通用的存储和播放需求,如本地视频文件、在线视频平台等

FLV(Flash Video)


FLV是Adobe Flash Player使用的一种视频容器格式,最初被设计用于在Web上高效地传输和播放视频内容。

特点:

网络传输: FLV格式在网络传输中具有优异的表现,它能够提供较好的视频播放体验。
流媒体应用: 常用于在线视频流媒体服务,如Flash播放器、网络直播等。
互动性: FLV格式通常与Flash技术结合使用,支持视频流的交互式操作。


                        

TS(Transport Stream)


TS是一种用于传输和存储音视频数据的格式,最初用于数字电视、广播和视频流媒体等领域。

特点:

实时传输: TS格式非常适合实时传输和广播环境,具有稳定的传输性能。
抗干扰性: TS格式具有较好的抗干扰性,适用于不稳定网络环境下的传输。
应用领域: 主要应用于数字电视、广播、IPTV等需要实时传输和播放的场景。


                        
 

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

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

相关文章

vue 引入 emoji 表情包

vue 引入 emoji 表情包 一、安装二、组件内使用 一、安装 npm install --save emoji-mart-vue二、组件内使用 import { Picker } from "emoji-mart-vue"; //引入组件<picker :include"[people,Smileys]" :showSearch"false" :showPreview&q…

操作系统中的内存管理

虚拟内存 操作系统会提供一种机制&#xff0c;将不同进程的虚拟地址和不同内存的物理地址映射起来。如果程序要访问虚拟地址的时候&#xff0c;由操作系统转换成不同的物理地址&#xff0c;这样不同的进程运行的时候&#xff0c;写入的是不同的物理地址&#xff0c;这样就不会冲…

【JavaEE进阶】——Spring Web MVC (响应)

目录 &#x1f6a9;学习Spring MVC &#x1f388;返回静态网页 &#x1f388;返回数据ResponseBody &#x1f388;返回html代码片段 &#x1f388;返回JSON &#x1f388;设置状态码 &#x1f388;设置Header &#x1f6a9;学习Spring MVC 既然是 Web 框架, 那么当⽤⼾在…

ORA-01012: not logged on

问题描述 明明已经shutdown immediate一致性关库&#xff0c;但是查进程时发现oracle进程依然存在。sqlplus / as sysdba登录提示ORA-01012: not logged on报错&#xff0c;着重强调&#xff0c;服务器上就一个实例。 分析过程 查看进程 我通常会在shutdown immediate之后查…

黄石首家Pearson VUE国际认证考试中心落户湖北理工学院

Pearson VUE 作为 Pearson 集团的专门从事计算机化考试服务的公司&#xff0c;到目前为止&#xff0c;已在全世界165 个国家授权了 4400 多个考试中心以及超过 230 家 PVUE 自有考试中心&#xff0c;其中在中国的有三百多个授权考点和 4 个自有考试中心。Pearson VUE 以其技术和…

Python模块、包和异常处理

大家好&#xff0c;在当今软件开发领域&#xff0c;Python作为一种简洁、易读且功能强大的编程语言&#xff0c;被广泛应用于各种领域。作为一名测试开发工程师&#xff0c;熟练掌握Python的模块、包和异常处理是提高代码可维护性和错误处理能力的关键。本文将和大家一起探讨Py…

QT--将编译程序打包成可安装执行文件方法记录

QT–将编译程序打包成可安装执行文件 文章目录 QT--将编译程序打包成可安装执行文件前言一、下载inno setup compiler工具并安装&#xff0c;然后&#xff0c;打开打包工具执行流程二、设置中文语言三、流程结束后需要修改脚本&#xff0c;否则&#xff0c;创建的快捷方式不是编…

web前端项目已有阿里巴巴图标基础上,再次导入阿里巴巴图标的方法

如果是第一次导入阿里巴巴图标请参考: vue项目引入阿里云图标_vue引用阿里云图标fontclass-CSDN博客 本文主要想讲在项目原有阿里巴巴图标基础上,再次导入阿里巴巴图标的解决办法: 1.iconfont.json对应修改就行,这个简单一看就明白; 2.iconfont.js主要改动<symbol><…

SpringBoot基础详解

文章目录 SpringBoot简介入门案例入门案例搭建基于SpringBoot官网创建项目SpringBoot项目快速启动 SpringBoot概述起步依赖默认配置 基础配置配置文件格式修改服务器端口SpringBoot配置文件加载顺序 yamlyaml语法规则yaml数组数据yaml数据读取 多环境开发配置多环境启动配置多环…

Python01:初入Python(Mac)

Python环境准备 下载Python&#xff1a;官网https://www.python.org/ 下载PyCharm&#xff1a;官网https://www.jetbrains.com/pycharm/download Python与PyCharm的关系 Python&#xff08;解释器&#xff09;&#xff1a;机器语言—>翻译人员–>翻译成电脑能读懂的 PyC…

//TODO 注释的作用

// TODO 用来标记某处&#xff0c;表示该处含有待办事项&#xff08;尚未解决&#xff09;。其设计本意只是提醒开发者注意&#xff0c;除了代码高亮之外&#xff0c;还可以借助编辑器实现快速定位。 如何使用&#xff1f; 直接在双斜杠后面加 TODO 或者 todo 即可&#xff0c…

opencv cuda win10

首先需要安装CUDA和cuDNN&#xff0c;不再赘述 下载对应的opencv和opencv_contrib 打开CMakeGUI&#xff0c;填入下载的路径和生成的路径 再点config configure完后会出现 在search栏修改以下&#xff1a; 1.modules路径 2.cuda 3. opencv_world 4.nonfree 5.取消勾选tes…

石油化工巡检机器人:应对挑战的创新力量

在石油化工领域&#xff0c;安全始终是高悬的达摩克利斯之剑。人工巡检面临诸多痛点&#xff0c;如高危环境对人身安全的巨大威胁&#xff0c;复杂工况下难以做到全面细致监测&#xff0c;对有害气体检测存在滞后性&#xff0c;还有恶劣天气对巡检工作的严重干扰。而这些痛点&a…

探索生态农业,守护绿色家园

在繁忙的都市生活中&#xff0c;我们往往忽略了与自然和谐相处的重要性。而生态农业&#xff0c;正是让我们重拾与大自然亲密关系的桥梁。通过采用生态友好的耕作方式&#xff0c;生态农业不仅能够提供健康、营养的农产品&#xff0c;还能够保护生态环境&#xff0c;实现人与自…

Cesium 开发大屏数据可视化模板 开箱即用 无偿贡献

下载地址&#xff1a;李鑫/cesium大屏数据可视化https://gitee.com/bujieqingfeng/cesium_data_visual 项目预览&#xff1a; 对您有用的话受累点个 ‘Star’

安卓数据存储(键值对、数据库、存储卡、应用组件Application、共享数据)

键值对 此小节介绍Android的键值对存储方式的使用方法&#xff0c;其中包括&#xff1a;如何将数据保存到共享参数&#xff0c;如何从共享参数读取数据&#xff0c;如何使用共享参数实现登陆页面的记住密码功能&#xff0c;如何使用Jetpack集成的数据仓库。 共享参数的用法 …

ESP-IDF使用Button组件实现按键检测的功能

ESP32使用Button组件实现按键检测的功能 ESP-IDF 组件管理LED 组件简介测试button组件写在最后 ESP-IDF 组件管理 IDF 组件管理器工具用于下载 ESP-IDF CMake 项目的依赖项&#xff0c;该下载在 CMake 运行期间自动完成。IDF 组件管理器可以从自动从组件注册表 或 Git 仓库获取…

【数据结构与算法】之堆及其实现!

目录 1、堆的概念及结构 2、堆的实现 2.1 堆向下和向上调整算法 2.2 堆的创建 2.3 建堆时间复杂度 2.4 堆的插入 2.5 堆的删除 2.6 完整代码 3、完结散花 个人主页&#xff1a;秋风起&#xff0c;再归来~ 数据结构与算法 个人格言&#…

ACM实训第十七天

Is It A Tree? 问题 考试时应该做不出来&#xff0c;果断放弃 树是一种众所周知的数据结构&#xff0c;它要么是空的(null, void, nothing)&#xff0c;要么是一个或的集合满足以下属性的节点之间有向边连接的节点较多。 •只有一个节点&#xff0c;称为根节点&#xff0c;它…