待看Android音视频音视频积累

Android音视频开发——H264的基本概念

2021-08-18  本文已影响0人  Peakmain

准备

ffmpeg常用命令

ffmpeg -i h265.mkv -vcodec hevc output.h265
ffmpeg -i input.mp4 -c:v copy -bsf:v h264_mp4toannexb -an out.h264
ffplay -stats -f h264 out.h264
ffmpeg -i input.mp4 -acodec copy -vn  output.aac
ffmpeg -i input.mp4 -f mp3 -vn apple.mp3
ffplay -ar 48000 -channels 2 -f f32le -i output.pcm
ffmpeg.exe -i input.mp4 -filter_complex [0:v]reverse[v] -map [v] -preset superfast reversed.mp4
ffmpeg.exe -i input.mp4 -vf reverse reversed.mp4
ffmpeg.exe -i input.mp4 -map 0 -c:v copy -af "areverse" reversed_audio.mp4
ffmpeg.exe -i input.mp4 -vf reverse -af areverse -preset superfast reversed.mp4
ffmpeg  -i ./input.mp4 -vcodec copy -acodec copy -ss 00:00:00 -to 00:05:00 ./cutout1.mp4 -y
ffmpeg  -i ./input.mp4 -vcodec copy -acodec copy -ss 00:05:00 -to 00:10:00 ./cutout2.mp4 -y
ffmpeg  -i ./input.mp4 -vcodec copy -acodec copy -ss 00:10:00 -to 00:14:50./cutout3.mp4 -y

视频文件封装格式

封装格式

视频文件格式 视频封装格式
.avi AVI(Audio Video Interleaved)
.wmv、.asf WMV(Windows Media Video)
.mpg、.mpeg、.vob、.dat、.3gp、.mp4 MPEG(Moving Picture Experts Group)
.mkv Matroska
.rm、.rmvb Real Video
.mov QuickTime File Format
.flv Flash Video

音视频编码方式

编码的本质就是压缩数据

1、视频编码方式
HEVC(H.265) MPEG/ITU-T 2013 研发中
名称 推出机构 推出时间 目前使用领域
H.264 MPEG/ITU-T 2003 各个领域
MPEG4 MPEG 2001 不温不火
MPEG2 MPEG 1994 数字电视
VP9 Google 2013 研发中
VP8 Google 2008 不普及
VC-1 Microsoft Inc. 2006 微软平台
2、 音频编码方式

音频编码的作用: 将音频采样数据(PCM 等)压缩成音频码流,从而降低音频的数据量。 常用的音频编码方式有以下几种:

名称 推出机构 推出时间 目前使用领域
AAC MPEG 1997 各个领域(新)
MP3 MPEG 1993 各个领域(旧)
WMV Microsoft Inc. 1999 微软平台
AC-3 Dolby Inc. 1992 电影

H264概述

压缩技术

H264压缩技术主要采用了以下几种方法对视频数据进行压缩。包括:

如果一个场景,有一个亭子,那么上一秒和下一秒这个亭子都不会动,那就是用帧内压缩,如果下一秒亭子倒了,那么就是帧间压缩

h264视频编解码原理
编码.png
解码.png

经过压缩后的帧分为:I帧,P帧和B帧:

除了I/P/B帧外,还有图像序列GOP。

1.正常播放的视频的第一帧永远是I帧
2.与I帧相似程度达到95%以上,编码成B帧
3.相似程度达到70%编码成P帧
4.码流顺序:I帧之后一定是P(I->P->B),并且一定不可能出现把后面B帧跑到前面P帧。原因是B帧放到了缓冲区
5.场景变化则会新编成一个I帧,I帧频率越高,视频文件越大

h264块

如上图的宏块是88,默认情况存储的是88的信息,而h264编码存储的实际是左边的信息和顶部的信息

image.png
模式 描 述
模式0(垂直) 由A、B、C、D 垂直推出相应像素值
模式1(水平) 由I、J、K、L 水平推出相应像素值
模式2(DC) 由A~D 及I~L 平均值推出所有像素值
模式3(下左对角线) 由45°方向像素内插得出相应像素值
模式4(下右对角线) 由45°方向像素内插得出相应像素值
模式5(右垂直) 由26.6°方向像素值内插得出相应像素值
模式6(下水平) 由26.6°方向像素值内插得出相应像素值
模式7(左垂直) 由26.6° 方向像素值内插得出相应像素值
模式8(上水平) 由26.6° 方向像素值内插得出相应像素值
18.png
模式 描 述
模式0(垂直) 由上边像素推出相应像素值
模式1(水平) 由左边像素推出相应像素值
模式2(DC) 由上边和左边像素平均值推出相应像素值
模式3(平面) 利用线形“plane”函数及左、上像素推出相应像素值,适用于亮度变化平缓区域

1、4×4亮度子块有9种可选预测模式
2、16×16亮度块有4种预测模式
3、色度块也有4种预测模式

H264码流组成

组成码流的结构中,包含了以下几个部分,从大到小依次是:
H264视频序列,图像,片组,片,NALU,宏块,像素

H264码流组成.png
image.png
h264编码格式

H264功能分为两层:

1.H264视频序列包括一系列的NAL单元,每个NAL单元包含一个RBSP。


NAL单元格式.png

2.一个原始的H.264由N个NALU单元组成
3.NALU单元由[StartCode][NALU Header][NALU Payload]三部分组成

Start Code 用于标示这是一个NALU 单元的开始,必须是"00 00 00 01" 或"00 00 01"。
4.RBSP类型 : 包括序列参数集 SPS 和 图像参数集 PPS


image.png

5.NAL Header
由三部分组成forbidden_bit(1bit)(禁止位),nal_reference_bit(2bits)(优先级,,值越大,该NAL越重要),nal_unit_type(5bits)(类型)

nal_unit_type

NALU类型 .png

6.NAL的解码单元的流程如下


NAL的解码单元.png
H.264码流结构图
H.264码流结构图.png
上一篇下一篇

猜你喜欢

热点阅读