1. 有使用GPU、NPU、CPU编程吗?
- 编写已有算法模型的GPU/NPU推理工程化实现、前后处理的数学计算,以及自定义算法
- CUDA并行编程
- CANN编程
- 神经网络、计算机视觉算法:目标检测、目标分割、目标跟踪、关键点检测
2. H264,H265编解码有用过吗
H264基础概念
1.SPS(Sequence Parameter Set):保存一组编码视频序列的全局参数
a.profile 视频编码的档次
b.视频长宽
2.PPS
a.I帧
b.P帧
c.B帧
3.PTS和DTS
PTS: 显示时间戳,表示解码后显示的时间
DTS: 解码时间戳,表示送入解码器的顺序
4.H264存储的两个形态
a.Annex B :
StartCode :NALU单元,开头一般是0001或者001
防竞争字节:为了区分 0 0 0 1,它采用0 0 0 0x3 1作为区分
多用于网络流媒体中:rtmp、rtp格式
b.AVCC :
表示NALU长度的前缀,不定长用4、2、1来存储这个NALU的长度
防竞争字节
多用于文件存储中 mp4的格式
编解码流程
编码流程:
1.av_register_all
2.为AVFormatContext 分配内存
3.打开文件
4.创建输出码流AVSream
5.找到编码器
6.打开编码器
7.写文件头,没有的就不写入
8.循环编码视频像素数据->视频压缩数据
循环编码音频采样数据->音频压缩数据 ———>AVFrame转化为AVPacket
9.将编码后的视频码流写入文件 ——>AVPacket转化为AVFormat函数
10.关闭编码器
11.写文件尾
12.关闭资源文件
解码流程:
1.av_register_all
2.创建AVFormatContext的对象上下文
3.打开文件
4. avformat_find_stream_info
5.找到解码器
6.打开解码器
7.创建AVCodecContext上下文
8.av_read_frame :将avPacket数据转换为avFrame数据