Ĭ��
���� �������� 0
�뿪��IM������Ʒ�¿ӣ�����3���¹����ҿ�Դ����ߣ������������·��... ��վ�����㽨��
��Ƶֱ�������ɻ�(ʮһ)��������ʱ��Ƶֱ���������ݽ�֮·
΢��ɨһɨ��ע��

�������ֽ����������Ŷ���⡢�ィ�Ρ��¼�ƽ��������ʱͨѶ�����޶��͸Ķ���


1������


��ý�廥��ֱ���ѳ�Ϊ�˹�����������Ҫ���������ַ�ʽ֮һ���ḻ�Ĵ�ͳ�Ļ������š��������������ɡ�֪ʶ���������ݣ�ͨ���ƶ��˻���ֱ������ʽ���Ը��Ӹ�Ч��չ�ִ������������ʵ�ֱ�����ݿ���ʵ�ֱ���ʽ������ɢ���ֿ������û��и����Ļ������ܣ�ѧϰ������������ֱ��������������ʱ��Ƶֱ��������������һ��ȫ�µķ�չ֮·��

���Ľ������˽ⳬ����ʱ��Ƶֱ���������Ż����ݽ����̡�

��Ƶֱ�������ɻ�(ʮһ)��������ʱ��Ƶֱ���������ݽ�֮·_cover-opti.png

2��ϵ������


������ϵ�������еĵ� 11 ƪ����ϵ����Ŀ¼���£�


3������ʱֱ������������


����������ʩ����������Ƶ���似��������WebRTC ��Դ�����أ���������Ƶ����ʱ���𽥽��ͣ� ʹ������ʱֱ��������Ϊ���ֿ��ȵ��о�������ʵʱ����Ƶҵ�������ѻ������������չ�� ����������ҵ����������������͸����������ҵ��һ�ֵĺ��������ڣ��ҹ�ʵʱ����Ƶ��ҵ�ij���Ч������������뵽���������׶Ρ�

��ʱ��ָ��ѡ���ܴ��̶���ȡ�����û��������������Ľ������ϳ̶ȣ������ḻ������

��Ƶֱ�������ɻ�(ʮһ)��������ʱ��Ƶֱ���������ݽ�֮·_1.png

����Щ���˳����£���ʱ���û���ϣ��ԽСԽ�ã��ӽ���ʵʱͨ�ŵĵ��ӳ�ģʽ�������󻯵ؼ����û��IJ����У��޷�����������������������ЧӦ�������û����������õĻ����ԡ������������㳡��PK�����񡢹������񡢴��͵Ļ�ؼ����ڣ�����˫���Ĵ�ֵ�󻧶�ϣ��ʵʱ�ع۲쵽��������������ˢ�����ķ�Ӧ��Ϊ��̨��Ӫ�����Ŷӻ��ߺ���������ṩ��һʱ������Ϣ������

��ͼ�����˴Ӽ���/��Ʒ/��Ӫ�������Ƕ����ۺ�˼������ʱֱ�����������ã����ⲿ-�ڲ��ۺ����ؿ��Ǽ����ı�Ǩ��������̬����ѭ����Ӱ�졣

��Ƶֱ�������ɻ�(ʮһ)��������ʱ��Ƶֱ���������ݽ�֮·_2.png

4����ͳֱ��������RTMPЭ�����ӳ�����


RTMP Э�����ͳ��ֱ��Э�飬�����˲��� RTMP Э������ H.264/5 �� AAC ����������Ƶ���ݵ��Ƴ��� CDN ����������ת��װ�ַ����˵����ӳ�һ�������� 3 �� 7 �롣

������ RTMP �Ŀ���չ�Դ���ȱ�ݣ�ͬʱ�����ӳٵĽ�һ����̽����һ���ļ������ѡ�

RTMP Э�������£�Ϊ��������ʱ���ͱ�Ȼѹ�������������ػ����������������������Ŀ������⣬ʹ�ò��ŵĹ۸в��������ʵĸ��ܣ���ʱ��̽�� 2 ����������

��Ƶֱ�������ɻ�(ʮһ)��������ʱ��Ƶֱ���������ݽ�֮·_3.png

5����ͳֱ��������ʵʱ���������еIJ���


1����Ƶ��ʱ�͵�Ļ��������ʱ�����������죬�����������ݻ�������Ƶ����ͼ�����಻ƥ�䣺

��Ƶֱ�������ɻ�(ʮһ)��������ʱ��Ƶֱ���������ݽ�֮·_4.png

2������������������ʽ��һ���ǵ������ݴ����޷�����˫������ RTC ��������֮ǰ�޷�������������

3�����򴫵��ľ��޵�һ�����������ڣ����ڶ����������޷���������������������Ӧ���ڡ��û�ֻ���Թ̶������ʽ�����ý�崫���޷�������̬��֪������������ʵʱ�仯�ij����������������ƶ���վ�л������̶��������ʴ����нϴ��������ɶ�֡���ٵ�����Ӱ���۲����顣��һ������������������ʱ���̶����ʴ����޷���̬������Ƶ�������ʣ����ߵĻ��ʴ����������ʵ�������

4����ֱ�������󳡾������Ļ���ֱ�������£��������ô�ͳRTMP��������������PK����ʱ������������/������������/�����������������л����⣬���ֳ����任���л���ʹ�ù��ڶ˲���˲���Ŀ������⡣�������û���webRTCֱ�������ij�����ʱֱ����������������--�����߼��ĺ����л��������Եõ��Ƚ��ѺõĽ�����ֻ��Ҫ�ı�������ת��-������ͨ���ķַ��߼������漰����ý������������·�����л�����

6�� ������ʱֱ������׼ֱ��������


6.1������ʱֱ��


������ʱֱ���ǽ�������������һ��Ӧ�á�

������ֱ��������ֱ���ȳ��������߸߲���������ʱ�����ԣ���ͳֱ�� 3-20s ��ʱ���������������󣬵���ʵʱ������Ҫ���ֲ�����Ƶ�����ȵ��͵�ʵʱ����ƵӦ�ã����轫ʱ�ӽ����� 400ms ���¡�

Ϊ�ˣ�������ʱֱ���ں��˴�ͳֱ����ʵʱ����Ƶ�ļ����ܹ���ͨ��ȡ�����̵ķ�ʽʵ���˽��ڶ���֮���Ķ˵���ʱ�ӡ�

�������Գ�����ʱֱ����������һ�ױ�׼�ļ���·�������������Թ���Ϊ����Э�顢�����ܹ�������Э�����������ĸ��죬 ��ʵ��Ӧ�ù����У����̻�ƽ���ɱ�������ָ�������أ��ڲ�ͬ��Э���������ܹ�֮������ѡ����

6.2���������IJ���


���� UDP Э���Ŀɿ����Ż���Ϊ�����Կ������ṩ���ݡ�

��ͳֱ�� FLV/RTMP �Ȳ��õ��� TCP Э�飨���� QUIC Э����TCP ����������ʵʱ������ȡ���������ԵĿɿ�����Э�顣

���������£��������ݴ���ǰ�ġ����� ���֡����ӻ������ϴ���ʱ��

�� UDP ��Ϊ���ɿ��Ĵ���Э�飬���������ŵ�Ϊ��ʵʱ�ԣ�������֤���ݵĵ�����������

ʵʱ����Ƶ ��Ʒ���� RTM ������ʱֱ������������ UDP Э�飬���ڴ�֮�Ͻ���Э�������㷨�����Ż��������ߴ����Ŀɿ������߼��ԡ�

�������¿��Ķ���


6.3UDP Э�����Ż�


UDP Э�������� RTP/RTCP Э��һ����ʵ��Ӧ���г��֡�

RTP �������ݴ��䣬��Э��ͷ�е����кš� �˿����͡�ʱ�������ֶΣ���Ϊ���ݰ��ķ��顢��װ�������ṩ�߼����ݡ�

RTCP ��Ϊ RTP �Ŀ���Э�飬������ RTP �Ĵ�����������ͳ�Ʒ�������Ϊ�����Կ������ṩ���Ʋ�����

��Ƶֱ�������ɻ�(ʮһ)��������ʱ��Ƶֱ���������ݽ�֮·_5.png

7��RTM Э�鱾�����ݽ�����


a=extmap:18 "http://www.webrtc.org/experiments/rtp-hdrext/decoding-timestamp"
a=extmap:19 "uri:webrtc:rtc:rtp-hdrext:video:CompositionTime"
a=extmap:21 uri:webrtc:rtc:rtp-hdrext:video:frame-seq-range
a=extmap:22 uri:webrtc:rtc:rtp-hdrext:video:frame-type
a=extmap:23 uri:webrtc:rtc:rtp-hdrext:video:reference-frame-timestamp
a=extmap:27 uri:webrtc:rtc:rtp-hdrext:audio:aac-config

RTP ʹ�� RTP ˽����չͷЯ�� DTS/CTS ֵ��ÿһ֡ RTP ���ݰ�ͨ�� RFC5285-Header-Extension ��չͷЯ����֡�� DTS ֵ��ÿһ֡�׸� RTP ���� VPS/SPS/PPS ��ͨ�� RFC5285-Header-Extension ��չͷЯ����֡�� CTS ֵ��ͨ�� PTS = DTS + CTS ���㵱ǰ֡��ʱ����������������������ͬ���Ͳ����������߼���׼����ͬ����

��չͷЯ��֡����ʼ/�������ţ�������֡��ǰ��������ʧ����ô�ɸ�����ʼ���ſ��ٷ����ش��ӿ���֡��������ǰ֡�ĺ󼸸�����ʧ����ô�ɸ��ݸ�֡�Ľ������ſ��ٷ����ش���������ʱ�����ٿ��١�

��չͷЯ��֡�����ͣ�����Я������������ȷ��֡���ͣ��ͻ��˿��Բ��ý��� metadata ��ͬʱ���������Σ��ͻ��˿������� B ֱ֡�ӽ��� P ֡�����ٳ�֡������DZ�ڿ��١�

��չͷЯ�� P ֡�IJο�֡��Ϣ�����������������Σ���ô�ͻ��˿���������չͷָ���IJο�֡��ϵ������Ӧʱ���������� B ֡���� �����ٿ��ٷ�����

Ϊ�˼�����������ٶȣ�CDN ������ijЩ�����²�ȥ��ѯý����Ϣ��ֱ�����ͻ��˷���֧�ֵ�����Ƶ��������ʱ SDP ��ý�������н��������о���������Ƶ������ϸ��Ϣ������Ƶ���棬��ʱAnswerSDP �в����� aac ����������ͷ��Ϣ����ʱ������Ҫ��ȡ RTP ��չͷģʽЯ�� AAC-Config ���ͻ����� RTP �հ�ʱ�����н����������ɽ��붯���������Ǽ��������ʱ�䣬���������ɹ��ʡ�

miniSDP ������׼ʵ�ֲ��֣�����)��

CDN �����첽��Դ��

RTP Я����չͷ���ɲ��֡�

8��WebRTC Э����ֱ������������ֲ


RTM ����ʱֱ������ WebRTC �������������� WebRTC ��׼�����㵽�㴫��һ�������¼������裺

  • 1��ͨ��˫��Ҫ����ý��Э�̣��Ự��ϸ�淶�� SDP(Session Description Protocol) ������
  • 2���������н���ʽ������ַЭ�̣���ѯ�Զ���ʵ IP ��ַ��׼������ý�崫��ͨ����
  • 3������������׼�����ϼ��������յ� Peer to Peer ���Ե�ý�����ݴ��䡣

��Ƶֱ�������ɻ�(ʮһ)��������ʱ��Ƶֱ���������ݽ�֮·_6.png

����ֿͻ���-���������������������� SDP ��׼����ģʽ��ý�崫�䲿�ֲ��ÿ�Դ�� WebRTC ���ܺ��ֽ����е�ʵʱ����Ƶý����������ý�崫�䡣

9��RTC ����Э���ĸ�������


MiniSDPѹ��Э�飺https://github.com/zhzane/mini_sdp��

��Ƶֱ�������ɻ�(ʮһ)��������ʱ��Ƶֱ���������ݽ�֮·_7.png

��׼ SDP �Ƚ��߳���5-10KB �������������ڿ��ٸ�Ч���䡣��ֱ�������£�������Ӱ����֡ʱ�䡣

MiniSDP �Ա�׼ SDP �ı�Э�����и�Ч��ѹ������ԭ�� SDP ת���ɸ�С�Ķ����Ƹ�ʽ��ʹ���ܹ�ͨ��һ�� UDP �������䡣

���������ʱ�䣬�������紫��Ч�ܣ�����ֱ��������֡��Ⱦʱ�䣬���������뿪��/�ɹ��ʵ� QoS ͳ��ָ�ꡣ

��Ƶֱ�������ɻ�(ʮһ)��������ʱ��Ƶֱ���������ݽ�֮·_8.png

10��CDN��RTM �������첽��Դ�Ż�


���� RTM �����ʱ�䣬���� RTM ������֡��Ⱦʱ�䡣

ԭ���������ڷ����˻��治����ʱ��Ҫ�ȴ���Դ�õ����ݣ����ܷ��ش��� AacConfig ��Ϣ�� AnswerSDP���ͻ����յ� AnswerSDP ������ STUN����������ֻ�����յ� STUN ���ܿ�ʼ�·����ݡ�

����ͼ�������첽��Դ�����£������˲��ٵȴ���Դ����ֱ�ӷ��� AnswerSDP��֮����Դ��WebRTC ��������ͬ�����С�

��Ƶֱ�������ɻ�(ʮһ)��������ʱ��Ƶֱ���������ݽ�֮·_9.png

����ͼ�ң��ȵ� WebRTC �����ɹ��һ�Դ�õ����������·� RTP ���ݡ�

11����Ƶ��Ⱦ���ٵ��Ż������뿨��ƽ������4�룩


�����˾�����ʱ�����ı� RTC ��������֡/�������ԣ���ֹ RTC �ڵ���ʱģʽ�µĶ�֡������ֱ������Ƶ��Ⱦ���١�

��Ƶֱ�������ɻ�(ʮһ)��������ʱ��Ƶֱ���������ݽ�֮·_10.png

��ͳ�� RTC �������ȱ�ʱ�ӣ�ȫ��·�ᴥ�����ֶ�֡�������������ڽ���ģ�飬����ģ������FLV ֱ�����������ȱ�֤�۲����飨����֡�����õ�����ͬ��Ч������

RTM Ҫ�����ٿ��٣�ȡ�� qoe �����棬���ز��������ж��ƻ��������߼��޸ĵ㣺

1��ȷ���������������Ľ�����ʱ����Ӳ���� dequeuinputbuffer ������ api �������� jitterbuffer ���ں˲���һ��ǿ�Ƶ�����ͬ���߼�������ȷ������Ƶ�IJ������飻

2��ͬʱ�ϲ��ڼ�������ģ���ͽ���ģ���Ļ��泤�ȣ�����Ӧ�Ķ����߼���

  • a. �ж�Ӳ��ȷʵ�ⲻ������dec_cache_frames ���࣬�ϱ����󣬻ή�������⣻
  • b. jitterbuffer �쳣�������� frame_list ���࣬�����������쳣�߼����ϱ�����������������

��Ƶֱ�������ɻ�(ʮһ)��������ʱ��Ƶֱ���������ݽ�֮·_11.png

12��RTM�����߼����Ż�


�����ƶ��˿�����͸��RTC ͳһ�ں˷�����������ȱ�ݣ� MediaCodec Ӳ����������ʼ����ʱ�������� RTM ��Ƶ����ģ���� RTC �ں���Ǩ���� TTMP �����ںˣ������� FLV ����Ƶ����ģ�飨 MediaCodec �������³�ʼ�����������Ľ����˰�׿ƽ̨����֡��Ⱦʱ�䣬�����������ijɹ��ʡ�

RTC �ں�ͨ���߼���
��Ƶֱ�������ɻ�(ʮһ)��������ʱ��Ƶֱ���������ݽ�֮·_12.png

�Ľ��� RTM �ں˲����߼���
��Ƶֱ�������ɻ�(ʮһ)��������ʱ��Ƶֱ���������ݽ�֮·_13.png

13����������


[1] TCP/IP���� - ��11�¡�UDP���û����ݱ�Э��
[2] TCP/IP���� - ��17�¡�TCP����������Э��
[3] ���������ţ����ڿ�ԴWebRTC����0��1ʵ��ʵʱ����Ƶ���칦��
[4] ʵʱ����Ƶ����ѧϰ����Դ����WebRTC�ļ���ԭ����ʹ��dz��
[5] ��������������WebRTC����������ؼ���������WebSocket��������
[6] ѧϰRFC3550��RTP/RTCPʵʱ����Э������֪ʶ
[7] ����RTMP���ݴ���Э����ʵʱ��ý�弼���о�������ȫ�ģ�
[8] ����ɨä����һ������UDP�ĵ���ʱ���紫����Э�顪��QUIC����
[9] �û��������죺��һ��QUICЭ������Ѷ�ļ���ʵ������
[10] ʵʱ����Ƶ���ӱر�����������11����Ƶ�������صĻ�������
[11] ʵʱ����Ƶ�������۱ر�������ʡ��������Ƶ�߶�ѹ��������Ԥ�⼼��
[12] �ƶ���ʵʱ����Ƶֱ���������⣨һ������ƪ
[13] ֱ��ϵͳ���켼��(��)��ǧ����ʵʱֱ����Ļ�ļ���ʵ��
[14] ��������Ƶֱ���ҷ����˼ܹ�����ʵ��(��Ƶ+PPT) [��������]
[15] ��Ƶֱ�������ɻ���һ�Ķ���������Ƶֱ��ϵͳ���������ܹ�������Э����

��ʱͨѶ�� - ��ʱͨѶ������������ ��Դ�� - ��ʱͨѶ������������

��һƪ��IMͨѶЭ��ר��ѧϰ(ʮ)����ʶ Thrift ���л�Э����һƪ��IM��ƽ̨����ѧϰ(ʮ)�����ٶԱȿ�ƽ̨����Electron��Flutter��Tauri��React Native��

��������¼�����¼���ר��

�Ƽ�����
����¥�� ×
ʹ��΢�Ŵ��ͣ� ʹ��֧�������ͣ�

���ض���