I had the privilege of leading the team that created this app, and wrote a fair amount of the code myself. If you have any questions about the app, its development, or just anything at all relating to justin.tv on the iPhone, please feel free to ask.
What iDevices support this (video 'broadcasting')?
iPhone 4 and 3GS. The iPhone 3G didn't have a hardware video encoder, if I recall correctly, so we disabled broadcasting on it and anything lower (though viewing works just fine!).
I think we also tested on the latest iPod Touch and found everything worked. I'd have to check my notes to be certain though (sorry, not in front of my work laptop, looking after my 1-month-old daughter right now!).
What H.264 encoding is used (profile, level)?
Would definitely have to check my notes for this. I'll follow up.
What bitrate do you aim for? Is it different for 3G vs 802.11g/n?
The OS gives us a limited degree of control on this one. We get to specify the bitrate as "high", "medium" or "low" and it appears to be completely undocumented what each one maps to, if they're the same for each device, etc. In practice it looks like "low" is always around 80-120kbps, "medium" is about 800kbps-1.5mbps and "high" is somewhere north of 4mbps. We use "low" and "medium" depending on how much actual network bandwidth we think is available.
What framerate/resolution?
Resolution depends on the camera - we don't modify it away from the native resolution. So far, either 480x360 or 192x144 depending on device and selected camera.
Same is basically true for framerate. So far every camera I've tested has given us 26fps.
I've been looking into writing a live streaming app, and came across the warning "Important: iPhone and iPad apps that send large amounts of audio or video data over cellular networks are required to use HTTP Live Streaming." (http://developer.apple.com/library/ios/#documentation/networ...).
However, it also says "Typical latency with recommended settings is in the neighborhood of 30 seconds" in the FAQ.
Actually, since they are US-based iPhone developers, they did, but that's not even the issue. Users of the app would be breaking the TOS.
I don't know about you, but as a consumer I don't like it when companies insert BS clauses they have no intention of enforcing (or worse, selectively enforcing) in their TOS. Not that anyone here needs more convincing that AT&T sucks...
It's actually the very first thing on their list of prohibited uses.
Examples of prohibited uses include, without limitation, the following: (i) server devices or host computer applications, including, but not limited to, Web camera posts or broadcasts, [...]
Does/Could this app locate or detect a user is at a particular event?
If Justin.tv could sort by event, other users could watch events like outsidelands music festival and flip through all the different view angles of the concert.
I understand event based results can be found by searching, but the idea of a collection of event streams intrigues me. Just an idea..
This is another step closer a device I have been thinking about for many years. Imagine having a silent witness to any incident one gets involved in where it is one person or group's word against another. This device would record audio/video/time/location and send that data, real time, to a remote server that can timestamp and saved it. Police brutality, a bar fight, war crimes, an auto accident? Even if the cameras/phones are confiscated, stolen, or destroyed, the truth has already been set free and there is no way to cover it up.
18 comments
[ 4.3 ms ] story [ 56.7 ms ] threadWhat H.264 encoding is used (profile, level)?
What bitrate do you aim for? Is it different for 3G vs 802.11g/n?
What framerate/resolution?
Thanks for the opportunity to ask!
iPhone 4 and 3GS. The iPhone 3G didn't have a hardware video encoder, if I recall correctly, so we disabled broadcasting on it and anything lower (though viewing works just fine!).
I think we also tested on the latest iPod Touch and found everything worked. I'd have to check my notes to be certain though (sorry, not in front of my work laptop, looking after my 1-month-old daughter right now!).
What H.264 encoding is used (profile, level)?
Would definitely have to check my notes for this. I'll follow up.
What bitrate do you aim for? Is it different for 3G vs 802.11g/n?
The OS gives us a limited degree of control on this one. We get to specify the bitrate as "high", "medium" or "low" and it appears to be completely undocumented what each one maps to, if they're the same for each device, etc. In practice it looks like "low" is always around 80-120kbps, "medium" is about 800kbps-1.5mbps and "high" is somewhere north of 4mbps. We use "low" and "medium" depending on how much actual network bandwidth we think is available.
What framerate/resolution?
Resolution depends on the camera - we don't modify it away from the native resolution. So far, either 480x360 or 192x144 depending on device and selected camera.
Same is basically true for framerate. So far every camera I've tested has given us 26fps.
The iPhone 4's camera is 1280 × 720 though . . .?
Would definitely have to check my notes for this. I'll follow up.
Baseline profile, 1.3.
I've been looking into writing a live streaming app, and came across the warning "Important: iPhone and iPad apps that send large amounts of audio or video data over cellular networks are required to use HTTP Live Streaming." (http://developer.apple.com/library/ios/#documentation/networ...).
However, it also says "Typical latency with recommended settings is in the neighborhood of 30 seconds" in the FAQ.
So... I'm not really sure how to proceed.
I don't know about you, but as a consumer I don't like it when companies insert BS clauses they have no intention of enforcing (or worse, selectively enforcing) in their TOS. Not that anyone here needs more convincing that AT&T sucks...
It's actually the very first thing on their list of prohibited uses.
Examples of prohibited uses include, without limitation, the following: (i) server devices or host computer applications, including, but not limited to, Web camera posts or broadcasts, [...]
If Justin.tv could sort by event, other users could watch events like outsidelands music festival and flip through all the different view angles of the concert.
I understand event based results can be found by searching, but the idea of a collection of event streams intrigues me. Just an idea..
Especially, if you have justin.tv sponsor an event, and get the majority of users to download the app and start broadcasting.
The app should be able to send approx. GPS position, and the server can create an event "channel" with all the related streams (based on GPS).
App should have a location-disable option too.