继续创造,加速成长!这是我参加「日新计划 10 月更文应战」的第2天,点击查看活动详情
以下主要针对往期收录的面试题进行一个分类概括整理,方便咱们统一回顾和参阅。本篇是第七集~
强调一下:因篇幅问题:文中只放部分内容,悉数面试开发文档需求的可在大众号<Android苦做舟>获取。
第一篇面试题在这: Android中高级进阶开发面试题冲刺合集(一)
第二篇面试题在这: Android中高级进阶开发面试题冲刺合集(二)
第三篇面试题在这: Android中高级进阶开发面试题冲刺合集(三)
第四篇面试题在这: Android中高级进阶开发面试题冲刺合集(四)
第五篇面试题在这: Android中高级进阶开发面试题冲刺合集(五)
第六篇面试题在这: Android中高级进阶开发面试题冲刺合集(六)
音视频开发面试题
1.为什么巨大的原始视频能够编码成很小的视频呢?这其间的技能是什么呢?
参阅答案:
- 1)空间冗余:图画相邻像素之间有较强的相关性
- 2)时刻冗余:视频序列的相邻图画之间内容类似
- 3)编码冗余:不同像素值呈现的概率不同
- 4)视觉冗余:人的视觉体系对某些细节不敏感
- 5)常识冗余:规律性的结构可由先验常识和背景常识得到
2.怎么做到直播秒开优化?
参阅答案:
- DNS 解析慢 为了有用下降 DNS 解析对首开的影响,咱们能够提早完结播映域名->IP 地址的解析, 并缓存起来,播映的时候,直接传入带 IP 地址的播映地址,然后省去了 DNS 解析的耗时。 假如要支撑用 IP 地址播映,是需求修正底层 ffmpeg 源码的。
- 播映战略 很多偏要点播的播映器,为了削减卡顿,会有一些缓冲战略,当缓冲足够多的数据之后 ,再送入解码播映。
而为了加快首开作用,需求对播映的缓冲战略做一些调整,假如第一帧还没有渲染出来的状况下, 不要做任何缓冲,直接送入解码器解码播映,这样就能够确保没有任何因为「自动」缓冲带来的首开延时。
- 播映参数设置 一切依据 ffmpeg 的播映器,都会遇到avformat_find_stream_info这个函数耗时比较久, 然后增大了首开时刻,该函数主要作用是经过读取必定字节的码流数据, 来剖析码流的根本信息,如编码信息、时长、码率、帧率等等,它由两个参数来操控其读取的数据量巨细和时长, 一个是 probesize,一个是 analyzeduration。
削减 probesize 和 analyzeduration 能够有用地削减avformat_find_stream_info的函数耗时, 然后加快首开,可是需求留意的是,设置地太小或许会导致读取的数据量不足,然后无法解分出码流信息,导致播映失败, 或许呈现只要音频没有视频,只要视频没有音频的问题。
- 服务端优化
- 服务器关键帧缓冲
- CDN最近战略
3.直方图在图画处理里面最重要的作用是什么?
参阅答案:
- 灰度直方图的定义:灰度级的函数,描绘图画中该灰度级的像素个数或该灰度级像素呈现的频率。反映了图画灰度散布的状况。
- 灰度直方图只能反映图画的灰度散布状况,不能反映图画像素的位置,即一切的空间信息悉数丢掉。
- 直方图的应用:
- a.数字化参数:判别一幅图画是否合理的运用了悉数被允许的灰度级规模。一般一幅图应该运用悉数或几乎悉数或许的灰度级,否则等于增加了量化间隔,丢掉的信息将不能恢复。
- b.鸿沟阈值选取(确定图画二值化的阈值):假定某图画的灰度直方图具有二峰性,则表明这个图画的较亮区域和较暗区域能够很好地别离,以这一点为阈值点,能够得到很好地2值处理作用(差异物体与背景)。
- c.当物体部分的灰度值比其他部分的灰度值大时,可运用直方图统计图画中物体的面积。
- d.核算图画的信息量H。
4.说一说ffmpeg的数据结构?
参阅答案:
ffmpeg的数据结构能够分为以下几类:
-
(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解码器)对应一 个该结构体。
三者的联系如下图:
-
(4)存数据 关于视频,每个结构一般是存一帧;音频或许有好几帧
- 解码前数据:AVPacket
- 解码后数据:AVFrame
5.数字图画滤波有哪些办法?
参阅答案:
均值滤波(邻域平均法)、中值滤波(消除独立的噪声点)、高斯滤波(线性滑润滤波,消除高斯噪声,对整幅图画进行加权平均,每一个像素点的值都由其自身和邻域内的其他像素值经过加权平均后得到)、KNN滤波、高通滤波、低通滤波等。
6.图画能够提取的特征有哪些?
参阅答案:
色彩、纹路(粗糙度、方向度、对比度)、形状(曲率、离心率、主轴方向)、色彩等。
7.衡量图画重建好坏的规范有哪些?怎样核算?
参阅答案:
- SNR(信噪比)
- PSNR=10*log10((2^n-1)^2/MSE) (MSE是原图画与处理图画之间均方差错,所以核算PSNR需求2幅图画的数据!)
- SSIM (结构类似性别离从亮度对比度、对比度、结构3方面衡量图画的类似性)
8.AAC和PCM的差异?
参阅答案:
AAC在数据开端时候加了一些参数:采样率、声道、采样巨细
9.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的格局
10.FFMPEG:图片怎么合成视频
参阅答案:
编码流程:
- av_register_all
- 为AVFormatContext 分配内存
- 翻开文件
- 创立输出码流AVSream
- 找到编码器
- 翻开编码器
- 写文件头,没有的就不写入
- 循环编码视频像素数据->视频紧缩数据
- 循环编码音频采样数据->音频紧缩数据 ———>AVFrame转化为AVPacket
- 将编码后的视频码流写入文件 ——>AVPacket转化为AVFormat函数
- 关闭编码器
- 写文件尾
- 关闭资源文件
解码流程:
- av_register_all
- 创立AVFormatContext的目标上下文
- 翻开文件
- avformat_find_stream_info
- 找到解码器
- 翻开解码器
- 创立AVCodecContext上下文
- av_read_frame :将avPacket数据转换为avFrame数据
glUniform1i() ——>这个能够设置对应纹路的第几层 glTexSubImage2D() 和glTexImage2D差异————>替换纹路的内容
11.常见的音视频格局有哪些?
参阅答案:
- MPEG(运动图画专家组)是Motion Picture Experts Group 的缩写。这类格局包含了MPEG-1,MPEG-2和MPEG-4在内的多种视频格局。
- AVI,音频视频交织(Audio Video Interleaved)的英文缩写。AVI这个由微软公司发布的视频格局,在视频领域能够说是最悠长的格局之一。
- MOV,运用过Mac机的朋友应该多少触摸过QuickTime。QuickTime原本是Apple公司用于Mac核算机上的一种图画视频处理软件。
- ASF(Advanced Streaming format高级流格局)。ASF 是MICROSOFT 为了和的Real player 竞赛而发展出来的一种能够直接在网上观看视频节目的文件紧缩格局。
- WMV,一种独立于编码办法的在Internet上实时传达多媒体的技能规范,Microsoft公司期望用其取代QuickTime之类的技能规范以及WAV、AVI之类的文件扩展名。
- NAVI,假如发现原来的播映软件忽然打不开此类格局的AVI文件,那你就要考虑是不是碰到了n AVI。n AVI是New AVI 的缩写,是一个名为Shadow Realm 的地下组织发展起来的一种新视频格局。
- 3GP是一种3G流媒体的视频编码格局,主要是为了配合3G网络的高传输速度而开发的,也是现在手机中最为常见的一种视频格局。
- REAL VIDEO(RA、RAM)格局由一开端便是定位在视频流应用方面的,也能够说是视频流技能的始创者。
- MKV,一种后缀为MKV的视频文件一再呈现在网络上,它可在一个文件中集成多条不同类型的音轨和字幕轨,而且其视频编码的自由度也十分大,能够是常见的DivX、XviD、3IVX,乃至能够是RealVideo、QuickTime、WMV 这类流式视频。
- FLV是FLASH VIDEO的简称,FLV流媒体格局是一种新的视频格局。因为它形成的文件极小、加载速度极快,使得网络观看视频文件成为或许,它的呈现有用地处理了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的运用等缺陷。
- F4V,作为一种更小更清晰,更利于在网络传达的格局,F4V现已逐渐取代了传统FLV,也现已被大多数干流播映器兼容播映,而不需求经过转换等杂乱的办法。
12.列举一些音频编解码常用的实现计划?
参阅答案:
- 第一种便是选用专用的音频芯片对 语音信号进行收集和处理,音频编解码算法集成在硬件内部,如 MP3 编解码芯片、语音合成 剖析芯片等。运用这种计划的长处便是处理速度块,设计周期短;缺陷是局限性比较大,不灵敏,难以进行体系升级。
- 第二种计划便是运用 A/D 收集卡加上核算机组成硬件平台,音频编解码算法由核算机上的软件来实现。运用这种计划的长处是价格便 宜,开发灵敏而且利于体系的升级;缺陷是处理速度较慢,开发难度较大。
- 第三种计划是运用高精度、高速度 的 A/D 收集芯片来完结语音信号的收集,运用可编程的数据处理能力强的芯片来实现语音信号处理的算法,然后 用 ARM 进行操控。选用这种计划的长处是体系升级能力强,能够兼容多种音频紧缩格局乃至未来的音频紧缩格 式,体系本钱较低;缺陷是开发难度较大,设计者需求移植音频的解码算法到相应的 ARM 芯 片中去。
13.在MPEG规范中图画类型有哪些?
参阅答案:
I帧图画, P帧图画, B帧图画
14.请叙说MPEG视频根本码流结构?
参阅答案:
- Sequence Header
- Sequence Extention
- Group of picture Header
- Picture Header
- Picture coding extension
15.sps和pps的差异?
参阅答案:
SPS是序列参数集 0x67 PPS是图画参数集 0x68 在SPS序列参数集中能够解分出图画的宽,高和帧率等信息。而在h264文件中,最开端的两帧数据便是SPS和PPS,这个h264文件只存在一个SPS帧和一个PPS帧。
16.请叙说AMR根本码流结构?
参阅答案:
AMR文件由文件头和数据帧组成,文件头标识占6个字节,后面紧跟着便是音频帧;
格局如下所示:
文件头(占 6 字节)| :— | 语音帧1 | 语音帧2 | … |
- 文件头: 单声道和多声道状况下文件的头部是纷歧致的,单声道状况下的文件头只包含一个Magic number,而多声道状况下文件头既包含Magic number,在其之后还包含一个32位的Chanel description field。多声道状况下的32位通道描绘字符,前28位都是保留字符,有必要设置成0,终究4位阐明运用的声道个数。
- 语音数据: 文件头之后便是时刻上接连的语音帧块了,每个帧块包含若干个8位组对齐的语音帧,相关于若干个声道,从第一个声道开端依次摆放。每一个语音帧都是从一个8位的帧头开端:其间P为填充位有必要设为0,每个帧都是8位组对齐的。
17.说一说AVFormatContext 和 AVInputFormat之间的联系?
参阅答案:
- AVInputFormat被封装在AVFormatContext里
- AVFormatContext 作为API被外界调用
- AVInputFormat 主要是FFmpeg内部调用
- AVFormatContext里保存了视频文件封装格局相关信息,它是担任贮存数据的结构体。而AVInputFormat代表了各个封装格局,归于办法,这是一种面向目标的封装。
经过 int avformat_open_input(AVFormatContext **ps, const char filename,AVInputFormat fmt, AVDictionary options)函数装载解封装器. AVFormatContext 和 AVInputFormat之间的联系
18.说一说AVFormatContext, AVStream和AVCodecContext之间的联系?
参阅答案:
AVStream和AVpacket中都有index字段用于差异不同的码流(视频、音频、字幕等),AVFormatContext中包含输入的AVStream数组用于记载各个码流,nb_streams记载输入码流的数量。AVCodecContext记载着AVStream需求用那种解码器来进行解码。
19.说一说视频拼接处理进程?(细节处理,比方分辨率巨细纷歧,时刻处理等等)
参阅答案:
解封装、解码、决议分辨率巨细、编码、时刻处理、封装。
20.NV21怎么转换成I420?
参阅答案:
首要需求理解为什么需求将NV21转换成I420,这是因为x264只支撑编码I420的数据。 实践上便是YUV420p与YUV420sp之间的转换。 YUV420p与YUV420sp的相关常识请参阅:《音视频基础常识-YUV图画》
21.DTS与PTS共同点?
参阅答案:
- PTS便是Presentation Time Stamp也就说这个帧什么时候会放在显现器上;
- DTS便是Decode Time Stamp,便是说这个帧什么时候被放在编码器去解。 在没有B帧的状况下,DTS和PTS的输出顺序是相同的。
22.影响视频清晰度的指标有哪些?
参阅答案:
帧率 码率 分辨率 量化参数(紧缩比)
23.编解码处理时遇到什么困难?
参阅答案:
ffmpeg 在编解码的进程:
-
运用 ffmpeg 的 libavcoder,libavformat 的库及或许性编解码
-
编码进程:
- 收集出来的视频、音频数据运用 ffmpeg 进行紧缩
- 进行按接连的视频,音频进行分组打包,为了差异各种包,也要包加上包头,包头写上显现时刻戳 PTS,解码时刻戳 DTS,经过网络传输到播映端
-
解码进程:
- 经过 TCP 协议接纳到媒体流,FFmpeg 解封装,解码
- 终究获取到原始视频 YUV,音频 PCM 格局,运用播映器进行播映
24.怎么秒开视频?什么是秒开视频?
参阅答案:
-
- 什么是秒开视频? 秒开是指用户点击播映到看到画面的时刻十分短,在 1 秒之内。
-
- 为什么需求秒开? 现在干流的直播协议是 RTMP,HTTP-FLV 和 HLS,都是依据 TCP 的长衔接。在播映的进程中,若播映端所处的网络环境在一个较佳的状况,此刻播映会很流通。若网络环境不是很安稳,常常会产生颤动,假如播映端没有特殊处理,或许会常常产生卡顿,严峻的乃至会呈现黑屏。而移动直播因为其快捷性,用户能够随时随地建议和观看直播,咱们无法确保用户的网络一向处于十分好的状况,所以,在网络不安稳的状况下确保播映的流通度是十分重要的。
-
-
处理思路
- 3.1 获取关键帧后显现 改写播映器逻辑让播映器拿到第一个关键帧后就给予显现。 GOP 的第一个帧一般都是关键帧,因为加载的数据较少,能够到达 “首帧秒开”。假如直播服务器支撑 GOP 缓存,意味着播映器在和服务器树立衔接后可当即拿到数据,然后省却跨地域和跨运营商的回源传输时刻。 GOP 体现了关键帧的周期,也便是两个关键帧之间的距离,即一个帧组的最大帧数。假设一个视频的安稳帧率是 24fps(即 1 秒 24 帧图画),关键帧周期为 2s,那么一个 GOP 便是 48 张图画。一般来说,每一秒视频至少需求运用一个关键帧。 增加关键帧个数可改进画质(GOP一般为 FPS 的倍数),可是一起增加了带宽和网络负载。这意味着,客户端播映器下载一个 GOP,毕竟该 GOP 存在必定的数据体积,假如播映端网络不佳,有或许不是能够快速在秒级以内下载完该 GOP,进而影响观感体会。 假如不能更改播映器行为逻辑为首帧秒开,直播服务器也能够做一些取巧处理,比方从缓存 GOP 改成缓存双关键帧(削减图画数量),这样能够极大程度地削减播映器加载 GOP 要传输的内容体积。
- 3.2 app 业务逻辑层面优化 比方提早做好 DNS 解析(省却几十毫秒),和提早做好测速选线(择取最优线路)。经过这样的预处理之后,在点击播映按钮时,将极大进步下载功能。
-
一方面,能够围绕传输层面做功能优化;另一方面,能够围绕客户播映行为做业务逻辑优化。两者能够有用的互为补充,作为秒开的优化空间。
-
-
秒开视频计划
- 4.1 优化服务器战略 播映器接入服务器恳求数据的时刻点的视频不必定是关键帧,那么需求比及下一个关键帧的到来,假如关键帧的周期是 2s 的话,那么等候的时刻或许会在 0~2s 的规模内,这段等候的时刻会影响首屏的加载时刻。假如服务器有缓存,则播映端在接入的时候,服务器能够向前找最近的关键帧发给播映端,这样就能够省去等候的时刻,能够大大的削减首屏的加载时刻。
- 4.2 优化播映端战略 播映端恳求到的第一帧数据肯定是关键帧,关键帧能够经过帧内参阅进行解码。这样播映端就能够在接纳到第一个关键帧的时候就当即开端解码显现,而不需求比及缓存必定数量的视频帧才开端解码,这样也能削减首屏画面显现的时刻。
-
-
5 播映端首屏时长的优化 播映器的首屏进程中的几个进程:
- 首屏时刻,指的是从进入直播间开端到第一次看到直播画面的时刻。首屏时刻过长极易导致用户失掉对直播的耐心,下降用户的留存。但游戏直播对画面质量和连贯性的要求高,对应推流端编码后的数据量和其他类型直播比较大的多,怎么下降首屏时刻是一个不小的难题。
- 在播映端的首屏进程中,主要有以下三个操作需求进行:加载直播间 UI(包含播映器自身)、下载直播数据流(未解码)和解码数据播映。其间数据解码播映又细分为以下几个进程:
检测传输协议类型(RTMP、RTSP、HTTP 等)并与服务器树立衔接接纳数据;
视频流解复用得到音视频编码数据(H.264/H.265、AAC 等);
音视频数据解码,音频数据同步至外设,视频数据渲染都屏幕,至此,视频开端播映,首屏时刻结束。
- 总结: 首要,加载 UI 能够以单例的办法进行,能够必定程度地提升首屏展现速度;其次,能够预设解码类型,削减数据类型检测时刻;再次,设定合理的下载缓冲区巨细,尽或许削减下载的数据量,当检测到 I 帧数据,当即开端解码单帧画面进行播映,进步首屏展现时刻。
25.怎么下降推迟?怎么确保流通性?怎么处理卡顿?处理网络颤动?
参阅答案:
产生原因: 确保直播的流通性是指在直播进程中确保播映不产生卡顿,卡顿是指在播映进程中声音和画面呈现阻滞,十分影响用户体会。形成卡顿的原因有几种状况:
推流端网络颤动导致数据无法发送到服务器,形成播映端卡顿; 播映端网络颤动导致数据累计在服务器上拉不下来,形成博凡卡顿。 因为从服务器到播映器的网络状况杂乱,尤其是在 3G 和带宽较差的 WIFI 环境下,颤动和推迟常常产生,导致播映不流通,播映不流通带来的负面影响便是延时增大。怎么在网络颤动的状况下确保播映的流通性和实时性是确保直播功能的难点。
流通度优化: 现在干流的直播协议是 RTMP、HTTP-FLV 和 HLS,都是依据 TCP 的长衔接。在播映的进程中,若播映端所处的网络环境在一个较佳的状况,此刻播映会很流通。若网络环境不是很安稳,常常会产生颤动,假如播映端没有做特殊处理,或许会常常产生卡顿,严峻的乃至会呈现黑屏。而移动直播因为其快捷性,用户能够随时随地建议和观看直播,咱们无法确保用户的网络一向处于一个十分好的状况,所以,在网络不安稳的状况下确保播映的流通度是十分重要的。
为了处理这个问题,首要播映器需求将拉流线程和解码线程分隔,并树立一个缓冲行列用于缓冲音视频数据。拉流线程将从服务器上获取到的音视频放逐入行列,解码线程从行列中获取音视频数据进行解码播映,行列的长度能够调整。当网络产生颤动时,播映器无法从服务器上获取到数据或获取数据的速度较慢,此刻行列中缓存的数据能够起到一个过渡的作用,让用户感觉不到网络产生了颤动。
当然这是关于网络产生颤动的状况所采取的战略,假如播映端的网络迟迟不能恢复或服务器的边缘结点呈现宕机,则需求应用层进行重连或调度。
26.猜测编码的根本原理是什么?
参阅答案:
猜测编码是数据紧缩理论的一个重要分支。依据离散信号之间存在必定相关性特色,运用前面的一个或多个信号对下一个信号进行猜测,然后对实践值和预值的差(猜测差错)进行编码。假如猜测比较精确,那么差错信号就会很小,就能够用较少的码位进行编码,以到达数据紧缩的目的。
原理:运用以往的样本值对新样本值进行猜测,将新样本值的实践值与其猜测值相减,得到差错值,对该差错值进行编码,传送此编码即可。理论上数据源能够精确地用一个数学模型表明,使其输出数据总是与模型的输出一致,因而能够精确地猜测数据,可是实践上猜测器不或许找到如此完美的数学模型;猜测自身不会形成失真。差错值的編码能够选用无失真压縮法或失真压縮法。
27.为什么要有YUV这种数据出来?(YUV比较RGB来说的长处)
参阅答案:
RGB是指光学三原色红、绿和蓝,经过这3种的数值(0-255)改动能够组成其他色彩,全0时为黑色,全255时为白色。RGB是一种依赖于设备的色彩空间:不同设备对特定RGB值的检测和重现都不相同,因为色彩物质(荧光剂或许染料)和它们对红、绿和蓝的单独呼应水平跟着制造商的不同而不同,乃至是同样的设备不同的时刻也不同。
YUV,是一种色彩编码办法。常运用在各个视频处理组件中。三个字母别离表明亮度信号Y和两个色差信号R-Y(即U)、B-Y(即V),作用是描绘印象色彩及饱和度,用于指定像素的色彩。Y’UV的创造是因为彩色电视与黑白电视的过渡时期。黑白视频只要Y视频,也便是灰阶值。与咱们熟知的RGB类似,YUV也是一种色彩编码办法,主要用于电视体系以及模仿视频领域,它将亮度信息(Y)与色彩信息(UV)别离,没有UV信息相同能够显现完好的图画,只不过是黑白的,这样的设计很好地处理了彩色电视机与黑白电视的兼容问题。而且,YUV不像RGB那样要求三个独立的视频信号一起传输,所以用YUV办法传送占用很少的频宽。
YUV和RGB是能够相互转换的,根本上一切图画算法都是依据YUV的,一切显现面板都是接纳RGB数据。
28.H264/H265有什么差异?
参阅答案:
同样的画质和同样的码率,H.265比H2.64 占用的存储空间要少理论50%。假如存储空间相同大,那么意味着,在相同的码率下H.265会比H.264 画质要高一些理论值是30%~40%。
比起H.264,H.265提供了更多不同的工具来下降码率,以编码单位来说,最小的8×8到最大的64×64。信息量不多的区域(色彩改变不明显)区分的宏块较大,编码后的码字较少,而细节多的当地区分的宏块就相应的小和多一些,编码后的码字较多,这样就相当于对图画进行了有要点的编码,然后下降了整体的码率,编码效率就相应进步了。
H.265规范主要是围绕着现有的视频编码规范H.264,在保留了原有的某些技能外,增加了能够改进码流、编码质量、延时及算法杂乱度之间的联系等相关的技能。H.265研讨的主要内容包含,进步紧缩效率、进步鲁棒性和错误恢复能力、削减实时的时延、削减信道获取时刻和随机接入时延、下降杂乱度。
29.视频或许音频传输,你会挑选TCP协议还是UDP协议?为什么?
参阅答案:
挑选UDP协议,UDP实时性好。TCP要确保丢掉的package会被再次重发,确保对方能够收到。 而在视频播映中,假如有一秒钟的信号的确,导致画面呈现了一点瑕疵,那么最合适的办法是把这点瑕疵用随意哪些信号补充上,这样虽然画面有一点点瑕疵可是不影响观看。假如用的TCP的话,这点缺失的信号会被一遍又一遍的发送过来直到接纳端确认收到。这不是音视频播映所期待的。而UDP就很适合这种状况。UDP不会一遍遍发送丢掉的package。
30.平时说的软解和硬解,详细是什么?
参阅答案:
硬解便是硬件解码,指运用GPU来部分替代CPU进行解码,软解便是软件解码,指运用软件让CPU来进行解码。两者的详细差异如下所示:
硬解码:是将原来悉数交由CPU来处理的视频数据的一部分交由GPU来做,而GPU的并行运算能力要远远高于CPU,这样能够大大的下降对CPU的负载,CPU的占用率较低了之后就能够一起运转一些其他的程序了,当然,关于较好的处理器来说,比方i5 2320,或许AMD 任何一款四核心处理器来说,硬解和软件的差异只是个人偏好问题了吧。
软解码:即经过软件让CPU来对视频进行解码处理;而硬解码:指不借助于CPU,而经过专用的子卡设备来独立完结视频解码任务。曾经的VCD/DVD解压卡、视频紧缩卡等都隶归于硬解码这个领域。而现如今,要完结高清解码现已不再需求额定的子卡,因为硬解码的模块现已被整合到显卡GPU的内部,所以现在的干流显卡(集显)都能够支撑硬解码技能。
31.何为直播?何为点播?
参阅答案:
直播:是一个三方交互(主播、服务器、观众),这个交互式实时的!尽管会依据挑选的协议不同而有一些推迟,但咱们仍认为它直播是实时的!—>主播在本地发送音视频给服务器(推流),观众从服务器实时解码(拉流)收看收听主播发送给服务器的音视频(直播内容)。直播是不能快进的点播:首要必定要清晰的一点,点播不存在推流这一进程,你自身你的流现已早就推给服务器了,或许这么说也不对,应该是你的音视频早就上传到了服务器,观众只需求在线收看即可,因为你的音视频上传到了服务器,观众则能够经过快进,快退,调整进度条等办法进行收看!
32.简述推流、拉流的工作流程?
参阅答案:
推流:在直播中,一方向服务器发送恳求,向服务器推送自己正在实时直播的数据,而这些内容在推送到服务器的这一进程中是以 “流” 的方式传递的,这便是“推流”,把音视频数据以流的办法推送(或上传)到服务器的进程便是“推流”! 推流方的音视频往往会很大,在推流的进程中首要依照 aac音频-编码 和 h264视频-编码的规范把推过来的音视频紧缩 ,然后合并成 MP4或许 FLV格局,然后依据直播的封装协议,终究传给服务器完结推流进程。
拉流:与推流正好相反,拉流是用户从服务器获取推流方给服务器的音视频的进程,这便是“拉流”!拉流首要aac音频-解码 和 h.264视频-解码的内部把推过来的音视频解紧缩,然后合成 MP4或许 FLV 格局,再解封装,终究到咱们的客户端与观众进行交互。
33.什么是GOP?
参阅答案:
GOP ( Group of Pictures ) 是一组接连的画面,由一张 I 帧和数张 B / P 帧组成,是视频图画编码器和解码器存取的根本单位。 也便是说GOP组是指一个关键帧I帧所在的组的长度,每个 GOP 组只要 1 个 I 帧。 GOP 组的长度格局也决议了码流的巨细。 GOP越大,中间的P帧和B帧的数量就越多,所以解码出来的视频质量就越高,可是会影响编码效率。
34.音频测验的测验点,音频时延怎么测验?
参阅答案:
测验点:功能,功能,兼容性,耗电量,安全性,压力测验,客观音质POLQA分,音质主观体会,主播到观众时延,观众到观众时延,3A作用 音频时延:经过音频线将2个被测目标衔接在电脑,用PESQ脚本算出音频时延
35.怎么直播APP抓包过来的文件,怎么过滤上行,下行,总码率?
参阅答案:
上行:ip.src192.168.x.x 下行:ip.dst192.168.x.x 总码率:ip.src192.168.x.x and ip.dst192.168.x.x
36.为什么要用FLV?
参阅答案:
是因为传输的协议要求,RTMP协议只支撑FLV格局流
37.平常的视频格局?
参阅答案:
MP4/RMVB/FLY/AVI/MOV/MKV等
38.何为homebrew?你用它安装过什么?常用指令有哪些?
参阅答案:
homebrew是一个 Mac体系下所独有的套件管理器,我要做直播,需求 rtmp 和 nginx ,单独安装很杂乱,只要在终端里输入简单的安装相应的套件指令即可完结安装,杂乱的进程都靠 homebrew 规避掉了!我用它安装过很多东西,比方nginx 搭建流媒体服务器等。常用指令:brew install 、brew uninstall、brew search、brew list、brew update、brew help 等~
49.RTMP、HLS协议各自的默许端口号是?
参阅答案:
RTMP端口号:1935 HLS端口号 :8080