一個基於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在虛擬接上調試時,網絡配置使用橋接方式

 

上一篇     回目錄    下一篇


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM