[✔️]FFMpeg与视频的基础知识

简介: [✔️]FFMpeg与视频的基础知识

IPB帧


编码 解释
I帧:帧内编码帧率(intra picture) 关键帧,一个单独完整的视频画面
P帧:前向预测编码帧(predictive-frame) 参考前一个I帧/P帧解码的画面
B帧:双向预测内插编码帧(bi-directionalinterpolated prediction frame) 参考前一个I帧/P帧以及后一个P帧解码的画面
IDR帧(instantaneous decoding refresh picture) H264的概念,类似I帧


DTS/PTS


解码类型
DTS(Decoding Time Stamp) 视频帧数据流何时解码, 主要用于视频的解码
PTS(Presentation Time Stamp) 反映该帧何时显示,主要用于视频解码阶段进行视频的同步和输出


在没有B帧的情况下,DTS和PTS的输出顺序是一样的。因为B帧打乱了解码和显示的顺序,所以一旦存在B帧,PTS和DTS势必就会不同。


time_base是时间的基准,比如{1,100},也就是将1s分成100份,pts的值就是有多少份这样的time_base,那么pts计算帧所在的时间:


timestamp(秒) = pts * av_q2d(time_base)


GOP:Group Of Picture


两个I帧之间形成一组图片,就是GOP,每一个GOP都是由关键帧开始的,关键帧是一幅完整的画面,GOP中间的帧都是不完整的,需要由关键帧、前面帧以及后面帧等一起运算得到


关键帧的间隔调节会影响GOP的长度,进而影响到读取GOP的速度。


api version


FFMpeg的API随着版本的更新,也发生了很多变化,有些API虽然在新版本中做了兼容仍旧可以使用,但是已经被标记为废弃。


旧API 新API
avcodec_decode_video2 avcodec_send_packet
avcodec_receive_frame


在解码视频时,无论是新的API还是旧的API,当解析部分视频(视频第一帧不是I帧)时,会发生丢帧现象,也就是


实际解码得到的帧数 != FPS*Time


目录
相关文章
|
6月前
|
Web App开发 编解码 安全
视频会议技术 入门探究:WebRTC、Qt与FFmpeg在视频编解码中的应用
视频会议技术 入门探究:WebRTC、Qt与FFmpeg在视频编解码中的应用
631 4
|
6月前
|
存储 编解码 算法
深度探索:使用FFmpeg实现视频Logo的添加与移除(二)
深度探索:使用FFmpeg实现视频Logo的添加与移除
279 0
|
6月前
|
存储 编解码 数据处理
【FFmpeg 视频基本格式】深入理解FFmpeg:从YUV到PCM,解码到编码(三)
【FFmpeg 视频基本格式】深入理解FFmpeg:从YUV到PCM,解码到编码
203 0
|
6月前
|
存储 编解码 数据处理
【FFmpeg 视频基本格式】深入理解FFmpeg:从YUV到PCM,解码到编码(二)
【FFmpeg 视频基本格式】深入理解FFmpeg:从YUV到PCM,解码到编码
219 0
|
6月前
|
存储 编解码 调度
剖析ffmpeg视频解码播放:时间戳的处理
剖析ffmpeg视频解码播放:时间戳的处理
598 0
|
11天前
|
编解码 监控 网络协议
如何使用FFmpeg实现RTSP推送H.264和H.265(HEVC)编码视频
本文详细介绍了如何使用FFmpeg实现RTSP推送H.264和H.265(HEVC)编码视频。内容涵盖环境搭建、编码配置、服务器端与客户端实现等方面,适合视频监控系统和直播平台等应用场景。通过具体命令和示例代码,帮助读者快速上手并实现目标。
38 6
|
3月前
|
编解码 Linux
CentOS安装ffmpeg并转码视频为mp4
CentOS安装ffmpeg并转码视频为mp4
144 0
|
5月前
|
Python
Python使用ffmpeg下载m3u8拼接为视频
Python使用ffmpeg下载m3u8拼接为视频
|
29天前
|
Java 数据安全/隐私保护
Java ffmpeg 实现视频加文字/图片水印功能
【10月更文挑战第22天】在 Java 中使用 FFmpeg 实现视频加文字或图片水印功能,需先安装 FFmpeg 并添加依赖(如 JavaCV)。通过构建 FFmpeg 命令行参数,使用 `drawtext` 滤镜添加文字水印,或使用 `overlay` 滤镜添加图片水印。示例代码展示了如何使用 JavaCV 实现文字水印。
|
1月前
|
计算机视觉 Python
FFMPEG学习笔记(一): 提取视频的纯音频及无声视频
本文介绍了如何使用FFmpeg工具从视频中提取纯音频和无声视频。提供了具体的命令行操作,例如使用`ffmpeg -i input.mp4 -vn -c:a libmp3lame output.mp3`来提取音频,以及`ffmpeg -i input.mp4 -c:v copy -an output.mp4`来提取无声视频。此外,还包含了一个Python脚本,用于批量处理视频文件,自动提取音频和生成无声视频。
45 1