【FFmpeg】使用 FFmpeg 处理音视频格式转换流程 ( 解复用 | 解码 | 帧处理 | 编码 | 复用 )(二)

简介: 【FFmpeg】使用 FFmpeg 处理音视频格式转换流程 ( 解复用 | 解码 | 帧处理 | 编码 | 复用 )(二)

转换前的视频信息 :

image.png



转换后的视频信息 :


image.png





二、视频格式转换流程


分析如下命令的详细流程 :


ffmpeg -i 1920x1040.mp4 -acodec copy -vcodec libx264 -s 960x520 960x520.flv


将 1920x1040 大小的 mp4 格式的视频文件 , 使用 x264 编解码器 , 转为 960x520 大小的 flv 格式的视频文件 ;



蓝色的是 文件 / 中间产物 , 红色的是过程 ;



输入文件 : 输入 1920x1040 大小的 mp4 格式文件 , 1920x1040.mp4 ;


解复用 : 使用 demuxer 解复用器 , 将输入文件进行解复用操作 , 从容器中分别将 AVC 视频流 , AAC LC 音频流取出 , 得到编码数据包 ;


编码数据包 : 该数据包中的音视频数据都是编码后的数据 , 不能直接使用 ; 编码数据包中的视频流数据是 AVC 编码格式的 , 音频流数据是 AAC LC 编码格式的 ;


image.png


解码 : 使用 decoder 解码器 , 解码 AVC 编码的视频流数据 , AAC LC 编码的音频流数据 , 得到解码后的数据 ;


解码后的数据帧 : 音频数据是 PCM 采样 , 视频帧 数据是一张张 YUV 格式的图片 ;


帧处理 : 使用 filter 过滤器 处理 解码后的数据帧 , 将其转为 处理后的数据帧 ; 该过程中将视频的分辨率进行了修改 , 分辨率从 1920x1040 转为 960x520 ;

如果要修改视频的相关参数 , 如 时间 , 帧率 , 都在该步骤进行操作 , 操作的主体一定是解码后的数据帧 ;


处理后的数据帧 : 该数据帧是可以直接用于播放 ; 音频数据是 PCM 采样 , 视频帧 数据是一张张 YUV 格式的图片 ;


编码 : 使用 encoder 编码器 , 将处理后的数据帧进行编码 , 音频从 PCM 采样转为 AAC LC 编码格式 , 视频从 YUV 图片编码为 AVC 编码格式 ,


编码数据包 : 音频数据是 AAC LC 编码格式 , 视频数据是 AVC 编码格式 ;


复用 : 使用 muxer 复用器 , 将编码后的 视频流 和 音频流 封装到 容器中 , 即 flv 格式的视频文件 , 得到输出文件 ;


输出文件 : 格式转换完毕的 960x520.flv 视频文件 ;


目录
相关文章
|
11天前
|
存储
FFmpeg的流程
FFmpeg的流程
|
7天前
|
Java Linux
ffmpeg音频格式转换、合成、速率调整
ffmpeg音频格式转换、合成、速率调整
13 2
|
18天前
|
存储 编解码 Linux
rodert教你学FFmpeg实战这一篇就够了 - 音视频处理入门篇
rodert教你学FFmpeg实战这一篇就够了 - 音视频处理入门篇
23 1
|
11天前
FFMpeg解复用流程
FFMpeg解复用流程
|
2月前
|
编解码 5G Linux
FFmpeg开发笔记(二十一)Windows环境给FFmpeg集成AVS3解码器
AVS3是中国首个8K及5G视频编码标准,相比AVS2和HEVC性能提升约30%。解码器libuavs3d支持8K/60P视频实时解码,兼容多种平台。《FFmpeg开发实战》书中介绍了在Windows环境下如何集成libuavs3d到FFmpeg。集成步骤包括下载源码、使用Visual Studio 2022编译、调整配置、安装库文件和头文件,以及重新配置和编译FFmpeg以启用libuavs3d。
45 0
FFmpeg开发笔记(二十一)Windows环境给FFmpeg集成AVS3解码器
|
2月前
|
编解码 Linux 5G
FFmpeg开发笔记(二十)Linux环境给FFmpeg集成AVS3解码器
AVS3,中国制定的第三代音视频标准,是首个针对8K和5G的视频编码标准,相比AVS2和HEVC性能提升约30%。uavs3d是AVS3的解码器,支持8K/60P实时解码,且在各平台有优秀表现。要为FFmpeg集成AVS3解码器libuavs3d,需从GitHub下载最新源码,解压后配置、编译和安装。之后,重新配置FFmpeg,启用libuavs3d并编译安装,通过`ffmpeg -version`确认成功集成。
39 0
FFmpeg开发笔记(二十)Linux环境给FFmpeg集成AVS3解码器
|
2月前
|
存储 缓存 调度
FFmpeg开发笔记(十九)FFmpeg开启两个线程分别解码音视频
《FFmpeg开发实战》第10章示例playsync.c在处理音频流和视频流交错的文件时能实现同步播放,但对于分开存储的格式,会出现先播放全部声音再快速播放视频的问题。为解决此问题,需改造程序,增加音频处理线程和队列,以及相关锁,先将音视频帧读入缓存,再按时间戳播放。改造包括声明新变量、初始化线程和锁、修改数据包处理方式等。代码修改后在playsync2.c中,编译运行成功,控制台显示日志,SDL窗口播放视频并同步音频,证明改造有效。
42 0
FFmpeg开发笔记(十九)FFmpeg开启两个线程分别解码音视频
|
2月前
|
编解码 安全 计算机视觉
FFMPEG常用命令 音视频合并
FFMPEG常用命令 音视频合并
40 2
|
2月前
|
存储 编解码 缓存
ffmpeg音视频同步
ffmpeg音视频同步
33 0
|
9天前
|
编解码 Java Android开发
FFmpeg开发笔记(三十一)使用RTMP Streamer开启APP直播推流
RTMP Streamer是一款开源的安卓直播推流框架,支持RTMP、RTSP和SRT协议,适用于各种直播场景。它支持H264、H265、AV1视频编码和AAC、G711、OPUS音频编码。本文档介绍了如何使用Java版的RTMP Streamer,建议使用小海豚版本的Android Studio (Dolphin)。加载项目时,可添加国内仓库加速依赖下载。RTMP Streamer包含五个模块:app、encoder、rtmp、rtplibrary和rtsp。完成加载后,可以在手机上安装并运行APP,提供多种直播方式。开发者可以从《FFmpeg开发实战:从零基础到短视频上线》获取更多信息。
35 7
FFmpeg开发笔记(三十一)使用RTMP Streamer开启APP直播推流