Posts tagged Working

iPhone Streaming

I’ve finally done it after two long days working with VLC and my Mac and iPhone I finally have a native live video stream to an iPhone.

iPhone Streaming

I started by looking at this site which explained a way to stream to iOS devices using HTTPStreaming and in particular adaptive HTTP Streaming. This tutorial was however out of date, like many I had found either VLC was many version behind the current or the software used to segment the stream no longer existed.

Since version 1.2 (now in version 2.0.1) VLC has been able to create HLS live streams as part of its core streaming functionality, this function though I have found to be poorly documented as it is very similar to the standard progressiveHTTP Streaming module.

Stream Requirements

  • A Video or Stream Source
  • VLC –  dummy or web interface
  • A webserver, Apache or similar

You used to also require the mediastreamsegmentator from Apple, however a version of this software has now been written into the core of VLC after the Unwired Developer created a module for VLC back in early 2010 to help streamline the process, this module has since become core functionally of VLC.

The Working VLC Code

The code below is the final code that I used to start VLC into dummy mode from the command line, then transcode and re-stream the incoming stream or video file.

/Applications/VLC.app/Contents/MacOS/VLC -v -I "dummy" rtsp://media-us-2.soundreach.net/slcn_sports.sdp  :sout="#transcode{vcodec=h264,vb=512, venc=x264{aud,profile=baseline,level=30,keyint=30,bframes=0,ref=1,nocabac},acodec=mp3,ab=96} :std{access=livehttp{seglen=10,delsegs=true,numsegs=5, index=/Applications/MAMP/htdocs/iPhone/stream.m3u8, index-url=stream-########.ts}, mux=ts{use-key-frames}, dst=/Applications/MAMP/htdocs/iPhone/stream-########.ts"

The first bold item is the incoming stream, for this I used a random RTSP stream I found online for testing, This can be replaced with a file that you wish to stream “as live”, there is also another option in this code to allow “On-Demand” videos to be created like this, but I will go into that another day.

The second bold (index=) item is telling VLC the file path of where it should store the “playlist”, the file that controls the stream, and the one you link to in the video players.

Screen Shot - Many Code Attempts

The third bold (index-url=) item is telling it how to link the .ts (Transport Stream) files in relation to the playlist file, in most cases these are stored in the same location, which means I only had to provide the file name of the stream files. The #### signifies a number which is auto generated by VLC with each file.

The fourth and final bold (dst=) item is telling VLC where to store the .ts files and what to call them, this is that system file path, similar to the index= above, including the filename.

On the right you can see the many code variations I went through first to come up with the winning combo above. The above code still needs a few tweaks to find the optimised quality to bit rate, and also a few tweaks to the number of .ts files created. Each .ts file holds approx. 10 seconds of video, and after 5 have been created it deletes the oldest and replaces it with the next 10seconds of footage, this currently allows for 40seconds or so of rewind during a live show.

Distrubution

To distribute HLS or AdaptiveHTTP streams is quite simple, in its simplest form all you require is a web server (Apache, Nginx, IIS) and a webpage with the <video> tag.

Mime Types however are critical and are not set as standard for most web servers, these simple flags are enough to break a stream that is otherwise behaving perfectly. To find out more about mime’s have a look here: http://en.wikipedia.org/wiki/MIME

Configure the following MIME types for HTTP Live Streaming:

File Extension MIME Type
.M3U8 application/x-mpegURL orvnd.apple.mpegURL
.ts video/MP2T

If your web server is constrained with respect to MIME types, you can serve files ending in .m3u with MIME type audio/mpegURL for compatibility.

 

The above quote came direct from the apple HLS Developers Site here.

For Apache systems its as simple as creating a .htaccess in the site’s folder or editing the main httpd.conf with the following two lines:

AddType application/x-mpegURL    .m3u8
AddType video/MP2T    .ts

OR

AddType audio/mpegURL     .m3u
AddType video/MP2T    .ts

Busted iPhone - No Way to get back to Safari via Touch Control's

This then tell’s the client that the file is video and in a mpeg transport stream, which allows it to process it accordingly. Without one of these MIME flags being set, a .m3u8 file is classed as text/plain and all you load is a 10+ line document with reference links, no video.

Also without the MIME type’s being set you can end up with a black screen on the iPhone Safari, the only way to get out of this black screen is to fully exit Safari and then stop it before it loads or Exit Safari and stop the web server, this then forces an error on the iPhone and allows you to navigate the control’s again.

The Web Page

The webpage I used for this test was extremely simple, and included two lots of the <video> tag. The top set was a reference file that can be found on apple developer site, and the bottom one was the stream from my mac.

<html>
  <head>
    <title>HTTP Live Streaming Example</title>
  </head>
  <body>
    <video src="http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8" controls></video>
     <br/>
     <br/>
     <br/>
    <video src="http://10.0.0.3:8080/iPhone/stream.m3u8" controls> </video>
  </body>
</html>

The above code and system works flawlessly on an iOS 5.1.1 and OSx 10.7.3 (Safari 5.1.5).

Ravensbourne 2012

Ravensbourne 2012 is the end of year show run solely by students to show case students work to their respective industries. As for 3D Storytelling my role is as head of rigging and logistics. This has involved working a lot closer to the directors of the event rather than working within the engineering group.

 

The main task that I have faced with Ravensbourne 2012 has been lighting for the 4th floor. Originally fashion wanted to put there show on level 7 but this would have made lighting it physically impossible due to the height of the ceiling and logistically it wouldn’t be possible to have the number of people that they wanted in that space. Russell and myself talked them round to holding the show on the 4th floor which is a much better space to work in but still has many challenges first of which was designing a light weight structure that was strong enough to take more lights than we had last year. Due to the weight restrictions on the floor I had to put an extra 4 ground supports in to spread the load over the floor. Overall the maximum load that I can put onto the floor is 4 tons but I can’t have more than 500KG at any one point. This has definitely been my biggest engineering challenge this year, if we had been allowed to fly the structure off the RSJ’s on the ceiling above the 4th floor I would have never faced this issue and the space would look a lot cleaner than its going to, but we all have to make compromises.

 

Working so closely with the management team has posed its own issues as Russell and myself have been rather segregated from the engineering team and been in the level 1 office most of the time, this is something that we had to do however as the event would not run without us. The hours that we have put into this has been tremendous, planning almost everything and trying to fix all of the logistical/engineering problems and picking up the slack when needed. I have also had a couple of run in’s with the management team on some of their decisions, the main one being over stage electric. After 3D Storytelling I did some deals with stage electrics for Ravesbourne 2012 with the managing director of Ravensbourne 2012 but the rest of the management team did not agree and felt that we could get a better deal elsewhere. This was not true as the kit they were asking for from other companies was not what I had specified for the rig. Eventually a very last minute decision was made to go with my original plan, as it was the best deal on the table.

PROJECT: 3D Storytelling Conference

0

Ravensbourne - 3D Storytelling ConferenceOver the last week I have had the opportunity to work on the world’s first 3D Storytelling Conference at Ravensbourne. The first couple of day’s I was just assisting with the rigging and gel’ing of over 300 lights through out the building. The design reason behind having to gel so many lights was to colour code each floor with the Conferences colour scheme, and I’m glad to say the end result was worth it, and the building looked amazing as you can see from the picture on the right.

Today and Yesterday, I was asked to help out on the hospitality side of the event, providing assistance to delegates and generally keeping the event running smoothly. Yesterday started off as a very cold morning stood in North Greenwich Tube station, in just a T-Shirt, providing directions towards Ravensbourne. The day got slowly better, as I came in after about 2 hours in the cold, to provide Wi-Fi Assistance up on the 4th floor. This new role gave me a chance to learn more about the Ravensbourne network and how to troubleshoot it’s problems on mac and windows.

Today was a bit better, and defiantly a lot warmer, started out in the Walker space as one of the 4 Hospitality team in there making sure the audience were in and out at the correct times as well as providing general assistance to lost delegates. Working in the Walker Space had a huge advantage over other locations as it meant I could see all the fabulous 3D Content that was on show and see how it was being used to portray released and up and coming stories. The walker space is pictured to the right.

At the end of today, as the delegates were networking over in Union Square, we started the de-rig and had the huge task of turning Ravensbourne back into a working uni.

 

CIRCUS: Location Camera

0

Another day, Another Operational skill, this time we were learning about Location Camera’s which is also know as Electronic News Gathering (ENG), which is also know as Personal Single Camera (PSC). This type of shooting is completely different to studio work, and requires a different mindset, for example with PSC you have to remember to add 30-seconds of Bars & Tone to the beginning of every tape you shoot with. Another thing before every shoot, is its best to check the back focus and time code is set-up correctly.

Without Time Code, editing the shot footage, is near impossible, especially when you are trying to sync up two different shots of the same pice of action up. For theses sorts of cuts to be smooth, the Time Code also needs to be synced between all the cameras that are recording.

Working with Rolly today has been interesting and light hearted session, we used a simple interview set-up to practice recoding to a Location Camera, for this simple shoot we teamed up with the location Sound Group.

Welcome

0

Welcome to my new blog, this blog will hopefully contain daily reports of what I’m currently doing at Uni and as a Freelancer. This blog is not only a good record of what I have been learning over the next few months, it will also highlight some key projects that I’ve been working on.

Blog posts will be all categorized under news, with them also being categorized by Project / Lecture. This will not only keep the blog organized, it will also help me when I’m referencing back to it later for my IPP (Industry and Professional Practice) Report, which this will forma a huge part of.

IPP is a unit on my Broadcast Technology Degree, that is designed to teach us about how the industry works, as well as some basic transferable skills including Team Working and CV Writing. As part of the unit we have to create a Reflective Blog, this blog should be created on the Maharh Blogging tool, but as this is not currently functional, I have decided to create this one on my website. At a later date, I will transfer the content over to the required software.

If you like what you are reading, please feel free to like the site on Facebook, or add my RSS feed to your RSS Reader.

Go to Top