Posts tagged video
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.
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.
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 typeaudio/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
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).
Penrose Market Fly Away CAD
For the Penrose Market last week we had to create a complete studio in a Rack called a Fly Away. We had to create this Fly Away because the studio facilities at Ravensbourne were in use for another shoot on the same day.
This Fly Away was created using any available kit that we found on Level 9, then using the time in our 208 and 204 lectures to design and build the system with the help of James Uren and the rest of the BET Pathway. After an initial brain storm and specification we came up with a simple system that consisted of:
- 7 SD Cameras
- 1 VT Deck
- 1 16 Channel Vision Mixer
- 1 16×1 Router
- CTP and Jack Field
- 3 Digital DA’s – 1 Analogue DA in the Fly Away
- 8 Digital DA’s – 4 Digital to Analogue Converters in the Monitor Stack
- 10 Monitors
- 1 Large Engineering Monitor
- 1 Test Pattern Genorator
- 2 Wave Form Monitors
The initial brainstorm and scribbled drawing was then drawn up, neatly, onto a large A1 sheet of paper, along with a Cable Schedule and CTP / Jack Field layouts. This large Drawing was then attached to the side of the rack and used as a reference throughout the rest of the project.
After the project was completed on Tuesday (22/11/2011) we were required as part of our Hardware Systems unit (204) to draw up a full CAD in AutoCad based on the same layers and components that were used to create the CAD’s for the main system in Ravensbourne. This exercise was designed to teach us how to use CAD to create Technical Drawings as well as be confident in reading and updating existing drawings. A screen shot of mine can be found on the right, with a PDF copy of the final cad available for download below.
The technical drawing we had to create was in fact two drawings of two separate systems which interacted closely with each other. The first was the main Fly Away, which was a single rack with all the processing and routing required, and the second was of the Monitor Stack which was required to make the Rack work. This is a major problem with the system as it require one part to work to make the rest work, whilst also doubling the amount of video connections in and out of the rack. However these problems were only noticed after the initial and were not a problem in this project as the monitor stack and rack were being built side-by-side at the same time.
Having so many connection to and from the rack also opened up another problem, which could simply be caused by confusion during the connection of the rack to the video sources and the monitor stack. This confusion could lead to video being sent the wrong way into the system, which could cause damage to equipment, or for example a Camera could be fed into one of the ENG inputs, thus it would appear to work fine on the router but it would have completely bypassed the monitor stack and more importantly the Vision Mixer.
Above I talked about just a few of the problems with last weeks Fly Away, in time I may look into re-drawing the Technical Drawing to alleviate some of the faults mentioned, and when I have re-drawn a new version of the system I will post a comparison between the two.
Download an A1 PDF of my Technical Drawing Here.
Download a PDF copy of my Cable Schedule Here.
Rave Live 2012 – Tom Glover
Welcome to my sub-blog about Rave Live 2012, or what ever it will finally be called this year. Today we started the project and looked into what is required for us to be sucessfull in the unit as well as the LIVE broadcast in mid-june 2012.
Today we found out we will actually be working towards two events, one test event in November 2011 and the other main event in June 2012. We also decided on our roles for the events, I 1/2 decided and was 1/2 allocated the Head of Interactive Media, which mainly entails creating IP Steams, Social Media and other cool interactive items.
IP Streams
My first big challenge is going to be getting my head around IP Streams and hows they integrate with HTML and the rest of the Broadcast Transmission Chain.
Today I started playing around with Quicktime Broadcaster for Mac OS X and my inbuilt iSight Webcam as the live video source. Thing started off smoothly, until my mac crashed. I did manage to get a low quality stream to Quicktime to my Windows PC but this was very limited in performance Maxing out at 15frames per second and for only short bursts (10-15 Seconds before crashing the Mac), which made it pretty useless.
Initial Todo List for the November Event
- Look into other Encoders and Streaming Servers
- Look into what is already available at Rave to Stream
- Look into how to link into the Rave Transmission Chain
- Create a Dynamic Website with Customised Content, by the Exhibitors
- Link Social Media into the Website
- Combine the Stream and the Website
- Possibly add mobile compatible Website/Stream.
LECTURE: TV Systems & Signals
0Today, has been an eventful day mainly due to the snow that has been falling constantly for the last 24 hours. This morning there was only a light dusting of snow on the ground, so I risked it and went to uni as usual, no problems getting in. It was whilst I was at uni, things started to go bad. The snow just kept falling and falling, which i knew was bad right from the start, even though it wasn’t settling at North Greenwich.
This morning we had a practical tv systems and signals lecture with John Palmer. We looked into termination of video signals, and why it was important. which was an interesting lecture. and it surprised alot of us, how much the signal changed based on if it was terminate or unterminated.
At the end of this lecture, the snow was still falling and I was now dreading trying to get home.
Another Electronics Practical in the afternoon, and the snow was still falling, by this time, my dad had phoned me to say we now had nearly a foot at Petts Wood, and that it will be hard trying to get home.
I finally left uni at 5pm, and got to Lewisham via the Jubilee Line and DLR with no Problems. Lewisham had still only 2-3 inches of snow and trains were running ok, into London. MY train arrived about 10-minuets late and was said to be fast to Orpington, which was fine for me, just meant a slightly longer walk back.
We Pulled out of Lewisham and moved slowly down to Hither Green, where we stopped and the opened the doors. This wouldn’t have happened if we had been the true fast service that they had said in Lewisham. We had stopped because there were 5 other trains in front of us trying to reach the South East, all being blocked by one train that had broken down at Petts Wood.
After 3 hours of very slow moving and long waits at stations we finally made it to Petts Wood, the snow is in deed over a foot deep, and there are only two lines out of the usual 4 the could just about be used. Walking back from Petts wood station was just as dangerous, with next to no grip on the compacted snow.
I don’t think, I’ll be going to uni anytime soon.