图像视频编码和FFmpeg(4)-----h264格式简单介绍
2014-05-24 10:13
417 查看
前面介绍了图像格式和一些转换。想必大家更想了解视频格式和怎么编码解码视频。本文将介绍一下h264视频格式,这是使用FFmpeg的基础。这东西真的比较复杂,我也是找了很多资料,才有少少懂。如果文中有不对的地方,请大家斧正。
这里先介绍三个概念:分辨率、帧率、码率。
在图像处理领域,分辨率是指图像的像素尺寸,就是width * height。简单说就是有多少个像素。
帧率是指一秒有多少帧图像。平时我们看的视频一般都是24帧一秒的。因为这样的帧率看起来才流畅。
码率也叫比特率,是指每秒传送的比特(bit)数。直观地说,码率大,视频会更清晰。当码率比较小的时候,会出现马赛克,特别是当镜头突然转动或者画面图像有个物体出现的时候,马赛克就出现了。现在先这样简单理解。
视频,简单地说就是一张张图像(一帧帧图像)组成的。如果视频拍摄的静止没有变化的画面,那么可以只需第一张图像,之后重复播放第一张图像即可。这样,只需保存第一张图像即可,此时的压缩率是相当高的。当然实现中的画面一般都会变的,但变化不大,此时只需记录变化的部分即可。这样就得到了视频压缩的效果。
有了前面的基本认识后,现在来讲一下h264中的I、P、B帧。
I帧是关键帧。它是第一张图像,是一张完整的图像,其他两种帧要参照它。
P帧是向前预测帧,它会参考它前面的I帧或者P帧从而得到一张图像。
B帧是双向预测帧,它要参考它前面和后面的帧。
我这里只是简单地介绍,更详细I、P、B帧介绍可以看博文1和博文2。至于怎么参考、预测的,那就复杂了,我也不懂。
对于一个比较长的视频,不可能只有一个I帧。通常是一个I帧带有若干个B、P帧。我们用I帧作为分割点,把一个视频分成多个GOP。一个GOP里面只有一个I帧,多个B、P帧。比如一个长度为5的GOP:IBPBP。在FFmpeg的***CodecContext结构体中有一个gop_size成员。
现在再来说一下码率。码率是比特数,码率的增大,我认为是增加B、P帧的内容(对应的比特数也增加了),写入更多的变化,使得画面更加清晰。可以看一下这篇博文。码率分固定和可变的。
大家可以看一下FFmpeg工程组里的一个帖子,里面有说到在FFmpeg中,怎么设置码率和最大、最小码率。
其中c为***CodecContext类型的一个指针。
本文介绍的东西比较抽象,要想弄懂,还是要多多实践和多查资料。
这里先介绍三个概念:分辨率、帧率、码率。
在图像处理领域,分辨率是指图像的像素尺寸,就是width * height。简单说就是有多少个像素。
帧率是指一秒有多少帧图像。平时我们看的视频一般都是24帧一秒的。因为这样的帧率看起来才流畅。
码率也叫比特率,是指每秒传送的比特(bit)数。直观地说,码率大,视频会更清晰。当码率比较小的时候,会出现马赛克,特别是当镜头突然转动或者画面图像有个物体出现的时候,马赛克就出现了。现在先这样简单理解。
视频,简单地说就是一张张图像(一帧帧图像)组成的。如果视频拍摄的静止没有变化的画面,那么可以只需第一张图像,之后重复播放第一张图像即可。这样,只需保存第一张图像即可,此时的压缩率是相当高的。当然实现中的画面一般都会变的,但变化不大,此时只需记录变化的部分即可。这样就得到了视频压缩的效果。
有了前面的基本认识后,现在来讲一下h264中的I、P、B帧。
I帧是关键帧。它是第一张图像,是一张完整的图像,其他两种帧要参照它。
P帧是向前预测帧,它会参考它前面的I帧或者P帧从而得到一张图像。
B帧是双向预测帧,它要参考它前面和后面的帧。
我这里只是简单地介绍,更详细I、P、B帧介绍可以看博文1和博文2。至于怎么参考、预测的,那就复杂了,我也不懂。
对于一个比较长的视频,不可能只有一个I帧。通常是一个I帧带有若干个B、P帧。我们用I帧作为分割点,把一个视频分成多个GOP。一个GOP里面只有一个I帧,多个B、P帧。比如一个长度为5的GOP:IBPBP。在FFmpeg的***CodecContext结构体中有一个gop_size成员。
现在再来说一下码率。码率是比特数,码率的增大,我认为是增加B、P帧的内容(对应的比特数也增加了),写入更多的变化,使得画面更加清晰。可以看一下这篇博文。码率分固定和可变的。
大家可以看一下FFmpeg工程组里的一个帖子,里面有说到在FFmpeg中,怎么设置码率和最大、最小码率。
其中c为***CodecContext类型的一个指针。
本文介绍的东西比较抽象,要想弄懂,还是要多多实践和多查资料。
相关文章推荐
- 图像视频编码和FFmpeg(2)-----YUV格式介绍和应用
- 图像视频编码和FFmpeg(2)-----YUV格式介绍和应用
- 用FFmpeg编码h264视频介绍
- 图像视频编码和FFmpeg(3)-----用FFmpeg进行图像格式转换和AVFrame简介
- 图像视频编码和FFmpeg(1)-----FFmpeg使用介绍
- 各种主流音视频编码格式介绍
- windows平台下使用ffmpeg对视频进行H264编码总结
- 各种主流音频/视频编码格式介绍
- 各种主流音频/视频编码格式介绍
- 图像视频编码和FFmpeg(6)-----用FFmpeg编码和解码的例子
- UTF - 8 编码格式简单介绍
- h264 svc 可伸缩视频编码及ffmpeg实现
- OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)
- 利用ffmpeg截取视频图像并保存为ppm和jpg图片格式
- 使用ffmpeg将BMP图片编码为x264视频文件,将H264视频保存为BMP图片,yuv视频文件保存为图片的代码
- 图像视频编码和FFmpeg(5)-----FFmpeg关键结构体的关系和编解码的基本过程
- 各种主流音频/视频编码格式介绍
- 超越苹果索尼 艾诺兼容H264编码全格式视频
- 各种主流音频/视频编码格式介绍
- 各种主流音频/视频编码格式介绍