【Android面试】音视频开发高频面试题

1.为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?

1)空间冗余:图像相邻像素之间有较强的相关性

2)时间冗余:视频序列的相邻图像之间内容相似

3)编码冗余:不同像素值出现的概率不同

4)视觉冗余:人的视觉系统对某些细节不敏感

5)知识冗余:规律性的结构可由先验知识和背景知识得到

2.怎么做到直播秒开优化?

  • DNS 解析慢 为了有效降低 DNS 解析对首开的影响,我们可以提前完成播放域名->IP 地址的解析, 并缓存起 来, 播放的时候,直接传入带 IP 地址的播放地址,从而省去了 DNS 解析的耗时。 如果要支持用 IP 地址播放, 是需 要修改底层 ffffmpeg 源码的。
  • 播放策略 很多侧重点播的播放器,为了减少卡顿,会有一些缓冲策略,当缓冲足够多的数据之后 ,再送入解码播放。 而为了加快首开效果,需要对播放的缓冲策略做一些调整,如果第一帧还没有渲染出来的情况下, 不要做任何缓冲,直接送入解码器解码播放,这样就可以保证没有任何因为「主动」缓冲带来的首开延时。
  • 播放参数设置 所有基于 ffffmpeg 的播放器,都会遇到avformat_fifind_stream_info这个函数耗时比较久, 从而增大了首开时间,该函数主要作用是通过读取一定字节的码流数据, 来分析码流的基本信息,如编码信息、时长、码率、帧率等等,它由两个参数来控制其读取的数据量大小和时长, 一个是 probesize,一个是analyzeduration。 减少 probesize 和 analyzeduration 可以有效地减少avformat_fifind_stream_info的函数耗时, 从而加快首开,但是需要注意的是,设置地太小可能会导致读取的数据量不足,从而无法解析出码流信息,导致播放失败, 或者出现只有音频没有视频,只有视频没有音频的问题。
  • 服务端优化
  • 服务器关键帧缓冲
  • CDN最近策略

3.数字图像滤波有哪些方法?

均值滤波(邻域平均法)、中值滤波(消除独立的噪声点)、高斯滤波(线性平滑滤波,消除高斯噪声,对整幅图像进行 加权平均,每一个像素点的值都由其本身和邻域内的其他像素值经过加权平均后得到)、KNN滤波、高通滤波、低通滤波 等。

4.图像可以提取的特征有哪些?

颜色、纹理(粗糙度、方向度、对比度)、形状(曲率、离心率、主轴方向)、色彩等。

5.衡量图像重建好坏的标准有哪些?怎样计算?

  • SNR(信噪比)
  • PSNR=10*log10((2^n-1)^2/MSE) (MSE是原图像与处理图像之间均方误差,所以计算PSNR需要2幅图像的数据!)
  • SSIM (结构相似性分别从亮度对比度、对比度、结构3方面度量图像的相似性)

6.AAC和PCM的区别?

AAC在数据开始时候加了一些参数:采样率、声道、采样大小

7.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的格式

8.请叙述MPEG视频基本码流结构?

  1. Sequence Header
  2. Sequence Extention
  3. Group of picture Header
  4. Picture Header
  5. Picture coding extension
#android面试#
全部评论
第六题这么回答会不会太简单了?
点赞 回复 分享
发布于 2023-02-26 13:30 辽宁
这也太详细了吧,谢谢分享
点赞 回复 分享
发布于 2023-02-26 13:03 四川

相关推荐

04-29 18:58
已编辑
门头沟学院 C++
4.10 投递4.14 约面4.16 一面(面完半小时通知二面)4.22 二面(面完第二天约三面)4.25 三面(面完第2天约HR面)4.29 hr面(当天晚上oc)字节劳动节后希望立刻到岗 许愿许愿...  ❤一面 ❤面试45分钟 以简历内容为主1 项目拷打    介绍一下消息队列项目,   为什么选择rabbitMQ,    消息持久化存储是如何实现的   消费者轮询介绍一下   影响性能的主要因素,如何提升性能   对高并发的理解    是否会继续维护项目   介绍一下高并发服务器项目   ...2 八股    进程间通信的方案    介绍一下多线程    介绍一下 epoll 与 select    ...3 代码 删除倒数第n个节点 大文件处理 ❤二面 ❤大概35分钟,过程很短,面试官很和蔼。主要是项目拷打 ,手撕了一道题 时长有点短 有些担心要被挂1 项目拷打     消息队列的设计思路    为什么选择RabbitMQ 其他有了解吗2 手撕    寻找一个序列中的比左边都大 比右边都小的 元素索引,时间复杂度O(n)3 开放性交流    谈一谈你对C/C++的理解,以及常用的特性。3 反问 ❤三面 ❤大概45分钟 ,压力面,问的很深捏 ,感觉要被刷了哎1. 谈一谈项目 消息队列怎么实现的 内部细节       消息队列如何保证至少一次读取 保证最多一次读取 只读取一次,有没有考虑过消息的安全      消息队列有没有测试过性能,怎么样?      高并发服务器有没有测试过,什么机器上测试的,有没有关注cpu占用 ,延迟...       了解的锁有哪些 可以谈一谈具体使用情况吗?       文件系统的底层有了解过吗?对于高并发读写时如何实现的?       高并发服务器是如何实现高并发的,谈一谈具体的框架2 手撕大数减法 20分钟差一点细节写完3 谈一谈我的情况 可以实现几个月 学校课程 ... 4 反问 ❤hr面 ❤大概15分钟 非常快速的一个面试。 感觉主要是确认稳定性。1. 自我介绍2. 目前具备什么能力,可以快速接手业务吗3. 学校这边可以处理好吗4. 双向选择5. 有无其他offer6. 反问    
投递字节跳动等公司7个岗位
点赞 评论 收藏
分享
评论
7
34
分享

创作者周榜

更多
牛客网
牛客企业服务