一、openRTSP编译运行

a)windows下编译运行

还是以mediaServer作为服务端,openRTSP作为客户端

RTSP客户端接收存储数据(live555库中的openRTSP实例)

 

b)Linux下编译运行

转自http://kuafu80.blog.163.com/blog/static/122647180201372654556863/

1:  编译

   (1):  ./genMakefiles           linux

   (2):  make

 

2: 服务器环境

    服务器端是一个支持RTSP server的H.264的摄像头;

 

3: 运行 openRTSP

    ./openRTSP  -d  20   -f  20  -w 640  -h  480   -b  400000  "rtsp://192.168.2.239/id=0"

或 ./openRTSP    -f  20  -w 640  -h  480   -b  400000  "rtsp://192.168.2.239/id=0"

参数解释;  -d  20   --->程序运行时间,如果没有程序持续从服务器获取视频;

                   -f   20   ----> 帧率

                  -w  640  -h  480 -----> 帧分辨率

                  -b  400000  ---->码率

4: 如果不修改playCommon.cpp的代码,openRTSP将获取的视频数据通过stdout直接打印到屏幕

 

5: 如果是自己取裸码流,则可以调用SPS相关的函数,将H264的帧信息告诉解码器,否则无法解码

    unsigned int num=1;

    SPropRecord * sps = parseSPropParameterSets(subsession->fmtp_spropparametersets(),num);

    fileSink = H264VideoFileSink::createNew(*env, outFileName,

                            subsession->fmtp_spropparametersets(),

                            fileSinkBufferSize, oneFilePerFrame);

    struct timeval tv={0,0};

    unsigned char start_code[4] = {0x00, 0x00, 0x00, 0x01};

    fileSink-> addData(start_code, 4, tv);

    fileSink->addData(sps[0].sPropBytes,sps[0].sPropLength,tv);

    delete[] sps;

 

6: 稍微修改代码让openRTSP只录视频,且保存到指定的文件

    streamURL = argv[1];

      // add by Andy_xi

     createReceivers = True;   // 保存视频

     outputAVIFile = False;   //因为是H264

     videoOnly = True;

     singleMedium = "video";   //只要视频

     //<------end

 

7: 调试记录

    启动openRTSP后,一定的看到SDP信息中的SPS信息,否则解码器可能不能解码

    a=fmtp:106 profile-level-id=42001E;sprop-parameter-sets=Z0KAKNoB4AiXlQ==,aM48gA==;packetization-mode=0

 

只要有这个信息,用file  命令看生成h264文件显示如下:

 

new.h264: JVT NAL sequence, H.264 video, baseline @ L 40

相关文章:

  • 2022-12-23
  • 2021-09-13
  • 2022-12-23
  • 2022-01-10
  • 2021-06-30
  • 2022-12-23
  • 2021-07-16
  • 2022-01-21
猜你喜欢
  • 2021-12-20
  • 2022-12-23
  • 2021-11-22
相关资源
相似解决方案