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在虚拟接上调试时,网络配置使用桥接方式

    上一篇     回目录    下一篇

  • 相关阅读:
    java接口变量问题
    FileInputStream与BufferedInputStream的对比
    eclipse使用javaFX写一个HelloWorkld
    Windows 安装Java与配置环境变量
    asp.net core处理中文的指南
    修改release management client对应的服务器的地址
    在server2012安装tfs遇到的问题:KB2919355
    release management客户端无法连接到release management server的问题解决
    如何升级PowerShell
    VS2010下调试.NET源码
  • 原文地址:https://www.cnblogs.com/ansersion/p/5080408.html
Copyright © 2011-2022 走看看