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

相关推荐
小柯南敲键盘3 小时前
跨马翻译:AI批量图片翻译工具,跨境电商视频字幕翻译与智能抠图一体搞定
人工智能·python·音视频
智塑未来5 小时前
2026年音频博客制作工具体验分享:三款不同方向的选择
音视频
TST-魚爷8 小时前
实测体验|易视讯会议音视频一体机智能发言跟踪功能
音视频
Android系统攻城狮9 小时前
Linux Gstreamer深度解析之gst_audio_format_build_integer调用流程与实战(十二)
linux·运维·服务器·音视频·车载音视频·gstreamer进阶
可乐鸡翅yeah_9 小时前
MPEG‑TS 分片 PTS/DTS 时间戳异常排错,HLS 音画不同步定位实战
运维·测试用例·音视频·媒体·m3u8
老余说AI10 小时前
从开源换脸工具到商业级 AI 换脸平台:SoundView 视频换脸的产业定位与边界
人工智能·音视频·视频换脸
Likeadust10 小时前
多部门协同调度效率低?一套视频直播/点播/视频会议/集群语音对讲EasyDSS搞定企业可视化音视频调度
音视频·媒体·easydss
差不多的周周10 小时前
《MotionLLM:从人体运动和视频理解人类行为》论文核心部分详解
人工智能·深度学习·机器学习·计算机视觉·语言模型·音视频
可乐鸡翅yeah_14 小时前
HLS CORS 跨域问题完整排查实战,解决 M3U8 与 TS 分片跨域报错
android·ios·音视频·m3u8·音视频在线播放
美狐美颜SDK开放平台14 小时前
从视频处理到实时渲染:直播APP中视频美颜SDK的关键技术解析
前端·人工智能·架构·实时互动·音视频·视频美颜sdk