恭喜涨薪!!!

一、前言:

大家好,最近我们星球上有两个星友顺利拿到了不错的offer:

  • 星友一:

a9a1418122290b3cdea4356769b0a7c3.png 2386cfd79f082d271db6ba8a77b9e270.png
  • 星友二:

c3bafb19cc23b71855a4579be1c5d41e.png 881357107b9f819860f818c673cb02f7.png 1ce2df5591e37372a7f86cb67ff4563e.png

看到他们发消息过来,真的为他们感到高兴,特别是第一个星友,从另外一个行业转我过来,光写简历问题就找过我三次,中间他自己面试过了好多家公司,都看他经验太少,但是老实说,刚转行到这个行业,有啥这块的经验(除了平时学习这块的知识点,但是离产品技术还是有点不一样,实战开发和平时学习还是非常不一样的!),毕竟技术点不一样,唯一可靠的就是自身编程能力和学习能力!

加上最近市场,挺难找的,所以真的非常不容易,真心为这位朋友感到高兴!

第二位星友,是有一定的经验,然后靠自己的经验和我们星球的音视频编解码实战项目巩固,拿到了一个非常不错的offer!

最后我想说的是,通过面试我们会发现很多问题,技术研究的不深,没有明白里面真正原理,这个也是我们平时开发的时候,自身要注意的地方,不要自己开发了这东西出来,连里面深一点的技术原理都讲解不出来,那干的很多都是重复性工作,或者说是维护性的工作,这种后期比较危险!所以平时有空自身还是多折腾!!!

这里也说一些真心话,有些朋友觉得进星球700块贵了,但是如果你跳槽涨了大几千,这个700块还贵了嘛?而且你本身就对音视频感兴趣,只是缺乏实践能力!同时通过这个学习,既能学习到技术,又能涨薪,这不香嘛?

平时觉得没有提升,可以出去面试看看,一定可以发现自己的问题点!

下面是一些面试总结题目:

二、面试题目:

1、说一下RKNN的开发、部署步骤:

  • RKNN的部署工作一般以下步骤:

RKNN的部署一般要部署三个文件,分别是:box_priors.txt坐标权重文件、SSD模型文件、coco_labels_list.txt训练集文件。把这三个文件放到板子对应目录下。

  • RKNN的开发步骤,一般分为以下几步:

a3de322a942bad2c69e4c2d23e44342f.png
  • 第一步,读取模型文件:这个模型文件可以是ssd模型、 yolo模型等。

  • 第二步,初始化rknn模块,调用的API是rknn_init。

  • 第三步,对视频数据进行RKNN识别。识别的步骤如下:首先,先调用RK_MPI_SYS_GetMediaBuffer或者每一帧视频数据,并把每一帧数据进行格式转换(RKNN模型中只识别RGB24,所以要把NV12数据转换成RGB24),格式转换完成之后,把RGB24的数据传给RKNN的输入模块(调用的API是rknn_inputs_set)。输入模块设置完成之后,则调用rknn_run开启识别工作,并实时把输出的结果拿到(调用rknn_outputs_get获取识别出来后的结果)。

  • 第四步,把识别出来的结果进行可视化操作。可视化操作分下面几个步骤:第一步,读取SSD数据集(coco_labels_list.txt)和坐标系数(box_priors.txt)。然后根据识别出来的结果和box_priors.txt进行过滤,找出最合适的识别个数。然后根据最优识别个数进行排序和非极大抑制(NMS)找出最优的矩形框。

2、说一下播放器的设计:

3c485890f7a06dd2e0174105a6fb8392.png
  • 设计播放器第一步就是先用ffmpeg对音视频流进行复合流解复用。若检测到视频索引(video_index)则把视频编码数据存放到视频编码队列,否则检测到音频索引(audio_index)存放到音频编码队列。

  • 分别创建两个线程分别对音视频数据进行解码,在视频解码线程里面则要从视频队列取出数据然后用视频解码器对数据进行解码,解码完成之后则把数据存放到视频解码队列上面。在音频解码线程里面,则从音频队列拿出数据用音频解码器对其解码,音频解码完成之后则存放到音频解码队列。

  • 再创建一个音视频同步线程,对音视频的解码数据进行音视频同步纠错机制。音视频同步纠错机制使用的是以音频时钟为基准,然后视频根据音频时钟进行对应的同步纠错(这部分建议看ffplay源码)。同步完成之后,视频则输出到视频SDL播放器进行播放、音频则给到ALSA播放。

  • 注意:在设计播放器设计的时候,需要经常用队列存放数据。包括存放编码数据和解码数据,这是因为在数据收发的时候速度是非常地快。若不使用队列进行临时存储的话,就会导致两边的速度跟不上,就会产生丢包、花屏的情况。

3、说一下软解码和硬件解码的区别:

硬件编解码:指的是使用不通过CPU进行解码,而使用硬件的特定编解码器进行音视频的编解码工作,出名的硬件编解码器,包括:海思MPP硬件编解码、瑞芯微MPP编解码器、英伟达硬件编解码器等。硬件编解码器的优势在于,把编解码的工作交给特定的硬件接口处理,这样就可以大大降低CPU使用率,腾出更多的CPU资源去处理其他更重要的业务。

软件编解码:指的是使用CPU资源去进行音视频编解码工作,用这种进行编解码的话CPU资源会大幅度用在编解码工作上面。用软件编解码器进行编解码工作的时候,一定要评估好自己CPU资源是否足够。若CPU处理能力不够强,使用软件编解码去进行编解码会导致卡顿、花屏等问题。

  • 注意:在一般的嵌入式工作中使用硬件编解码器对音视频做编解码器进行编解码器进行处理,因为一般的硬件芯片都会提供对应的API接口去进行音视频的编解码,用硬件编解码器做音视频的工作可以大大提高性能。所以在嵌入式音视频项目中,基本上都是用硬件编解码器去开发。

4、说一下RK3399和RK3568最多能解码多少条流:

RK3399最多解码7-8路码流,RK3568最多能解码16条流。

最后:

如果大家确实对嵌入式音视频感兴趣的话,可以加入星球来学习,大家关心的,视频课程有没有期限,这个放心,是永久的,也不会说让大家后期交什么其他的费用。

还有课程,后面会考虑添加isp的讲解,目前课程得先把解码的内容讲解完!

星球入口:

e5b5b4ae7cc8bf60dde0ce5e00853b6d.jpeg

个人微信:

05cea109b5d0e66b30c96ada2b1b68c2.png

猜你喜欢

转载自blog.csdn.net/Dada_ping/article/details/130177968