求职者:首先需要从封装格式概念讲起,慢慢深入到封装格式基础下,然后散发解封装与封装过程
(1)封装格式(也叫容器)就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中,也就
是说仅仅是一个外壳,可以把它当成一个放视频轨和音频轨的文件夹也可以。
(2)通俗点说视频轨相当于饭,而音频轨相当于菜,封装格式就是一个碗,或者一个锅,用来盛放饭菜的容
器。
(3)封装格式和专利是有关系的,关系到推出封装格式的公司的盈利。
(4)有了封装格式,才能把字幕,配音,音频和视频组合起来。
(5)常见的AVI、RMVB、MKV、ASF、WMV、MP4、3GP、FLV等文件都指的是一种封装格式。
举例MKV格式的封装:
三、面试官: 一个视频文件是否可以完成倒放(或者你们的倒放如何实现)
心理分析:面试官考的是 是否有经历过音视频剪辑相关的经验,需要从求职者中得到的答案,不是
“能”或者“不能” 而是分析为什么不能倒放,
不能倒放的本质原因,对I B P有有没有了解
求职者:倒放在视频剪辑中 是必备功能,按常理来看,倒放肯定是能够实现的,但是问题就出现在
这里,求职者如果对视频编码原理不理解的话,对视频倒放肯定打不上来的,求职者需要首先答对
“一个视频不能实现倒放,两个文件可以" 这个入手, 再从编解码入手 讲解为什么不能实现倒放
答案
第一种方式:
- 从第一个gop然后顺序解码
- 将一个解码的gop的yuv写入文件中
- 将第二个gop顺序解码yuv写入文件
- 第三个gop序列,以此类推…
然后倒序读入内存中,进行编码即可.
缺点:如果文件过大,不能使用此方法,因为yuv文件较大,一分钟yuv就有1-2G左右,有可能撑爆sdcard.
第二种方式
- 全部遍历视频一遍,获取一共有多少gop序列
- 跳到(seek)到最后一个gop的I帧,然后把这个gop解码的yuv存放在sdcard
- 再逆序读出这个解码的gop的yuv,进行编码,这样最后一个gop就变成了第一帧的gop;
- 接下来seek到倒数第一个gop的I帧,依次类推,把每个gop解码、然后编码
其实在音视频岗位面试中,问到得远远不止上面的相关问题,上述知识举例,还有更多内容可以面试题可以参考:
1.什么是I帧 P帧 B帧?
2.简述H264视频编码流程?
3.视频能倒放吗,倒放如何实现?
4.硬编码与软编码有什么区别?
5.你对sps 和pps的理解?
6.如何从一段残缺H264数据 解析出画面?
7.讲讲MediaCodec硬编码底层解码机制?
8.音频播放过快,视频慢,如何选择丢帧
9.码率和分辨率都会影响视频的清晰度
10.生产者和消费者的关系
11.sps和pps的区别
12.……
对一些没有学习过、了解过音视频这块知识点的朋友,仿佛是在看天书一般,在这里请大家不要着急,在这为大家准备了《Android 音视频开发入门到精通》的学习笔记,帮助大家快速提升。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!