首页 > 其他 > 详细

字符串格式反格式化

时间:2015-10-30 12:29:45      阅读:499      评论:0      收藏:0      [点我收藏+]
// temp10.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
    char* sdpLine="a=rtpmap:96 H264/90000\r\na=fmtp:96 packetization-mode=1;profile-level-id=640032;sprop-parameter-sets=J2QAMq2EBUViuKxUcQgKisVxWKjiECSFITk8nyfk/k/J8nm5s00IEkKQnJ5Pk/J/J+T5PNzZphcqAeAIn5ZsgAAB9AAA6mBwAAAPQkAAAPQkBe91lA==,KP4Briw=\r\na=control:track1\r\n";
    
    //用下面的sdp数据,sdpLine开头的数据不符合此正则表达式,sscanf返回0,表示一个变量数据都没有解析出来。
    //char* sdpLine="a=fmtp:96a=rtpmap:96 H264/90000\r\na=fmtp:96 packetization-mode=1;profile-level-id=640032;sprop-parameter-sets=J2QAMq2EBUViuKxUcQgKisVxWKjiECSFITk8nyfk/k/J8nm5s00IEkKQnJ5Pk/J/J+T5PNzZphcqAeAIn5ZsgAAB9AAA6mBwAAAPQkAAAPQkBe91lA==,KP4Briw=\r\na=control:track1\r\n";

    unsigned rtpmapPayloadFormat=0;
    char codecName[10]={0};
    unsigned rtpTimestampFrequency = 0;

    //只匹配sdpLine开头的数据是否符合此正则表达式,如果sdpLine开头的数据不符合此正则表达式。这
    int count=sscanf(sdpLine, "a=rtpmap: %u %[^/]/%u", 
        &rtpmapPayloadFormat, codecName, &rtpTimestampFrequency);

    printf("count=%d\n",count); //如果匹配成功,count为3,表示解析出了3个变量数据。
    printf("payload=%u, codecName=%s, timestamp=%u\n",rtpmapPayloadFormat, codecName, rtpTimestampFrequency);
    
    getchar();
    return 0;
}


如图:

技术分享

 

从live555的函数Boolean MediaSubsession::parseSDPAttribute_rtpmap(char const* sdpLine)里面学到的知识。

 

完。

 

字符串格式反格式化

原文:http://www.cnblogs.com/liyou-blog/p/4922884.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!