FFMPEG音视频基础问题和被面试问到的东西
一、YUV的格式
1.planner模式
2.packet模式
3.半planner模式
https://www.jianshu.com/p/538ee63f4c1c YUV格式详解
二、H264基础概念
1.SPS
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.音频播放过快,视频慢,如何选择丢帧
2.码率和分辨率都会影响视频的清晰度
3.生产者和消费者多多的关系
4.C++死锁的成因:
A.忘记释放锁
B.单线程重复申请锁,对同一个事物加两遍锁
C.双线程多锁申请,都是指对一个事物加锁
D.环形锁申请 A锁B、B锁A
5.sps和pps的区别
SPS是序列参数集 0x67
PPS是图像参数集 0x68
在SPS序列参数集中可以解析出图像的宽,高和帧率等信息。而在h264文件中,最开始的两帧数据就是SPS和PPS,这个h264文件只存在一个SPS帧和一个PPS帧。
7.AAC和PCM的区别
AAC在数据开始时候加了一些参数:采样率、声道、采样大小
FFMPEG:
图片如何合成视频
编码流程:
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数据
glUniform1i() ——>这个可以设置对应纹理的第几层
glTexSubImage2D() 和glTexImage2D区别————>替换纹理的内容
几个不粗的网址
atomic_thread_fence https://blog.csdn.net/wxj1992/article/details/103917093
https://www.cnblogs.com/yskn/p/9355556.html
https://blog.csdn.net/liumf2005/article/details/8489265 内存屏障
https://wiki.corp.kuaishou.com/pages/viewpage.action?pageId=230931344 音视频常见的文档
FFMPEG的教程文档:
http://ffmpeg.org/documentation.html
https://blog.csdn.net/leixiaohua1020/article/details/50618190 音视频滤镜使用
https://www.cnblogs.com/fandx/p/12208107.html. FFMPEG分析一个流、包、帧的结构
https://www.cnblogs.com/leisure_chn/p/10584901.html 编辑代码的一些基础
FFMPEG面试大纲:
https://zhuanlan.zhihu.com/p/126693434
播放器的seek操作内部是如何实现的?
https://github.com/yhaolpz/FFmpegCmd ————>这个是一个demo,可以学学
https://www.cnblogs.com/leisure_chn/p/10429145.html —————>这个人写的音视频博客很强,关于FFMPEG的
https://www.cnblogs.com/inception6-lxc/p/8686156.html C++的面试大全文档
未来要学习的FFMPEG代码
https://p.codekk.com/detail/c/xufuji456/FFmpegAndroid
https://p.codekk.com/detail/Android/LanSoSdk/LanSoEditor_common
https://www.jianshu.com/u/35083fcb7747
FFmpeg - 打造一款万能的音乐播放器
https://www.jianshu.com/p/d8300535bbf0
FFMPEG的学习库的文档
http://ffmpeg.org/doxygen/trunk/files.html
即将下载
https://github.com/leixiaohua1020/simplest_ffmpeg_mobile
https://github.com/mabeijianxi/FFmpeg4Android
https://github.com/tanersener/mobile-ffmpeg
https://github.com/WangShuo1143368701/FFmpegAndroid
https://blog.csdn.net/leixiaohua1020/article/list/1 雷振华的网址
这两篇文章差不多,可以综合参考一下
音视频高手开发系列之FFMPEG结构体分析
https://blog.csdn.net/leixiaohua1020/article/details/14215821
基本数据结构的解释
https://www.jianshu.com/p/9bc380f5225c?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
OpenGL的学习
https://github.com/wangchao0837/OpenGlCameraRender
美图秀秀demo
https://github.com/wuhaoyu1990/MagicCamera
疯狂学习openGL
https://search.bilibili.com/all?keyword=OpenGL%20%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E6%88%90%E9%AD%94 ———————————
https://www.jianshu.com/p/eea4d8582499 ———————这个OPENGL的博客可以仔细看看
https://blog.csdn.net/u010607947/article/details/76431474?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v28-1-76431474.nonecase&utm_term=dot%20opengl%20函数&spm=1000.2123.3001.4430 ——————————————OPENGL内置变量和函数
https://www.bilibili.com/video/BV1t7411E723?p=1 OPENGL的学习
https://ke.qq.com/course/2263825 FFMPEG的视频
https://ke.qq.com/course/143145 性能架构视频
https://ke.qq.com/course/441819
posted on 2020-11-30 23:23 zhang11111wei 阅读(5121) 评论(0) 编辑 收藏 举报