压箱底的音视频学习资料以及面经整理

本文原文包含链接较多,这边发不了,想看完整版的可以关注我的公众号:程序喵大人,搜本文标题

大家好,我是程序喵。

本人是主要从事音视频相关的开发工作,但发现网上关于音视频的学习资料都比较零散,而且也没有一套比较全面的面经,所以我把自己这几年整理的相关资料都掏出来给大家。(获取完整版pdf文档请在公众号后台回复“微信”,添加我微信领取)

咳咳:这篇文章我本来都想开付费阅读了,因为真的耗费了我极大精力。后来想想还是算了,支持的就点个赞、转发、在看吧。

废话不多数,直接上干货,内容都是自己整理的,有些地方难免有错误,大家见谅哈。

  • 音频处理需要理解的概念有哪些?

    • 采样率:每秒采集声音的数量HZ,一般为44100HZ

  • 采样精度:每次采样的精度位数,位数越多,能记录的范围就越大,一般为16bit。

  • 通道:单声道,双声道,四声道等。

  • 比特率:也叫码率,比特率 = 采样率 x 采样精度 x 通道数

  • 采样率44100,采样精度16,通道2的比特率为44100*16*2bps。

  • wav格式:前44字节(有可能比44字节多)记录采样率通道等信息,后面就是pcm裸数据。【http://soundfile.sapp.org/doc/WaveFormat/】

  • aac格式:一般packet为adts头+编码数据;如果是将aac封装到mp4容器中,则不需要为每个aac packet添加adts,音频信息和偏移量可以存储到moov中,然后直接存储aac packet即可。

  • https://zhuanlan.zhihu.com/p/34295106

  • https://blog.csdn.net/yuhengyue/article/details/91443191

  • PCM音频数据是如何组织的?

    • PCM数据是指未经压缩的音频采样数据裸流,它是模拟信号经过采样、量化、编码转换成的标准数字音频数据。

  • 一般都是LRLR方式

  • https://www.jianshu.com/p/e568f94cdf6a

  • https://blog.csdn.net/qq_31186123/article/details/80060102

  • https://www.zhihu.com/question/29721784

  • https://blog.csdn.net/lifei092/article/details/80990813

  • pcm数据经过AAC编码器编码后,直接写文件会怎么样?

    • 不能播放,需要为aac对每一个packet添加adts头,形成adts帧,即可播放。

  • 还有一种方式是ADIF格式,头信息只在文件头部,解码必须从头部开始,获取头信息后,剩下全是音频数据,但是这种格式的解码必须在开头位置进行。

  • https://blog.51cto.com/u_15072920/3950445【adts一般为7字节,也有可能9字节】

  • https://blog.csdn.net/user_jiang/article/details/108033848

  • https://juejin.im/post/5d6b83646fb9a06af7124c40

  • 将AAC封装到mp4容器中,是否需要为每个AAC packet添加ADTS?

    • 不需要,因为moov里存储里aac的具体声音信息和每个packet的偏移量,可以不需要adts。

  • https://www.cnblogs.com/chyingp/p/mp4-file-format.html【mp4格式介绍】

  • https://zhuanlan.zhihu.com/p/374140861【mp4格式介绍】

  • https://www.cnblogs.com/zhangxuan/p/8809245.html

  • https://blog.csdn.net/skdkjzz/article/details/40506473

  • AAC(Advance Audio Coding)封装有哪些规格,ADTS帧头包含哪些字段和含义

    • ADIF格式,头信息只在文件头部,解码必须从头部开始,获取头信息后,剩下全是音频数据,但是这种格式的解码必须在开头位置进行。

  • ADTS格式,每个packet都有个header,可以从任何位置开始。

  • 如图 https://zhuanlan.zhihu.com/p/162998699

正在上传…重新上传取消

  • WAV格式,WAV的数据头的最小大小和作用

    • 上面介绍过,前44字节(有可能比44字节多)记录采样率通道等信息,后面就是pcm裸数据。

  • 介绍信号的时域和频域?

    • 时域:信号在时间轴随时间变化的总体概括,时间和振幅的关系【横轴是时间,纵轴是信号的变化幅度】

  • 频域:频谱图,频率和振幅的关系【横轴是频率,纵轴是信号的变化幅度】

  • https://www.zhihu.com/question/21040374

  • RTP数据包格式

    • real-time transport protocol实时传输协议。

  • https://zhuanlan.zhihu.com/p/86919417

  • 简述H264格式

    • 目标:高的视频压缩比、良好的网络亲和性,适用于各种传输网络

  • 分层:目的是?

    • 视频编码层VCL:VCL数据是编码处理的输出,表示被压缩编码后的视频数据序列。【编码/压缩、切分】

  • 网络提取层NAL:VCL数据传输和存储之前,这些VCL数据,会被封装进NAL单元中。【打包】

  • NALU结构

  • Header有一个字节,8个比特位(1,2,5)

    • 1(forbidden_zero_bit):正常为0,当前NALU存在错误时才为1

  • 2(nal_ref_idc):NALU的重要性,0-3,值越大越重要,0表示非参考帧(其他帧解码时不需要参考该帧),如果NALU是参考帧或SPS、PPS重要数据时会大于0。

  • 5(nal_unit_type):当前NALU的类型,具体类型如下图:

  • NALU Body,如图:

  • NALU = header + EBSP = header  + 0x03 + RBSP = header + 0x03 + SODB + 补齐字节

  • 一个NALU可以代表一个完整的帧吗?

    • 不可以,看nal_unit_type,5代表完整帧,1-4不一定是完整帧。

  • 多个NAL单元组成一个Access Unit,多个Access Unit再组成一个视频编码序列(即原始视频的一帧一帧的像素数据经过编码之后的结构组成的序列)。

  • nal_unit_type的第9位才表示是不是一个完整帧结束。

  • SPS:序列参数集,保存编码序列的全局参数,主要是profile(baseline、main、extended profile)

  • PPS:图像参数集,保存整体图像相关的参数,每一帧可能有不同的设置信息,初始QP,分块信息等。

  • IDR:后面的帧不会参考IDR之前的帧,可以刷新缓冲队列。

  • Slice:主要就是表示IBP帧。

  • SEI:补充增强帧,可以增加图像参数、用户信息等。

完整文章可以关注公众号:程序喵大人

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序喵大人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值