I have submitted an update to the app store. Streaming will now work and not crash. There is a crash issue when saving the configuration. The config will be saved, but setting up the video camera can crash. I will fix this issue when I have some time. Also, I have had to disable UDP support for the time being. I will issue another update later, that re-enables it.

I have update Livu’s RTP engine. I have removed an older full RTP engine. As of now it only works with TCP. I will implement UDP support later on. I will also be looking at reenabling the auto bitrate option. My previous implementation was using a ‘hack’ that allowed me to use sysctrlbyname to dig out the TCP control block. From there I could calculate the usable send window. To enable this I had to hack some headers in the iOS SDK to get the structure definitions. It became too hard to maintain the hack, so I disabled the support. I will take the usual approach of using async sockets and monitoring how much data was sent. If all the data is is not sent then obviously the TCP buffer is full. I will run this through filters and try to keep the stream pauses do to bandwidth issues to a minimum. I will also be adding the ability to stream TCP/UDP traffic to endpoints. This will give Livu the ability to send the H264/AAC streams to a server without any setup via RTSP. To enable this the H264 stream will emit the SPS/PPS before each key frame (this is already done).

I have pushed version 1.2.2. to the store. This is a minor update. It includes the following.

Auto rotate streams to support any device orientation.

Fixed H.264 bitstream issue for Flash players.

Black and White and Blur filter (More filters to come soon).

Removed TCP auto bit rate. This feature was totally broken, and hard to maintain the current implementation.

The next release will have the URL based app launching and configuration. I ran into some issues that will require I rewrite some of the configuration. I will also be including a new preview window along with a video effects list. I do have a branch creating a RTMP stream. However, there is something terribly wrong going on with the H.264 bit stream and FFmpeg/librtmp. When I have time I will look closer at this issue.

As some of you know I just do not have a lot of time to put work into Livu. Livu was never really intended to be an end user application. I wrote it with the specific purpose of licensing the code. However, it has come to my attention that there are quite a few people that use it (I rarely check my iTunesConnect account). It seems many of you want RTMP support. So I am going to do this for you. The first release will not support Adobe authentication, so if you need this send me a message (preferably over email). For the tech minded I will roll my old RTMP code back into Livu via a custom build of FFmpeg and librtmp. I took it out a long time ago in favor of supporting the open RTMP/RTP standard, and also to free me from the confines of TCP only. So once again my wish list of what will go into Livu in the next release.

New audio engine for supporting different AAC profiles and Speex support.

HTTP tunneling of RTMP.

I do apologize to the users of Livu for the very untimely updated. I hope you can understand that I work hard for my employer, and then I have other obligations to handle in my off time. I will make a real effort to sit down and write some of these features in.

I had a review for Livu posted in Spain stating that it does not work with Wowza 3. I downloaded the app from the App Store and tested against version 3.0.4 and 3.0.5. In both cases it worked fine, so I assume the review was user error. If anyone has any issues with Wowza 3 please let me know.

I will be installing Wowza 3.0.5 on an EC2 instance within a week. After I have done this I will test against improved RTCP support. If this goes well then I will write a heuristic to control the bandwidth for both TCP and UDP transports. The TCP Auto mode will be removed regardless of how this goes. I can no longer maintain this very ugly hack.

I will also be putting in the simple support for launching Livu from another application or web page with all configuration parameters supported. There will also be an option to allow streaming from any orientation. In other words if the app is rotated into portrait mode it will rotate the stream accordingly. However, I will not be rotating the UI. Only the preview and stream will be rotated.

Recently I have been asked when I am going to release an update with the feature request list that I posted way back in August. I did get to some of the items in the list. While I was getting ready to start work on some of the more involved features I was approached by several companies to come and work for them. After some long thought on working for someone I decided to take a position with TokBox. This was not an easy decision as Licensing my code was and still is going good. However, what TokBox is doing with their OpenTok API was just too interesting to pass up. Right now I am trying to complete some loose ends with a few clients I had prior to my employment. Once that is done I will start putting in some time with Livu. Keep in mind that if you really want a custom version of Livu that you can still license my code base. Here is the old list with a few comments added

Auto restart – Done

Multiple profiles – Internal support is done

Audio / Video only – Done

Better feedback – Not done

Remote control via a web interface – Not sure if I will ever do this.

640×480 over cellular – I will give it a shot with the next release

Streaming of prerecorded content – Not sure if I will get to this anytime soon.

Mixing of Live and prerecorded content – See above

The main feature that has been requested over the past few months is the ability to launch Livu with the settings set for the user. I really want to build an API where by Livu would prompt the user to enter in a URL, user name and password. Livu will then connect to the URL and get the configuration settings for the user. Additionally the app would ‘auto brand’. In other words I would grab a set of images for branding the application to the site. As this feature will take some time I am going to write in a temporary solution. The next version will contain a URL scheme allowing web sites and other iPhone apps to launch Livu with the stream settings. As an basic example: live://myapp/?host=127.0.0.1&port=1935&app=/userstreams/steve&user=steve&pass=test. There will be more options then this, but this gives you the idea. A web page could embed this in a web page. When the user taps the url it would open up Livu with the settings. This could also be used in a NSUrl in another iPhone app to launch Livu. If you have any suggestions please email at the address listed on my home page.

Publishing to Darwin Streaming Server is still not working. There is something a little strange going on with RTP timestamps. Streaming Audio or Video is not a problem, but streaming them together the audio is not playing. I suspect DSS is very particular with regard to the delta time between arriving RTP packets. I do not have time to work on this at the moment.

I have had a report of issues with the iPhone 4S video streaming. I have not noticed any problems, but I will go through and test all the various settings. I am going to try and get an update into the store this week. It will include the following updates:

I have both audio and video streaming to DSS, but for some reason audio is not playing. Debugging on the DSS side suggests audio is not being sent out correctly which further suggests there is either something wrong with my time stamps or they way I send out AV. Right now I do not have the time to look into this further.

A customer has reported that Livu does not work with DSS. I have found two issues with it. RTSP authentication with my RTSP code does not work correctly. I will be fixing this over the next few days. Another issue is I do not seem to get RTCP packets back from DSS. I will be debugging thorough this as well. If I can not get RTCP packets back from DSS, then I will disable the UDP transport timeout functionality when connecting to DSS.