音视频开发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等需要实时传输和播放的场景。

相关推荐
Donvink8 小时前
【视频生成模型】通义万相Wan2.1模型本地部署和LoRA微调
人工智能·深度学习·aigc·音视频
Deepsleep.9 小时前
视频HLS分片与关键帧优化深度解析
音视频
Antonio9159 小时前
【音视频】视频解码实战
ffmpeg·音视频·aac
数据与后端架构提升之路10 小时前
深度解析如何将图像帧和音频片段特征高效存储到向量数据库 Milvus
数据库·opencv·音视频
EQ-雪梨蛋花汤13 小时前
【Part 2安卓原生360°VR播放器开发实战】第二节|基于等距圆柱投影方式实现全景视频渲染
android·音视频·vr
Antonio91516 小时前
【音视频】SDL简介
音视频·sdl
薛瑄16 小时前
FFmpeg之三 录制音频并保存, API编解码从理论到实战
ffmpeg·音视频·xcode
算家云18 小时前
AI音频核爆!Kimi开源“六边形战士”Kimi-Audio,ChatGPT语音版?
人工智能·音视频·kimi·算家云·kimi-audio·租算力,到算家云
Everbrilliant8920 小时前
音视频之H.265/HEVC熵编码
音视频·h.265·算术编码·哈夫曼编码·熵编码·指数哥伦布编码·熵编码的基本原理
Panesle20 小时前
月之暗面开源-音频理解、生成和对话生成模型:Kimi-Audio-7B-Instruct
人工智能·音视频·语音生成