精选58道——Android 音视频面试题_安卓音视频面试题(3)

这篇具有很好参考价值的文章主要介绍了精选58道——Android 音视频面试题_安卓音视频面试题(3)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
精选58道——Android 音视频面试题_安卓音视频面试题(3),2024年程序员学习,android,音视频
精选58道——Android 音视频面试题_安卓音视频面试题(3),2024年程序员学习,android,音视频
精选58道——Android 音视频面试题_安卓音视频面试题(3),2024年程序员学习,android,音视频
精选58道——Android 音视频面试题_安卓音视频面试题(3),2024年程序员学习,android,音视频
精选58道——Android 音视频面试题_安卓音视频面试题(3),2024年程序员学习,android,音视频
精选58道——Android 音视频面试题_安卓音视频面试题(3),2024年程序员学习,android,音视频
精选58道——Android 音视频面试题_安卓音视频面试题(3),2024年程序员学习,android,音视频

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注Android)
精选58道——Android 音视频面试题_安卓音视频面试题(3),2024年程序员学习,android,音视频

正文

  • DNS 解析慢
    为了有效降低 DNS 解析对首开的影响,我们可以提前完成播放域名->IP 地址的解析,
    并缓存起来,播放的时候,直接传入带 IP 地址的播放地址,从而省去了 DNS 解析的耗时。
    如果要支持用 IP 地址播放,是需要修改底层 ffmpeg 源码的。
  • 播放策略
    很多侧重点播的播放器,为了减少卡顿,会有一些缓冲策略,当缓冲足够多的数据之后 ,再送入解码播放。

而为了加快首开效果,需要对播放的缓冲策略做一些调整,如果第一帧还没有渲染出来的情况下,
不要做任何缓冲,直接送入解码器解码播放,这样就可以保证没有任何因为「主动」缓冲带来的首开延时。

  • 播放参数设置
    所有基于 ffmpeg 的播放器,都会遇到avformat_find_stream_info这个函数耗时比较久,
    从而增大了首开时间,该函数主要作用是通过读取一定字节的码流数据,
    来分析码流的基本信息,如编码信息、时长、码率、帧率等等,它由两个参数来控制其读取的数据量大小和时长,
    一个是 probesize,一个是 analyzeduration。

减少 probesize 和 analyzeduration 可以有效地减少avformat_find_stream_info的函数耗时,
从而加快首开,但是需要注意的是,设置地太小可能会导致读取的数据量不足,从而无法解析出码流信息,导致播放失败,
或者出现只有音频没有视频,只有视频没有音频的问题。

  • 服务端优化
  • 服务器关键帧缓冲
  • CDN最近策略
3.直方图在图像处理里面最重要的作用是什么?
参考答案
  1. 灰度直方图的定义:灰度级的函数,描述图像中该灰度级的像素个数或该灰度级像素出现的频率。反映了图像灰度分布的情况。
  2. 灰度直方图只能反映图像的灰度分布情况,不能反映图像像素的位置,即所有的空间信息全部丢失。
  • 直方图的应用:
  • a.数字化参数:判断一幅图像是否合理的利用了全部被允许的灰度级范围。一般一幅图应该利用全部或几乎全部可能的灰度级,否则等于增加了量化间隔,丢失的信息将不能恢复。
  • b.边界阈值选取(确定图像二值化的阈值):假定某图像的灰度直方图具有二峰性,则表明这个图像的较亮区域和较暗区域可以很好地分离,以这一点为阈值点,可以得到很好地2值处理效果(区分物体与背景)。
  • c.当物体部分的灰度值比其他部分的灰度值大时,可利用直方图统计图像中物体的面积。
  • d.计算图像的信息量H。
4.数字图像滤波有哪些方法?
参考答案

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

5.图像可以提取的特征有哪些?
参考答案

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

6.衡量图像重建好坏的标准有哪些?怎样计算?
参考答案
  • SNR(信噪比)
  • PSNR=10*log10((2n-1)2/MSE)
    (MSE是原图像与处理图像之间均方误差,所以计算PSNR需要2幅图像的数据!)
  • SSIM
    (结构相似性分别从亮度对比度、对比度、结构3方面度量图像的相似性)
7.AAC和PCM的区别?
参考答案

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

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

9.FFMPEG:图片如何合成视频
参考答案

编码流程:

  1. av_register_all
  2. 为AVFormatContext 分配内存
  3. 打开文件
  4. 创建输出码流AVSream
  5. 找到编码器
  6. 打开编码器
  7. 写文件头,没有的就不写入
  8. 循环编码视频像素数据->视频压缩数据
  • 循环编码音频采样数据->音频压缩数据 ———>AVFrame转化为AVPacket
  1. 将编码后的视频码流写入文件 ——>AVPacket转化为AVFormat函数
  1. 关闭编码器
  2. 写文件尾
  3. 关闭资源文件

解码流程:

  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区别————>替换纹理的内容

10.常见的音视频格式有哪些?
参考答案
  1. MPEG(运动图像专家组)是Motion Picture Experts Group 的缩写。这类格式包括了MPEG-1,MPEG-2和MPEG-4在内的多种视频格式。
  2. AVI,音频视频交错(Audio Video Interleaved)的英文缩写。AVI这个由微软公司发布的视频格式,在视频领域可以说是最悠久的格式之一。
  3. MOV,使用过Mac机的朋友应该多少接触过QuickTime。QuickTime原本是Apple公司用于Mac计算机上的一种图像视频处理软件。
  4. ASF(Advanced Streaming format高级流格式)。ASF 是MICROSOFT 为了和的Real player 竞争而发展出来的一种可以直接在网上观看视频节目的文件压缩格式。
  5. WMV,一种独立于编码方式的在Internet上实时传播多媒体的技术标准,Microsoft公司希望用其取代QuickTime之类的技术标准以及WAV、AVI之类的文件扩展名。
  6. NAVI,如果发现原来的播放软件突然打不开此类格式的AVI文件,那你就要考虑是不是碰到了n AVI。n AVI是New AVI 的缩写,是一个名为Shadow Realm 的地下组织发展起来的一种新视频格式。
  7. 3GP是一种3G流媒体的视频编码格式,主要是为了配合3G网络的高传输速度而开发的,也是目前手机中最为常见的一种视频格式。
  8. REAL VIDEO(RA、RAM)格式由一开始就是定位在视频流应用方面的,也可以说是视频流技术的始创者。
  9. MKV,一种后缀为MKV的视频文件频频出现在网络上,它可在一个文件中集成多条不同类型的音轨和字幕轨,而且其视频编码的自由度也非常大,可以是常见的DivX、XviD、3IVX,甚至可以是RealVideo、QuickTime、WMV 这类流式视频。
  10. FLV是FLASH VIDEO的简称,FLV流媒体格式是一种新的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的使用等缺点。
  11. F4V,作为一种更小更清晰,更利于在网络传播的格式,F4V已经逐渐取代了传统FLV,也已经被大多数主流播放器兼容播放,而不需要通过转换等复杂的方式。
11.请指出“1080p”的意义?
12.请解释颜色的本质及其数字记录原理,并说出几个你所知道的色域。
13.请解释“矢量图”和“位图”的区别?
14.请从“光圈”“快门速度”“感光度”“白平衡”“景深”中任选2个进行叙述?
15.视频分量YUV的意义及数字化格式?
16.在MPEG标准中图像类型有哪些?
17.列举一些音频编解码常用的实现方案?
18.请叙述MPEG视频基本码流结构?
19.sps和pps的区别?
20.请叙述AMR基本码流结构?

由于篇幅限制,有些面试题中的内容记录过多,文章版面放不下,暂且只能用图片方式进展示部分,如需参考完整版的可以参考《Android 音视频面试整理篇》:https://qr18.cn/AcV6Ap

精选58道——Android 音视频面试题_安卓音视频面试题(3),2024年程序员学习,android,音视频

21.说一说ffmpeg的数据结构?
参考答案

ffmpeg的数据结构可以分为以下几类:

精选58道——Android 音视频面试题_安卓音视频面试题(3),2024年程序员学习,android,音视频

  • (1)解协议(http,rtsp,rtmp,mms) AVIOContext,URLProtocol,URLContext主要存储视音频使用的协议的类型以及状态。 URLProtocol存储输入音视频使用的封装格式。每种协议都对应一个URLProtocol结构。(注意:FFMPEG中文件也被当做一种协议“file”)
  • (2)解封装(flv,avi,rmvb,mp4) AVFormatContext主要存储视音频封装格式中包含的信息 ffmpeg支持各种各样的音视频输入和输出文件格式(例如FLV, MKV, MP4, AVI),而 AVInputFormat和AVOutputFormat 结构体则保存了这些格式的信息和一些常规设置。
  • (3)解码(h264,mpeg2,aac,mp3) AVStream是存储每一个视频/音频流信息的结构体。 AVCodecContext: 编解码器上下文结构体,存储该视频/音频流使用解码方式的相关数据。 AVCodec: 每种视频(音频)编解码器(例如H.264解码器)对应一 个该结构体。 三者的关系如下图:
    精选58道——Android 音视频面试题_安卓音视频面试题(3),2024年程序员学习,android,音视频
  • (4)存数据 对于视频,每个结构一般是存一帧;音频可能有好几帧
    • 解码前数据:AVPacket
    • 解码后数据:AVFrame
22.说一说AVFormatContext 和 AVInputFormat之间的关系?
参考答案

精选58道——Android 音视频面试题_安卓音视频面试题(3),2024年程序员学习,android,音视频

  • AVInputFormat被封装在AVFormatContext里
  • AVFormatContext 作为API被外界调用
  • AVInputFormat 主要是FFmpeg内部调用
  • AVFormatContext里保存了视频文件封装格式相关信息,它是负责储存数据的结构体。而AVInputFormat代表了各个封装格式,属于方法,这是一种面向对象的封装。

通过 int avformat_open_input(AVFormatContext **ps, const char filename,AVInputFormat fmt, AVDictionary options)函数装载解封装器. AVFormatContext 和 AVInputFormat之间的关系

23.说一说AVFormatContext, AVStream和AVCodecContext之间的关系?
参考答案

精选58道——Android 音视频面试题_安卓音视频面试题(3),2024年程序员学习,android,音视频

AVStream和AVpacket中都有index字段用于区分不同的码流(视频、音频、字幕等),AVFormatContext中包含输入的AVStream数组用于记录各个码流,nb_streams记录输入码流的数量。AVCodecContext记录着AVStream需要用那种解码器来进行解码。

24.说一说视频拼接处理步骤?(细节处理,比如分辨率大小不一,时间处理等等)
参考答案

尾声

最后,我再重复一次,如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家梳理了多年的架构经验,筹备近6个月最新录制的,相信这份视频能给你带来不一样的启发、收获。

精选58道——Android 音视频面试题_安卓音视频面试题(3),2024年程序员学习,android,音视频

Android进阶学习资料库

一共十个专题,包括了Android进阶所有学习资料,Android进阶视频,Flutter,java基础,kotlin,NDK模块,计算机网络,数据结构与算法,微信小程序,面试题解析,framework源码!
精选58道——Android 音视频面试题_安卓音视频面试题(3),2024年程序员学习,android,音视频

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
精选58道——Android 音视频面试题_安卓音视频面试题(3),2024年程序员学习,android,音视频

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!文章来源地址https://www.toymoban.com/news/detail-860552.html

面试题解析,framework源码!
[外链图片转存中…(img-sigxMiPJ-1713353747070)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-TExQCo6z-1713353747071)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

到了这里,关于精选58道——Android 音视频面试题_安卓音视频面试题(3)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安卓音视频开发(3)—— AudioTrack两种方式播放pcm音频

    前言 之前学习了AudioRecord录制pcm音频,与之对应的就是AudioTrack播放pcm音频(MediaPlayer、SoundPool有其他应用场景),它有两种数据加载模式(MODE_STATIC、MODE_STREAM)。 模式 MODE_STATIC :这种模式下,一次将所有的数据放入一个固定的buffer,然后写入到AudioTrack中,后续就不用继续

    2023年04月22日
    浏览(53)
  • 音视频开发:Qt在视频剪辑3D桌面软件获胜, 嵌入式不敌安卓

    1 Qt Android嵌入式应用层开发方向对比   大家都知道啊,做嵌入式linux设备,一些没有屏幕,比如安防摄像头,门铃之类的,另外一些嵌入式设备是有触控屏,在触控屏上还跑应用软件的,这种比如商场各种自动售卖机,铁路卖票,银行自助服务,车载系统等。 10年前,我大学

    2024年02月09日
    浏览(45)
  • 5G时代下,Android音视频强势崛起,我们该如何快速入门音视频技术?

    作为Android开发者的我们到底应不应该上音视频这条船? 接下来一起分析下。 大趋势 从未来的大趋势来看,随着5G时代的到来,音视频慢慢变成人们日常生活中的必需品。除了在线教育、音视频会议、即时通讯这些必须使用音视频技术的产品外,其它的产品也需要加入音频、

    2024年04月15日
    浏览(77)
  • Android音视频编码(2)

    Android本身提供了音视频编解码工具,很多时候是不需要第三方工具的,比如 ffmpeg , OpenCV 等,在android中引入第三库比较复杂,在Android音视频编码中介绍了如何引入第三方库libpng来进行进行图片处理,同时引入这些第三方库,是程序结构变得复杂。 本文介绍的音视频编解码利

    2024年01月17日
    浏览(51)
  • Android音视频-MediaCodec

    原文:https://mp.weixin.qq.com/s?__biz=MzU3NTA3MDU1OQ==mid=2247484865idx=1sn=174b8ca702466e83e72c7115d91b06eachksm=fd298df1ca5e04e7b2df9dc9f21e5cfe3e910204c905d8605f648ce6f6404432a83ae52a23a3scene=178cur_album_id=1638784435628064770#rd MediaCodec 支持处理三种数据类型,分别是压缩数据(compressed data)、原始音频数据(raw audio d

    2023年04月08日
    浏览(80)
  • Android之 集成音视频通话

    一,背景 1.1 最近接收一个即时通讯二开项目,即时通讯部分用的XMPP协议,音视频则是集成的国外的开源免费库jitsi-meet-sdk-2.4.0-4.aar,是基于WebRTC的开源框架。但客户想要微信那种页面的排版,后来经研究jitsi是不能修改UI的,UI部分是用混合框架ReactNative写的,这样难度就大了

    2024年02月12日
    浏览(64)
  • Android音视频之协议介绍

    本文对音视频的协议起源做详细介绍,学习之后可以加深对音视频知识的了解。 这里的音视频不仅针对Android平台,其他平台也通用。 一般是指以某种格式封装了音视频数据的文件 常见的音频格式:mp3、wma、avi、rm、rmvb、flv、mpg、mov、mkv等。 常见的视频格式:rmvb、rm、wmv、

    2023年04月19日
    浏览(56)
  • Android 音视频开发 - VideoView

    本篇文章主要介绍下Android 中的VideoView. VideoView是一个用于播放视频的视图组件,可以方便地在应用程序中播放本地或网络上的视频文件。 VideoView可以直接在布局文件中使用,也可以在代码中动态创建。 它封装了MediaPlayer和SurfaceView,提供了简单的接口来控制视频的播放和显示

    2024年04月08日
    浏览(95)
  • Android音视频: 引入FFmpeg

    本文你可以了解到 本文将介绍如何将上一篇文章编译出来的  FFmpeg so  库,引入到  Android  工程中,并验证  so  是否可以正常使用。 一、开启 Android 原生 C/C++ 支持 在过去,通常使用  makefile  的方式在项目中引入  C/C++  代码支持,随着  Android Studio  的普及, makefile  的

    2024年02月02日
    浏览(70)
  • Android音视频开发 - MediaMetadataRetriever 相关

    MediaMetadataRetriever 是android中用于从媒体文件中提取元数据新的类. 可以获取音频,视频和图像文件的各种信息,如时长,标题,封面等. 需要申请 读写权限 . 这里我使用的是本地路径, 需要注意的是如果路径文件不存在,会抛出 IllegalArgumentException,具体的源码如下: 根据keyCode返回keyC

    2024年04月08日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包