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


    一、openRTSP编译运行

    a)windows下编译运行

    还是以mediaServer作为服务端,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
     
     
  • 相关阅读:
    基础安全术语科普(四)——RFID
    基础安全术语科普(三)——RAT
    基础安全术语科普(二)——反病毒软件工作原理
    java中的变量
    递归调用
    一个男人关心的东西 决定了他的层次
    安装环境时,请大家不要选择PHP5.3.6
    WordPress URL Rewrite | WP URL 重写组件
    如何在ASP.NET网页间传递数据
    Oracle中的for和while循环
  • 原文地址:https://www.cnblogs.com/dong1/p/5887342.html
Copyright © 2020-2023  润新知