zoukankan      html  css  js  c++  java
  • 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——收流篇:(二)示例

    一、搭建RTSP服务器

    要想测试RTSP客户端,没有服务端怎么行呢?然而,有时候条件有限,手头并没有独立的RTSP服务器拿来用,那么我们不妨自己撘一个。

    以下有2种方便的做法可供选择:

    第一种:使用vlc播放器(推荐做法)

    这种方法最方便,而且任何视频格式的文件都可以拿来测试,具体做法网上有很多,以下提供一个链接以供参考。

    http://blog.csdn.net/beitiandijun/article/details/9232405

    这种方法只有一个地方需要注意一下:

    如果你想让你的vlc RTSP服务器监听RTSP默认端口,也就是554,那么vlc必须要以root权限打开,如下图。

    第二种:使用live555的test程序

    从live555官网下载最新程序并且make。在testProgs目录里会有一个testOnDemandRTSPServer的程序,这个程序会根据当前目录中的各种音视频格式的文件(mpeg, h264, acc, ...),创建RTSP服务器,默认端口是8554。现在,我们把testOnDemandRTSPServer.cpp修改一下

     1   ......
     2   // RTSPServer* rtspServer = RTSPServer::createNew(*env, 8554, authDB);
     3   RTSPServer* rtspServer = RTSPServer::createNew(*env, 554, authDB); // 修改RTSP端口为554
     4   ......
     5 
     6   // A MPEG-4 video elementary stream: // 将MPEG-4注释掉
     7   // {
     8   //   char const* streamName = "mpeg4ESVideoTest";
     9   //   char const* inputFileName = "test.m4e";
    10   //   ServerMediaSession* sms
    11   //     = ServerMediaSession::createNew(*env, streamName, streamName,
    12   //                                  descriptionString);
    13   //   sms->addSubsession(MPEG4VideoFileServerMediaSubsession
    14   //                   ::createNew(*env, inputFileName, reuseFirstSource));
    15   //   rtspServer->addServerMediaSession(sms);
    16 
    17   //   announceStream(rtspServer, sms, streamName, inputFileName);
    18   // }
    19 
    20   // A H.264 video elementary stream: // 保留H264
    21   {
    22     char const* streamName = "ansersion"; // 设置rtsp url 为:rtsp://<IP>/ansersion
    23     char const* inputFileName = "test.264"; // 视频源文件 test.264
    24     ServerMediaSession* sms
    25       = ServerMediaSession::createNew(*env, streamName, streamName,
    26                                       descriptionString);
    27     sms->addSubsession(H264VideoFileServerMediaSubsession
    28                        ::createNew(*env, inputFileName, reuseFirstSource));
    29     rtspServer->addServerMediaSession(sms);
    30 
    31     announceStream(rtspServer, sms, streamName, inputFileName);
    32   }
    33 
    34   // A H.265 video elementary stream: // 将H265注释掉
    35   // {
    36   //   char const* streamName = "h265ESVideoTest";
    37   //   char const* inputFileName = "test.265";
    38   //   ServerMediaSession* sms
    39   //     = ServerMediaSession::createNew(*env, streamName, streamName,
    40   //                                  descriptionString);
    41   //   sms->addSubsession(H265VideoFileServerMediaSubsession
    42   //                   ::createNew(*env, inputFileName, reuseFirstSource));
    43   //   rtspServer->addServerMediaSession(sms);
    44 
    45   //   announceStream(rtspServer, sms, streamName, inputFileName);
    46   // }
    47 
    48 ......

    可以看到,删减的过程很简单:

    1. 将8554端口改成554;

    2. 将h264以外的音视频格式注释掉;

    3. 设置RTSP URI(rtsp://<IP>/ansersion)、指定H264视频源文件(test.264)。

    不像vlc那么方便,此处的视频源文件必须是h264格式的,以下链接可以找到live555官网提供的几个h264格式的视频源文件。

    http://www.live555.com/liveMedia/public/264/

    二、编译myRTSPClient

    $ cd myRtspClient/

    $ ./genMakefiles linux

    $ make

    (更多的编译选项,可以查看README.md)

    OK啦!这时,myRtspClient/example/里会生成3个example程序:simple_example, complete_example, common_example。

    现在我们拿common_example先尝个鲜(假设rtsp服务端RTSP URI为:"rtsp://192.168.81.145/ansersion"):

    $ ./common_example rtsp://192.168.81.145/ansersion

    接下来我们就可以看到源源不断的数据传过来了,并且会被写入文件"test_packet_recv.h264",这个文件可以使用ffplay或者ElecardStreamTools来播放。

    好啦,接下来我们先来简单介绍一下RTSP命令。

    温馨提示 

     1、myRtspClient在虚拟接上调试时,网络配置使用桥接方式

    上一篇     回目录    下一篇

  • 相关阅读:
    104.Maximum Depth of Binary Tree
    103.Binary Tree Zigzag Level Order Traversal
    102.Binary Tree Level Order Traversal
    101.Symmetric Tree
    100.Same Tree
    99.Recover Binary Search Tree
    98.Validate Binary Search Tree
    97.Interleaving String
    static静态初始化块
    serialVersionUID作用
  • 原文地址:https://www.cnblogs.com/ansersion/p/5080408.html
Copyright © 2011-2022 走看看