2011-11-29 58 views
6

最近,我從他們的網站下載Live555服務器源代碼。我試圖在testProgs目錄中編譯並運行testMPEG1or2AudioVideoStreamer.cpp文件。我編譯了包括測試程序在內的整個項目。然後我運行testMPEG1or2AudioVideoStreamer測試程序。我還在測試程序中定義的當前目錄中放置了一個test.mpg文件。運行後我得到了以下的輸出:無法與Live555服務器流 - 示例不工作

Play this stream using the URL "rtsp://192.168.2.22:5555/testStream" 
Beginning streaming... 
Beginning to read from file... 
...done reading from file 
Beginning to read from file... 
...done reading from file 
etc., 

然後我複製和使用VLC媒體播放器播放的URL rtsp://192.168.2.22:5555/testStream,但VLC只是等待一段時間,然後停止(與相同侏儒,MPlayer也)。它不播放任何音頻或視頻。任何幫助表示讚賞,因爲如果沒有使用Live555成功流式傳輸,我將無法前進。這是testMPEG1or2AudioVideoStreamer.cpp的代碼。你能告訴我,我失去了什麼......

/********** 
This library is free software; you can redistribute it and/or modify it under 
the terms of the GNU Lesser General Public License as published by the 
Free Software Foundation; either version 2.1 of the License, or (at your 
option) any later version. (See <http://www.gnu.org/copyleft/lesser.html>.) 

This library is distributed in the hope that it will be useful, but WITHOUT 
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for 
more details. 

You should have received a copy of the GNU Lesser General Public License 
along with this library; if not, write to the Free Software Foundation, Inc., 
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 
**********/ 
// Copyright (c) 1996-2010, Live Networks, Inc. All rights reserved 
// A test program that reads a MPEG-1 or 2 Program Stream file, 
// splits it into Audio and Video Elementary Streams, 
// and streams both using RTP 
// main program 

#include "liveMedia.hh" 
#include "BasicUsageEnvironment.hh" 
#include "GroupsockHelper.hh" 

UsageEnvironment* env; 
char const* inputFileName = "test.mpg"; 
MPEG1or2Demux* mpegDemux; 
FramedSource* audioSource; 
FramedSource* videoSource; 
RTPSink* audioSink; 
RTPSink* videoSink; 

void play(); // forward 

// To stream using "source-specific multicast" (SSM), uncomment the following: 
//#define USE_SSM 1 
#ifdef USE_SSM 
Boolean const isSSM = True; 
#else 
Boolean const isSSM = False; 
#endif 

// To set up an internal RTSP server, uncomment the following: 
#define IMPLEMENT_RTSP_SERVER 1 
// (Note that this RTSP server works for multicast only) 

// To stream *only* MPEG "I" frames (e.g., to reduce network bandwidth), 
// change the following "False" to "True": 
Boolean iFramesOnly = False; 

int main(int argc, char** argv) { 
    // Begin by setting up our usage environment: 
    TaskScheduler* scheduler = BasicTaskScheduler::createNew(); 
    env = BasicUsageEnvironment::createNew(*scheduler); 

    // Create 'groupsocks' for RTP and RTCP: 
    char const* destinationAddressStr 
#ifdef USE_SSM 
    = "192.168.1.255"; 
#else 
    = "192.168.1.255"; 
    // Note: This is a multicast address. If you wish to stream using 
    // unicast instead, then replace this string with the unicast address 
    // of the (single) destination. (You may also need to make a similar 
    // change to the receiver program.) 
#endif 
    const unsigned short rtpPortNumAudio = 6666; 
    const unsigned short rtcpPortNumAudio = rtpPortNumAudio+1; 
    const unsigned short rtpPortNumVideo = 8888; 
    const unsigned short rtcpPortNumVideo = rtpPortNumVideo+1; 
    const unsigned char ttl = 7; // low, in case routers don't admin scope 

    struct in_addr destinationAddress; 
    destinationAddress.s_addr = our_inet_addr(destinationAddressStr); 
    const Port rtpPortAudio(rtpPortNumAudio); 
    const Port rtcpPortAudio(rtcpPortNumAudio); 
    const Port rtpPortVideo(rtpPortNumVideo); 
    const Port rtcpPortVideo(rtcpPortNumVideo); 

    Groupsock rtpGroupsockAudio(*env, destinationAddress, rtpPortAudio, ttl); 
    Groupsock rtcpGroupsockAudio(*env, destinationAddress, rtcpPortAudio, ttl); 
    Groupsock rtpGroupsockVideo(*env, destinationAddress, rtpPortVideo, ttl); 
    Groupsock rtcpGroupsockVideo(*env, destinationAddress, rtcpPortVideo, ttl); 
#ifdef USE_SSM 
    rtpGroupsockAudio.multicastSendOnly(); 
    rtcpGroupsockAudio.multicastSendOnly(); 
    rtpGroupsockVideo.multicastSendOnly(); 
    rtcpGroupsockVideo.multicastSendOnly(); 
#endif 

    // Create a 'MPEG Audio RTP' sink from the RTP 'groupsock': 
    audioSink = MPEG1or2AudioRTPSink::createNew(*env, &rtpGroupsockAudio); 

    // Create (and start) a 'RTCP instance' for this RTP sink: 
    const unsigned estimatedSessionBandwidthAudio = 160; // in kbps; for RTCP b/w share 
    const unsigned maxCNAMElen = 100; 
    unsigned char CNAME[maxCNAMElen+1]; 
    gethostname((char*)CNAME, maxCNAMElen); 
    CNAME[maxCNAMElen] = '\0'; // just in case 
#ifdef IMPLEMENT_RTSP_SERVER 
    RTCPInstance* audioRTCP = 
#endif 
    RTCPInstance::createNew(*env, &rtcpGroupsockAudio, 
       estimatedSessionBandwidthAudio, CNAME, 
       audioSink, NULL /* we're a server */, isSSM); 
    // Note: This starts RTCP running automatically 

    // Create a 'MPEG Video RTP' sink from the RTP 'groupsock': 
    videoSink = MPEG1or2VideoRTPSink::createNew(*env, &rtpGroupsockVideo); 

    // Create (and start) a 'RTCP instance' for this RTP sink: 
    const unsigned estimatedSessionBandwidthVideo = 4500; // in kbps; for RTCP b/w share 
#ifdef IMPLEMENT_RTSP_SERVER 
    RTCPInstance* videoRTCP = 
#endif 
    RTCPInstance::createNew(*env, &rtcpGroupsockVideo, 
        estimatedSessionBandwidthVideo, CNAME, 
        videoSink, NULL /* we're a server */, isSSM); 
    // Note: This starts RTCP running automatically 

#ifdef IMPLEMENT_RTSP_SERVER 
    RTSPServer* rtspServer = RTSPServer::createNew(*env, 5555); 
    // Note that this (attempts to) start a server on the default RTSP server 
    // port: 554. To use a different port number, add it as an extra 
    // (optional) parameter to the "RTSPServer::createNew()" call above. 
    if (rtspServer == NULL) { 
    *env << "Failed to create RTSP server: " << env->getResultMsg() << "\n"; 
    exit(1); 
    } 
    ServerMediaSession* sms 
    = ServerMediaSession::createNew(*env, "testStream", inputFileName, 
      "Session streamed by \"testMPEG1or2AudioVideoStreamer\"", 
         isSSM); 
    sms->addSubsession(PassiveServerMediaSubsession::createNew(*audioSink, audioRTCP)); 
    sms->addSubsession(PassiveServerMediaSubsession::createNew(*videoSink, videoRTCP)); 
    rtspServer->addServerMediaSession(sms); 

    char* url = rtspServer->rtspURL(sms); 
    *env << "Play this stream using the URL \"" << url << "\"\n"; 
    delete[] url; 
#endif 

    // Finally, start the streaming: 
    *env << "Beginning streaming...\n"; 
    play(); 

    env->taskScheduler().doEventLoop(); // does not return 

    return 0; // only to prevent compiler warning 
} 

void afterPlaying(void* clientData) { 
    // One of the sinks has ended playing. 
    // Check whether any of the sources have a pending read. If so, 
    // wait until its sink ends playing also: 
    if (audioSource->isCurrentlyAwaitingData() 
     || videoSource->isCurrentlyAwaitingData()) return; 

    // Now that both sinks have ended, close both input sources, 
    // and start playing again: 
    *env << "...done reading from file\n"; 

    audioSink->stopPlaying(); 
    videoSink->stopPlaying(); 
     // ensures that both are shut down 
    Medium::close(audioSource); 
    Medium::close(videoSource); 
    Medium::close(mpegDemux); 
    // Note: This also closes the input file that this source read from. 

    // Start playing once again: 
    play(); 
} 

void play() { 
    // Open the input file as a 'byte-stream file source': 
    ByteStreamFileSource* fileSource 
    = ByteStreamFileSource::createNew(*env, inputFileName); 
    if (fileSource == NULL) { 
    *env << "Unable to open file \"" << inputFileName 
    << "\" as a byte-stream file source\n"; 
    exit(1); 
    } 

    // We must demultiplex Audio and Video Elementary Streams 
    // from the input source: 
    mpegDemux = MPEG1or2Demux::createNew(*env, fileSource); 
    FramedSource* audioES = mpegDemux->newAudioStream(); 
    FramedSource* videoES = mpegDemux->newVideoStream(); 

    // Create a framer for each Elementary Stream: 
    audioSource 
    = MPEG1or2AudioStreamFramer::createNew(*env, audioES); 
    videoSource 
    = MPEG1or2VideoStreamFramer::createNew(*env, videoES, iFramesOnly); 

    // Finally, start playing each sink. 
    *env << "Beginning to read from file...\n"; 
    videoSink->startPlaying(*videoSource, afterPlaying, videoSink); 
    audioSink->startPlaying(*audioSource, afterPlaying, audioSink); 
} 

編輯1:openRTSP輸出

[[email protected] live2]$ testProgs/openRTSP -o rtsp://192.168.2.22:5555/testStream 
Sending request: OPTIONS rtsp://192.168.2.22:5555/testStream RTSP/1.0 
CSeq: 1 
User-Agent: testProgs/openRTSP (LIVE555 Streaming Media v2010.03.08) 


Received OPTIONS response: RTSP/1.0 200 OK 
CSeq: 1 
Date: Wed, Nov 30 2011 08:30:23 GMT 
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, SET_PARAMETER 


RTSP "OPTIONS" request returned: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE,  SET_PARAMETER 

編輯2:端口檢查

我用Zenmap掃描端口,並將5555顯示爲tcp端口並且是開放的。但它顯示應用程序爲freeciv,但我沒有在我的系統上安裝該遊戲。可能是Zenmap的猜測。我在系統上運行gnome 3.2運行Fedora 16。

編輯3: VLC輸出

[0x21fa840] main playlist debug: processing request item rtsp://192.168.1.222:5555/testStream node Playlist skip 0 
[0x21fa840] main playlist debug: resyncing on rtsp://192.168.1.222:5555/testStream 
[0x21fa840] main playlist debug: rtsp://192.168.1.222:5555/testStream is at 0 
[0x21fa840] main playlist debug: starting new item 
[0x21fa840] main playlist debug: creating new input thread 
[0x7f1f88005410] main input debug: Creating an input for 'rtsp://192.168.1.222:5555/testStream' 
[0x7f1f88005410] main input debug: thread (input) created at priority 10 (input/input.c:220) 
[0x7f1f88005ec0] main input debug: TIMER input launching for 'rtsp://192.168.1.222:5555/testStream' : 15.307 ms - Total 15.307 ms/1 intvls (Avg 15.307 ms) 
[0x2227990] qt4 interface debug: IM: Setting an input 
[0x7f1f88005410] main input debug: thread started 
[0x7f1f88005410] main input debug: using timeshift granularity of 50 MiB 
[0x7f1f88005410] main input debug: using timeshift path '/tmp' 
[0x7f1f88005410] main input debug: `rtsp://192.168.1.222:5555/testStream' gives access `rtsp' demux `' path `192.168.1.222:5555/testStream' 
[0x7f1f88005410] main input debug: creating demux: access='rtsp' demux='' path='192.168.1.222:5555/testStream' 
[0x7f1f7c002860] main demux debug: looking for access_demux module: 1 candidate 
Opening connection to 192.168.1.222, port 5555... 
...remote connection opened 
Sending request: OPTIONS rtsp://192.168.1.222:5555/testStream RTSP/1.0 
CSeq: 2 
User-Agent: LibVLC/1.1.12 (LIVE555 Streaming Media v2011.09.02) 


Received 137 new bytes of response data. 
Received a complete OPTIONS response: 
RTSP/1.0 200 OK 
CSeq: 2 
Date: Wed, Nov 30 2011 19:45:55 GMT 
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, SET_PARAMETER 


Sending request: DESCRIBE rtsp://192.168.1.222:5555/testStream RTSP/1.0 
CSeq: 3 
User-Agent: LibVLC/1.1.12 (LIVE555 Streaming Media v2011.09.02) 
Accept: application/sdp 


Received 641 new bytes of response data. 
Received a complete DESCRIBE response: 
RTSP/1.0 200 OK 
CSeq: 3 
Date: Wed, Nov 30 2011 19:45:55 GMT 
Content-Base: rtsp://192.168.1.222:5555/testStream/ 
Content-Type: application/sdp 
Content-Length: 471 

v=0 
o=- 1322681211098021 1 IN IP4 192.168.1.222 
s=Session streamed by "testMPEG1or2AudioVideoStreamer" 
i=test.mpg 
t=0 0 
a=tool:LIVE555 Streaming Media v2010.03.08 
a=type:broadcast 
a=control:* 
a=range:npt=0- 
a=x-qt-text-nam:Session streamed by "testMPEG1or2AudioVideoStreamer" 
a=x-qt-text-inf:test.mpg 
m=audio 6666 RTP/AVP 14 
c=IN IP4 192.168.1.255/7 
b=AS:160 
a=control:track1 
m=video 8888 RTP/AVP 32 
c=IN IP4 192.168.1.255/7 
b=AS:4500 
a=control:track2 

[0x7f1f7c002860] live555 demux debug: RTP subsession 'audio/MPA' 
Sending request: SETUP rtsp://192.168.1.222:5555/testStream/track1 RTSP/1.0 
CSeq: 4 
User-Agent: LibVLC/1.1.12 (LIVE555 Streaming Media v2011.09.02) 
Transport: RTP/AVP;unicast;client_port=6666-6667 


Received 182 new bytes of response data. 
Received a complete SETUP response: 
RTSP/1.0 200 OK 
CSeq: 4 
Date: Wed, Nov 30 2011 19:45:55 GMT 
Transport: RTP/AVP;multicast;destination=192.168.1.255;source=192.168.1.222;port=6666-6667;ttl=7 
Session: 06AFB6E5 


[0x7f1f88005410] main input debug: selecting program id=0 
[0x7f1f7c002860] live555 demux debug: RTP subsession 'video/MPV' 
Sending request: SETUP rtsp://192.168.1.222:5555/testStream/track2 RTSP/1.0 
CSeq: 5 
User-Agent: LibVLC/1.1.12 (LIVE555 Streaming Media v2011.09.02) 
Transport: RTP/AVP;unicast;client_port=8888-8889 
Session: 06AFB6E5 


Received 182 new bytes of response data. 
Received a complete SETUP response: 
RTSP/1.0 200 OK 
CSeq: 5 
Date: Wed, Nov 30 2011 19:45:55 GMT 
Transport: RTP/AVP;multicast;destination=192.168.1.255;source=192.168.1.222;port=8888-8889;ttl=7 
Session: 06AFB6E5 


[0x7f1f7c002860] live555 demux debug: setup start: 0.000000 stop:0.000000 
Sending request: PLAY rtsp://192.168.1.222:5555/testStream/ RTSP/1.0 
CSeq: 6 
User-Agent: LibVLC/1.1.12 (LIVE555 Streaming Media v2011.09.02) 
Session: 06AFB6E5 
Range: npt=0.000- 


Received 268 new bytes of response data. 
Received a complete PLAY response: 
RTSP/1.0 200 OK 
CSeq: 6 
Date: Wed, Nov 30 2011 19:45:55 GMT 
Range: npt=0.000- 
Session: 06AFB6E5 
RTP-Info: url=rtsp://192.168.1.222:5555/testStream/track1;seq=33348;rtptime=3573241747,url=rtsp://192.168.1.222:5555/testStream/track2;seq=12520;rtptime=2773558772 


[0x7f1f7c002860] live555 demux debug: play start: 0.000000 stop:0.000000 
[0x7f1f7c002860] main demux debug: using access_demux module "live555" 
[0x7f1f7c002860] main demux debug: TIMER module_need() : 5.536 ms - Total 5.536 ms/1 intvls (Avg 5.536 ms) 
[0x7f1f7c00dca0] main decoder debug: looking for decoder module: 33 candidates 
[0x7f1f7c00dca0] main decoder debug: using decoder module "mpeg_audio" 
[0x7f1f7c00dca0] main decoder debug: TIMER module_need() : 0.519 ms - Total 0.519 ms/1 intvls (Avg 0.519 ms) 
[0x7f1f7c00dca0] main decoder debug: thread (decoder) created at priority 5 (input/decoder.c:301) 
[0x7f1f7c00dca0] main decoder debug: thread started 
[0x7f1f7c00e5f0] main decoder debug: looking for decoder module: 33 candidates 
[0x7f1f7c00e5f0] avcodec decoder debug: libavcodec already initialized 
[0x7f1f7c00e5f0] avcodec decoder debug: trying to use direct rendering 
[0x7f1f7c00e5f0] avcodec decoder debug: ffmpeg codec (MPEG-1/2 Video) started 
[0x7f1f7c00e5f0] main decoder debug: using decoder module "avcodec" 
[0x7f1f7c00e5f0] main decoder debug: TIMER module_need() : 1.561 ms - Total 1.561 ms/1 intvls (Avg 1.561 ms) 
[0x7f1f7c006b90] main packetizer debug: looking for packetizer module: 21 candidates 
[0x7f1f7c006b90] main packetizer debug: using packetizer module "packetizer_mpegvideo" 
[0x7f1f7c006b90] main packetizer debug: TIMER module_need() : 0.288 ms - Total 0.288 ms/1 intvls (Avg 0.288 ms) 
[0x7f1f7c00e5f0] main decoder debug: thread (decoder) created at priority 0 (input/decoder.c:301) 
[0x7f1f7c00e5f0] main decoder debug: thread started 
[0x7f1f7c008250] main demux meta debug: looking for meta reader module: 2 candidates 
[0x7f1f7c008250] lua demux meta debug: Trying Lua scripts in /home/jomit/.local/share/vlc/lua/meta/reader 
[0x7f1f7c008250] lua demux meta debug: Trying Lua scripts in /usr/lib64/vlc/lua/meta/reader 
[0x7f1f7c008250] lua demux meta debug: Trying Lua playlist script /usr/lib64/vlc/lua/meta/reader/filename.luac 
[0x7f1f7c008250] lua demux meta debug: Trying Lua scripts in /usr/share/vlc/lua/meta/reader 
[0x7f1f7c008250] main demux meta debug: no meta reader module matching "any" could be loaded 
[0x7f1f7c008250] main demux meta debug: TIMER module_need() : 1.093 ms - Total 1.093 ms/1 intvls (Avg 1.093 ms) 
[0x7f1f88005410] main input debug: `rtsp://192.168.1.222:5555/testStream' successfully opened 
[0x7f1f7c002860] live555 demux warning: no data received in 10s. Switching to TCP 
Sending request: TEARDOWN rtsp://192.168.1.222:5555/testStream/ RTSP/1.0 
CSeq: 7 
User-Agent: LibVLC/1.1.12 (LIVE555 Streaming Media v2011.09.02) 
Session: 06AFB6E5 


[0x7f1f7c00dca0] main decoder debug: removing module "mpeg_audio" 
[0x7f1f7c00dca0] main decoder debug: killing decoder fourcc `mpga', 0 PES in FIFO 
[0x7f1f7c00e5f0] avcodec decoder debug: ffmpeg codec (MPEG-1/2 Video) stopped 
[0x7f1f7c00e5f0] main decoder debug: removing module "avcodec" 
[0x7f1f7c00e5f0] main decoder debug: killing decoder fourcc `mpgv', 0 PES in FIFO 
[0x7f1f7c006b90] main packetizer debug: removing module "packetizer_mpegvideo" 
[0x7f1f88005410] main input debug: Program doesn't contain anymore ES 
Opening connection to 192.168.1.222, port 5555... 
...remote connection opened 
Sending request: OPTIONS rtsp://192.168.1.222:5555/testStream RTSP/1.0 
CSeq: 2 
User-Agent: LibVLC/1.1.12 (LIVE555 Streaming Media v2011.09.02) 


Received 137 new bytes of response data. 
Received a complete OPTIONS response: 
RTSP/1.0 200 OK 
CSeq: 2 
Date: Wed, Nov 30 2011 19:46:05 GMT 
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, SET_PARAMETER 


Sending request: DESCRIBE rtsp://192.168.1.222:5555/testStream RTSP/1.0 
CSeq: 3 
User-Agent: LibVLC/1.1.12 (LIVE555 Streaming Media v2011.09.02) 
Accept: application/sdp 


Received 641 new bytes of response data. 
Received a complete DESCRIBE response: 
RTSP/1.0 200 OK 
CSeq: 3 
Date: Wed, Nov 30 2011 19:46:05 GMT 
Content-Base: rtsp://192.168.1.222:5555/testStream/ 
Content-Type: application/sdp 
Content-Length: 471 

v=0 
o=- 1322681211098021 1 IN IP4 192.168.1.222 
s=Session streamed by "testMPEG1or2AudioVideoStreamer" 
i=test.mpg 
t=0 0 
a=tool:LIVE555 Streaming Media v2010.03.08 
a=type:broadcast 
a=control:* 
a=range:npt=0- 
a=x-qt-text-nam:Session streamed by "testMPEG1or2AudioVideoStreamer" 
a=x-qt-text-inf:test.mpg 
m=audio 6666 RTP/AVP 14 
c=IN IP4 192.168.1.255/7 
b=AS:160 
a=control:track1 
m=video 8888 RTP/AVP 32 
c=IN IP4 192.168.1.255/7 
b=AS:4500 
a=control:track2 

[0x7f1f7c002860] live555 demux debug: RTP subsession 'audio/MPA' 
Sending request: SETUP rtsp://192.168.1.222:5555/testStream/track1 RTSP/1.0 
CSeq: 4 
User-Agent: LibVLC/1.1.12 (LIVE555 Streaming Media v2011.09.02) 
Transport: RTP/AVP/TCP;unicast;interleaved=0-1 


Received 84 new bytes of response data. 
Received a complete SETUP response: 
RTSP/1.0 461 Unsupported Transport 
CSeq: 4 
Date: Wed, Nov 30 2011 19:46:05 GMT 


Sending request: SETUP rtsp://192.168.1.222:5555/testStream/track1 RTSP/1.0 
CSeq: 5 
User-Agent: LibVLC/1.1.12 (LIVE555 Streaming Media v2011.09.02) 
Transport: RTP/AVP;unicast;client_port=6666-6667 


[0x7f1f7c002860] live555 demux error: SETUP of'audio/MPA' failed 461 Unsupported Transport 
[0x7f1f7c002860] live555 demux debug: RTP subsession 'video/MPV' 
Opening connection to 192.168.1.222, port 5555... 
...remote connection opened 
Sending request: SETUP rtsp://192.168.1.222:5555/testStream/track2 RTSP/1.0 
CSeq: 6 
User-Agent: LibVLC/1.1.12 (LIVE555 Streaming Media v2011.09.02) 
Transport: RTP/AVP/TCP;unicast;interleaved=2-3 


Received 84 new bytes of response data. 
Received a complete SETUP response: 
RTSP/1.0 461 Unsupported Transport 
CSeq: 6 
Date: Wed, Nov 30 2011 19:46:05 GMT 


Sending request: SETUP rtsp://192.168.1.222:5555/testStream/track2 RTSP/1.0 
CSeq: 7 
User-Agent: LibVLC/1.1.12 (LIVE555 Streaming Media v2011.09.02) 
Transport: RTP/AVP;unicast;client_port=8888-8889 


[0x7f1f7c002860] live555 demux error: SETUP of'video/MPV' failed RTSP response was truncated. Increase "RTSPClient::responseBufferSize" 
[0x7f1f7c002860] live555 demux debug: setup start: 0.000000 stop:0.000000 
[0x7f1f7c002860] live555 demux error: Nothing to play for rtsp://192.168.1.222:5555/testStream 
[0x7f1f7c002860] live555 demux error: TCP rollover failed, aborting 
[0x7f1f88005410] main input debug: EOF reached 
[0x21fa840] main playlist debug: finished input 
Opening connection to 192.168.1.222, port 5555... 
[0x7f1f7c002860] main demux debug: removing module "live555" 
[0x7f1f88005410] main input debug: thread ended 
[0x21fa840] main playlist debug: dead input 
[0x21fa840] main playlist debug: changing item without a request (current 0/1) 
[0x21fa840] main playlist debug: nothing to play 
[0x2227990] qt4 interface debug: IM: Deleting the input 

似乎一切都OK,但有以下兩個錯誤:

[0x7f1f7c002860] live555 demux error: SETUP of'audio/MPA' failed 461 Unsupported Transport 

[0x7f1f7c002860] live555 demux error: SETUP of'video/MPV' failed RTSP response was truncated. Increase "RTSPClient::responseBufferSize" 
[0x7f1f7c002860] live555 demux debug: setup start: 0.000000 stop:0.000000 
[0x7f1f7c002860] live555 demux error: Nothing to play for rtsp://192.168.1.222:5555/testStream 
[0x7f1f7c002860] live555 demux error: TCP rollover failed, aborting 

回答

1

我懷疑這可能有一些與使用非標準端口號有關,但我可能是w榮。 IANA分配的RTSP端口是554,而8554是次要的IIRC。

它看起來像你修改服務器上的live555代碼,而不是使用5555。但是,您不知道VLC的live555使用是否支持使用非標準RTSP端口號。我想你可以在VLC代碼中查看這個。

可嘗試:與URI

    • 使用openRTSP工作中使用數據包嗅探器,看看有什麼實際發生的網絡,即正在使用哪些端口上。
    • 使用標準的端口,並看看是否能工程

    這些步驟可以讓你縮小問題的所在。

    編輯:

    從RTSP通訊科,你可以看到,VLC試圖創建一個單播會話,服務器與多播傳輸地址進行響應。VLC然後播放流,接收10秒沒有數據,然後嘗試開始該服務器再次與多播地址進行響應,因此RTSP服務器461 根據LIVE555響應交錯RTP在RTSP會話:

    testMPEG1or2AudioVideoStreamer讀取MPEG-1或2節目流文件(名爲「test.mpg」),從中提取音頻和視頻基本流,並使用RTP將它們流式傳輸到多播組239.255.42.42,端口6666/6667(用於音頻流)和8888/8889(用於視頻流)。該程序還具有(可選)內置RTSP服務器。

  • +0

    我第一次嘗試默認端口號554,但它需要超級用戶權限,我試着用超級用戶權限運行該程序。但那不行。這就是我嘗試更改端口號的原因。對不起,我沒有在問題中提到過。我會嘗試你的其他建議。 – Jomoos

    +0

    openRTSP顯示'200 OK'狀態和端口檢查與Zenmap也顯示5555作爲一個開放的TCP端口。我編輯了問題以顯示輸出。我錯過了什麼? – Jomoos

    +0

    我認爲問題不在於端口是開放的,但更多的是VLC可能不支持在該端口上打開RTSP URI,但這只是一個猜測。您可以嘗試的另一件事是如果您沒有root訪問權限,則可以在客戶端和服務器上使用替代端口8554。 – Ralf

    1

    在我的情況下禁用虛擬機(VirtualBox的在這種情況下)的網絡適配器工作。