zoukankan      html  css  js  c++  java
  • webrtc vp8与h264 sdp文件解读

    参考地址:https://blog.csdn.net/zhangjikuan/article/details/27367437, https://www.cnblogs.com/idignew/p/7249056.html

    vp8 sdp描述文件

    v=0
    o=- 0 0 IN IP4 127.0.0.1
    s=-
    c=IN IP4 127.0.0.1
    t=0 0
    m=audio 5006 RTP/AVP 111
    a=rtcp-mux
    a=rtpmap:111 opus/48000/2
    a=fmtp:111 minptime=10;useinbandfec=1
    m=video 5004 RTP/AVP 96
    a=rtcp-mux
    a=rtpmap:96 VP8/90000

    1、v=0 sdp的版本号

    2、o=<username> <sessionid> <version> <network type> <address type> <address> / o=<用户名> <session id> <会话版本> <网络类型><地址类型> <地址>,6部分组成,对会话的发起者进行了描述

    <username>是用户的登录名。如果主机不支持<username>,则为 ”-”;

    <session id>:是一个数字串。在整个会话中,必须是唯一的,建议使用NTP(Network Time Protocol)timestamp,这里是0;

    <version>:该会话公告的版本,供公告代理服务器检测同一会话的若干个公告哪个是最新公告.基本要求是会话数据修改后该版本值递增,建议用NTP时戳,这里是0;

    <networktype>:网络类型,一般为”IN”,表示”internet”;

    <address type>:地址类型,一般为IP4;

    <address>:地址,由于在本机上传输,这里是 127.0.0.1;

    3、s=<sessionname>,会话名,在整个会话中有且只有一个”s=”,就像username一样,这里是 “ - ”;

    4、c=<networktype> <address type> <connection address>,表示媒体连接信息, 一个会话声明中,会话级描述中必须有”c=”项或者在每个媒体级描述中有一个”c=”项。可能在会话级描述和每个媒体级描述中都有”c=”项

    <network type>:网络类型,一般为”IN”,表示”internet”;

    <address type>:地址类型,一般为IP4;

    <connection address>:应用程序必须处理域名和ip地址两种情形。单播时,为域名或ip地址,推荐使用域名;多播,为ip地址,且ip后面必须有TTL(取值范围是0-255),地址和TTL决定了多播包被传播的范围。例 c=IN IP4 224.2.1.1/127,这里单播使用域名

    5、 t=<start time>  <stop time>,描述了会话的开始时间和结束时间

    <start time> 和<stop time> 为NTP时间,单位是秒。假如<stop time>为零表示过了<start time>时间后会话一直持续。当<start time> 和<stoptime>均为零时表示持久会话,建议start time和stoptime不要设为0。因为不知道此会话的开始和结束时间,增加了调度(scheduling)的难度

    这里开始时间和结束时间都为0

    6、m=<media><port> <transport> <fmt list>, 一个会话描述包括几个媒体描述。一个媒体描述以”m=”开始到下一个”m=”结束

    <media>:表示媒体类型。有"audio", "video","application"(例白板信息), "data"(不向用户显示的数据) 和"control"(描述额外的控制通道)。这里有2个m,分别描述音频和视频

    <port>:媒体流发往传输层的端口。取决于c=行规定的网络类型和接下来的传送层协议:对UDP为1024-65535;对于RTP为偶数

    当分层编码流被发送到一个单播地址时,需要列出多个端口。方式如下:

    m=<media><port>/<number of ports> <transport> <fmt list>

    对于RTP,偶数端口被用来传输数据,奇数端口用来传输RTCP包。

    例:m=video 49170/2 RTP/AVP 31

    端口49170和49171为第一对RTP/RTCP端口,49172和49173为第二对的端口。传输协议是RTP/AVP,媒体格式为31(媒体格式是rtp头中payload参数对应的)

    这里端口号5006,媒体格式111

    7、a=rtcp-mux,表示rtp和rtcp复用一个端口

    8、a=rtpmap:<payload type><encoding name>/<clock rate>[/<encodingparameters>]

    a=rtpmap:<负载类型><编码名>/<时钟速率>[/<编码参数>],负载类型就是m行描述的媒体类型,编码名opus/vp8,时钟速率48000,90000

    9、a=fmtp:<format> <format specific parameters>,a=fmtp 用于DTMF数字信号、电话音和电话信号的RTP负载格式;

    a=fmtp:<格式>< 格式特定参数>//定义指定格式的附加参数,这行不知道什么意思,应该是音频相关信息

    h264 sdp描述文件

    v=0
    o=- 0 0 IN IP4 127.0.0.1
    s=-
    c=IN IP4 127.0.0.1
    t=0 0
    m=audio 5006 RTP/AVP 111
    a=rtcp-mux
    a=rtpmap:111 opus/48000/2
    a=fmtp:111 minptime=10;useinbandfec=1
    m=video 5004 RTP/AVP 125
    a=rtcp-mux
    a=rtpmap:125 H264/90000
    a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f

    基本一致,多了一行视频描述信息

  • 相关阅读:
    CART回归树基本原理(具体例子)
    Leetcode 236. 二叉树的最近公共祖先 & 235. 二叉搜索树的最近公共祖先(Python3)
    c和c++的区别
    最小编辑距离python
    判断单链表是否有环,并找出环的入口python
    关键词提取算法-TextRank
    leetcode406 ,131,1091 python
    id3算法python实现
    Relu激活函数的优点
    从 AllocateMessageQueueConsistentHash 看一致性哈希
  • 原文地址:https://www.cnblogs.com/jixiaohua/p/11683918.html
Copyright © 2011-2022 走看看