流媒体小记包含一些面试问题

RTMP(应用层协议)是TCP传输还是UDP传输?

1、RTMP官方文档没有明确的表示不支持UDP传输,但是通篇的例子都是TCP传输RTMP;包括一些开源流媒体,一般都只采用TCP传输RTMP;

2、主要可能是考虑TCP有乱序重排,和丢包重传;另外是RTMP的chunkSize一般设置的比较小,可能一帧发很多chunk,UDP的话丢数据整个帧也就没办法解码了;

3、RTMP也有变种协议支持UDP传输;

4、RTMP官方文档  https://rtmp.veriskope.com/pdf/rtmp_specification_1.0.pdf

 

TCP默认是阻塞还是非阻塞?

1、无论是win还是Linux,默认socket都是阻塞的;也就是读不出来或者写不进去就等着;

2、需要通过函数设置为非阻塞

      Linux设置非阻塞:fcntl(socket, F_SETFL, flags | O_NONBLOCK);

  Windows:

  u_long nonblock = 1;
  if (ioctlsocket(sock, FIONBIO, (u_long FAR*)&nonblock) == SOCKET_ERROR)

3、socket读写是针对从内核读出,和写入内核而言的

 

数据传输中的加密算法有哪些,用在什么地方?

1、加密算法分为对称加密,和非对称加密(公钥加密);对称加密使用相同的密钥,秘钥需要进行第二次的非对称加密;

2、公钥加密方式是使用对方的公钥加密,对方在使用自己的私钥解密,所以需要一个交换双方公钥的过程

 

 3、常用加密方式:对称加密:AES128,AES192,AES256、base64加密;非对称加密:RSA加密;摘要加密:MD5(一般用于生成唯一ID)

 

RTMP打包格式?

 

chunk的 默认大小?为什么常用128字节?

1、chunksize大小是从12865536字节;

 

Rtmp包中有几种时间戳?分别代表什么?

 

chunk中是否可以存多帧?

 

chunk中AAC的打包方式,怎么打包采样率的?

 

RTMP中PTS和DTS是怎么记录的?RTMP的时间单位是什么?

 

FLV的基本格式?他的时间基是什么?FLV和RTMP的关系是什么?

 

PTS、DTS的顺序,为什么会出现负值dts?

 

怎么区分P,B帧,是通过什么算法解析的slice?

 

AVCC annexb格式的区别?RTMP中使用的是AVCC还是annexb?

 

YUV表示什么?444,422,420的YUV排布和数据量什么样?

 

TCP同步,异步传输?MTU(是否TCP, UDP都有),MTU,MSS  rtt  MSL,TTL,等是什么?)

 

TCP传输的包头长什么样子?

 

MTU最大是多少?15W数据怎么发送过去?分包和组包,TCP和UDP的处理区别,丢包。

1、MTU:68字节到65535,不同的数据链路MTU大小限制也不同;MTU的设置可以更好地实现网络传输效率(图片来自图解TCP/IP)

 

2、MTU=1500时候;UDP 包的大小就应该是 1500 – IP头(20) – UDP头(8) = 1472(BYTES);TCP 包的大小就应该是 1500 – IP头(20) – TCP头(20) = 1460 (BYTES)

3、以太网MTU大小最初是由物理测试得到的一个传输效率最高的值,这个值需要路由器,交换机,网桥都支持;

4、MTU限制 = ip头20字节+传输协议头(TCP=20、UDP=8,ICMP【ping】=8)+荷载内容;

数据包为什么需要排序?

1、因为发出去之后路由路径不一定只有一条,所以到达对端的顺序不一定是发送顺序;就需要重新排列数据包;

 

RTP 打包方式FU打包?single NALU,stap-A打包方式的具体样式?

 

RTP包头格式?

 

B 帧能不能出现在两个P帧之间? B帧是怎么产生的?

 

HLS与RTMP(flv)比较?

1、首先要知道HLS播放的是M3U8索引的TS切片,要播放成功HLS至少M3U8里要有3个切片。所以HLS延时较大;

2、FLV全名叫flash video,RTMP是FLV格式的进化,底层都需要flash支持;

3、HLS 全名HTTP live streaming, HTTP直播流

HLS的优势和不足:

    优势:
        使用HTTP协议传输数据,不会被防火墙屏蔽掉,易于分发。
        码率自适应,提高播放流畅度。
        无状态协议,便于负载均衡。
        浏览器支持好,无需安装插件。
    不足:
    实时性差,延迟高,两个原因:
    1采用切片式的多媒体文件,因为切片需要时间编码,所以一个切片的延时不可避免。
    2使用http短连接,需要不断的与server建立连接,且基于tcp,需要三次握手,四次挥手,交互耗时长
————————————————

 原文链接:https://blog.csdn.net/Ritchie_Lin/article/details/121733309

 

解码输出的stride是什么?为什么会有这个?

(方便指令集加速,一种对齐的部分,padding,不含视频数据)

stride是硬解码输出YUV才有的产物,主要是不同芯片厂商为了提高解码性能和速度,制定了优化策略,而产生stride;但是stride多出来的部分是无用数据;

 就比如这种 1920*1080硬解码输出2048*1088

 

 

RTSP协议传输有RTCP吗?RTCP是怎么放置的?

1、(SDP 2通道,通道2一般是RTCP)

2、RTSP传输数据有RTCP的时候,一般会分为RTSP协议解析,和RTP数据解析部分,RTP数据解析部分会区分不同的通道一般单号的通道是处理RTCP的

3、通道信息在SDP交互的时候告知,数据传输RTP包24 00 len1 len2 80 e0.....这个是第一个通道,24 01 len1 len2 80 c8....是RTCP,24 02 len1 len2 80 ....是音频

4、RTSP传输是TCP,UDP均可的,也是低延迟,因为它也是按帧传输解析的。

5 rtsp交互过程和信令内容解析可以看我的这篇 wireshark解析RTSP交互

 

国标协议传输RTCP吗。怎么传的?

1、双端口,一个接收RTP数据,一个接收RTCP,双端口号接收RTP国标,+1端口接收RTCP

2、RTCP 一般有SR(发送端报文),RR(接收端报文),SDES(源描述),BEY(通知离开)等信息对应的RTP包头是0x 80 0xc80x80 0xC9,0x80 0xCA,0x80 0xCB

3、RTCP一般是UDP传输的,包比较小;(没说不能TCP,但是一般只有UDP传输RTCP)

4、国标数据传输一般是需要sip(会话发起协议Session initialization Protocol)协议配合的,因为sip要协商设备进行主动发流,接收注册、注册,停止,用于创建、修改和释放一个或多个参与者的会话

SIP协议是干什么的?

1、SIP的默认传输协议是 UDP;SIPS:的缺省传输协议是TCP。tcp/udp默认5060,tcp+tls5061;tcps5061.

2、重点是用户代理、注册、invite会话发起的过程;可以网上搜一下看一下 北小菜 大佬的教学视频

Http协议是基于什么传输的?

1、Http超文本传输协议,是基于TCP协议传输的,目前的Http不支持UDP传输;Http3开始才基于QUIC(UDP)传输支持;

2、Http是一个应用层的协议;用于网页文本信息传输;{以太网首部 {  IP首部 { TCP首部 {http超文本}}}}

3、进过了域名解析,路由选择,三次握手,接收端数据包重排,丢包重传(如果丢包了的话)进行数据传输;

http的四次挥手中的timewait和closewait?

1、不管是客户端还是服务端,谁在请求头里发了connection:close,它的对端就会主动发起挥手

2、四次挥手涉及FIN,ACK,的flag;主动挥手端可能会出现timewait;被动挥手端可能会出现closewait(图片来源小林coding)

 

3、timewait是由于主动关闭引起,但是他最长持续2MSL时间,影响是会占用端口,但是不是永久的;可是closewait是被动端等待本端关闭的时间,影响也是会占用端口,但是可能会因为程序bug而永久处于closewait状态(只要程序还在)

4、timewait等待时长 MSL一般是60秒,主要是为了保证对方能顺利 接收ACK,否则还要进行挥手FIN;另外是保证本次交互的http数据已经完全在网络中消失

点播:

HLS点播相对于RTSP的MP4点播优势在于,MP4的MOOV解析耗时;缺点是TS点播不能精准定位;

音视频同步:

为什么一般不使用音视频向系统时钟同步?

人为修改服务器的系统时间,会导致系统时钟的定时器错乱;

如果有时间戳的跳跃(不是偶尔的调变);就要长时间的等待;

时间戳问题:

PS和TS的时间戳在PES里

RTSP是怎么做流控的?做流控的方案?

 RTSP一般是通过RTCP中的丢包之类的回复参数来控制调整发送端的码率

其他方案:接收端* 秒接收不到视频,数据帧,通过业务通知发送端

SIP协议常用功能?

注册,invite,查询;参考北小菜的博客

 

TCP传输和UDP传输的缺点?

TCP粘包

UDP乱序

posted on 2025-08-12 11:26  邗影  阅读(26)  评论(0)    收藏  举报

导航