Mpeg4封装格式音视频编码格式
MPEG-4
MPEG-4是一套用于音频、视频信息的压缩编码标准。
MPEG-4 Part 14定义了MPEG-4文件格式,即mp4后缀文件。mp4文件格式只是MPEG-4标准中的一小部分
常用封装格式
AVI 压缩标准可任意选择
FLV ts流媒体格式
ASF
mp4 MPEG-4中定义的一种格式
常用编码格式
视频:H264(AVC Part10) , wmv, XviD(Part2), mjpeg(每一帧都是独立的,都是I帧)
音频:aac(有损压缩), MP3(有损), ape(无损), flac(无损)
音视频解封装和解码原理分析
像素格式
YUV比RGB更省空间
由于GPU擅长浮点运算, 所以YUV转RGB可以用openGL的shader做,性能好
3*3 RGB图像存放方式
如果视频宽度不是4或者8的倍数,程序为了运算效率,会自动补齐,所以拷贝时要一行行拷贝,根据图像时间宽度。
YUV
- YUV444与RGB占用空间一样,都是每个像素3个字节
- YUV420,四个Y共用一个UV,不是连续的Y共用,而是2*2的矩阵Y,共用UV
- Packed模式YUVYUVYUV ;Planar模式YYYUUUVVV,使用时,Packed模式存储在一个数组中,Planar模式存储在三个数组中。
PCM音频参数
- 采样率 sample_rate 44100 (CD)
- 通道 channels (左右声道)
- 样本大小(格式) sample_size enum AVSampleFormat { AV_SAMPLE_FMT_NONE = -1, AV_SAMPLE_FMT_U8, ///< unsigned 8 bits AV_SAMPLE_FMT_S16, ///< signed 16 bits AV_SAMPLE_FMT_S32, ///< signed 32 bits AV_SAMPLE_FMT_FLT, ///< float AV_SAMPLE_FMT_DBL, ///< double AV_SAMPLE_FMT_FLTP, ///< float,planar }; 我们大部分声卡只支持16位或24位样本大小,而aac解码出来的是AV_SAMPLE_FMT_FLTP格式,32位浮点值(浮点运算效率高)
- Packed模式LRLRLR ;Planar模式LLLRRR
- 倍速播放,改变播放采样率和原始采样率的关系
MP4标准和h264格式的NAL的GOP分析
编码格式及细节
https://cloud.tencent.com/developer/article/1638143 该链接比较详细
android studio SDK目录
windows获取当前毫秒时间戳
设置解码线程数
骁龙835 硬解码 FPS 120帧
骁龙835 软解码 1线程 neon FPS 60
骁龙835 软解码 8线程 neon FPS 250
骁龙835 软解码 1线程 无neon FPS 30
骁龙835 软解码 8线程 无neon FPS 140