6

I need to develop an app what is capable of receiving a RTSP Stream. I tried to find solutions/tutorials in the internet for the whole day now, but without any success. I read a lot about using FFMPEG or Live555 (more FFMPEG, also I read that Live555 is not necessary when using the newest version of FFMPEG), but nowhere I looked it was described in a form I could understand, when I found questions on stackoverflow the answers were really short and I could not figure out what they tried to explain. So now I need to ask myself. I used "Homebrew" to download and install FFMPEG, now when I look at my dir /usr/local/ I can see this, the installed files are contained in subfolders of "Cellar" Cellar dir

I also tried to have a look at these projects:RTSPPlay by Mooncatventures and kxmovie by kolyvan.

I did not really figure out how to work with these projects, the Documentation is indefinite and "murky". Well, when I tried to compile these projects the kxmovie failes with errors that are like "missing avformat.h", error missing avformat.h I added the dylibs from the usr/local/cellar/ffmpeg/1.2.1/lib to the project but it seems that this is not the right method. Nearly the same Issue with the RTSPPlay xcodeprj, it gives back the error that an "Entitlements.plist" is missing, after removing the linkings to that file completely I am getting 99+ Apple Mach-O Linker Errors, honestly I could not understand why.

I wanted to try the Live555 too but I cant see through all these obscure and confusing files, again I could not oversee the documentation and how to build the libraries for iphoneos (I read it is the easiest way to receive RTSP Stream but it was the same stack of confusing files as the other projects had)

Maybe if someone tried with these Projects or developed an Application himself could help me with his/her SourceCode or if somebody is seeing through all the Content of FFMPEG / Homebrew made dir's he/she could maybe explain me how to use it, that would probably help me and all the other desperate developers who are searching for a solution.

Just a little edit: I am trying to receive a RTSP H.264 decoded Video Stream.

Thanks in advance, Maurice Arikoglu. (If you need any kind of SourceCode, Links, ScreenShots etc. please let me know)

Community
  • 1
  • 1
Maurice
  • 1,466
  • 1
  • 13
  • 33
  • probably don't check these forums as much as I should, in rtspplay our little demo, you don't need the entitlement.plist, is was needed in older Xcode versions also remove arm7s arch and compile for iPhone release this will not work on simulator and is only for iPhone. also we do support via Facebook app dev group – Michelle Cannon Jun 28 '13 at 23:53
  • we also have some tutorials here www.streammore.tv – Michelle Cannon Jun 28 '13 at 23:55

2 Answers2

2

For anyone who is searching for a working RTSP Player Library have a look at Durfu's Mooncat Fork I've found online, it is working perfectly fine on iOS 8. There is a sample code included, if you struggle with the implementation I can help you.

Maurice
  • 1,466
  • 1
  • 13
  • 33
1

I've examined many of those projects that you mentioned, and experienced on those well..

You can use ffmpeg libraries to make a rtsp streaming client, as ffmpeg supports rtsp protocol... But there is an important issue which I've seen in my tests that ffmpeg's rtsp protocol has some important issues when using UDP transport layer for streaming... Even with the latest version (2.01) many RTP packets are dropping during streaming so images become glitchy sometimes... If you use TCP or http transport layer, then it works well...

For live555 project, this library works well with both UDP and TCP transports when streaming rtsp streams.. But ffmpeg is so much powerful/has many capabilities than live555.

If you decide to use ffmpeg then, basically, you should follow the below steps,

  1. make a connection - avformat_open_input
  2. find audio/video codecs - avcodec_find_decoder
  3. open audio/video codecs - avcodec_open2
  4. read encoded packets from file/network stream in a loop - av_read_frame A. a. decode audio packets - avcodec_decode_audio4 b. fill audio buffers with audiounit/audioqueue framework B. a. decode video packets - avcodec_decode_video2 b. convert yuv pictures to rgb pictures - sws_scale or opengles shaders

good luck...

Tarum
  • 161
  • 5
  • could you probably go deeper with your explanation? If you could explain me this via a Step by Step guide that would be awesome thanks! – Maurice Sep 04 '13 at 14:08