Android Video Streaming
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Subtitle |
| |
Alternative Title |
| |
Title of Series | ||
Number of Parts | 64 | |
Author | ||
License | CC Attribution 2.0 Belgium: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/45912 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
00:00
Android (robot)Streaming mediaGoodness of fitStreaming mediaAndroid (robot)Slide ruleText editorOperating systemMobile WebSkeleton (computer programming)Data conversionGoogolOperator (mathematics)XMLComputer animation
01:09
Software maintenanceSoftwareTelecommunicationSoftware developerSource codeNormed vector spaceOpen sourceAreaWireless LANStreaming mediaServer (computing)ArchitectureTheoryComputer programmingJava appletFormal languageGastropod shellAndroid (robot)Communications protocolTimestampWeb pageThread (computing)MetadataControl flowInclusion mapProjective planeServer (computing)AreaProgramming languageCartesian coordinate systemJava appletContent (media)Software developerTranscodierungDifferent (Kate Ryan album)Thread (computing)LaptopBuffer solutionCodeStreaming mediaPulse (signal processing)Web pageMetadataTimestampCodecProduct (business)Process (computing)Error messageConnected spaceWeb browserFile formatInformationRow (database)EmailAndroid (robot)Slide ruleEnterprise architectureClient (computing)Mixed realityMultiplication signLogical constantSoftware frameworkBit rateOpen sourceRevision controlFeedbackDialectSoftwareComputer configurationInteractive televisionSemantics (computer science)Programmer (hardware)Computer programmingInformation technology consultingRegular graphMultiplicationPresentation of a groupSineFile archiverEvent horizonFreewareGodSemiconductor memoryScripting languageWebsiteAuthorizationElectronic program guideSoftware maintenanceSoftware testingCommunications protocolPoint (geometry)Computer-assisted translationGame controllerGoodness of fitInheritance (object-oriented programming)Subject indexingSystem administratorComputer animation
09:56
Machine visionConfiguration spaceCartesian coordinate systemMetadataServer (computing)Computer animation
10:27
Demo (music)GEDCOMServer (computing)Virtual machineCASE <Informatik>Direction (geometry)MathematicsTranscodierungVideo gameStreaming mediaConnected spaceEvent horizonChainGodComputer animation
11:24
Personal digital assistantMatching (graph theory)Cartesian coordinate systemMereologyCASE <Informatik>Digital photographyBit rateOperator (mathematics)AverageGoodness of fitFamilyComputer animation
12:33
Personal digital assistantNewton's law of universal gravitationInterior (topology)Moment (mathematics)Video gameCartesian coordinate systemContent (media)Android (robot)WebcamCircleStreaming mediaInternet service providerBeta functionGoodness of fitSampling (statistics)Computer animationLecture/Conference
13:23
Office suiteRow (database)Library (computing)Streaming mediaOpen sourceAndroid (robot)CodecDesign by contractServer (computing)Software developerWeb 2.0TwitterWebsiteGoodness of fitComputer animation
15:29
Presentation of a groupWaveComputer animationXML
Transcript: English(auto-generated)
00:07
Good morning everybody, we are here to talk about Android video streaming. You know, it's not a good conversion name, but well, let's try to think about it.
00:22
We are talking about Android, the operating system, mobile phone, developed by Google and the community, video streaming. We thought that maybe everyone with a mobile in their pocket could be a journalist.
00:40
You know, in each corner of every street they could send a video to anyone who wants to see it. And that's a good idea, maybe that's the future we've got. We are talking about Android devices as video prosumers, that's what I said. We want people to send what they see, what they look to all around the world, and all these kind of things.
01:10
In this slide I thought I could use, I could put an index, but that's a good example of not an index. I'm going to move from past to the future of this project, I'm talking about the present.
01:27
All this started with a very short development team. It's just a software developer and me, and I'm a telecommunication engineer. We thought about this requirement, that people maybe could send what they see to the internet,
01:46
and maybe they could send to their friends, who knows to whom. I'm working in HI Iberia, it's an enterprise from Spain. We have developed this product because we've got a client who paid for it.
02:05
So we have enough time to develop it, that's why we moved into this process. We are a company who is working with ICT companies, banking, public administration, public bodies,
02:22
and R&D, research and development. We are in the seventh framework program, national programs, regional programs, and all these kind of things. That's an enterprise since 20 years ago. We have been doing things about technology consultancy, maintenance, software quality, development,
02:43
and nowadays we are working hard in open source products and research and development, as I said. Which is the project origin. We were working in a public project of Madrid City Council, in the arts area.
03:02
They were thinking about using the visitors, not just showing to the visitor what they have made, they need feedback from the visitors. So there is a cultural institution, Matadero de Madrid, I don't know if you know Madrid.
03:20
Well, if you go, let's see it. They need interaction with the visitors. So they thought they need three columns, three pillars. They need wireless infrastructure, because the people who go there need wireless infrastructure to connect with the world. They need video streaming, because they think that maybe all the things the visitors see or think could be interesting for anyone in the world.
03:52
And we have developed a semantic search product just for the archive. They have events, they have presentations, and they have all these kind of video things.
04:02
So they want the people to find the things quite easy. What's the duration of eight months, and what's completely open source. So we've got about the video streaming thing, a simple idea. It's about, imagine, we are seeing the new car we want to buy, we want to send it to a friend.
04:28
And so we've got our mobile, that's the one I have. It's Samsung Galaxy S. I don't have stock options in this company, but it's a good mobile phone. You could buy it.
04:41
Well, you capture, you record the video, and you take it in front of your mobile phone, but you send it to a transcoding server. And we use the well-known transcoding application with GAD, FFMPAT. And we use codec and container-free container.
05:01
You know, AGG, Fiora, Barbies. All the things we've got about Steve.org. So we transcoded the stream, and we sent it to a streaming server. We use iSCAS, and we use OCC Forward to send it, to upload the content to the streaming server. And if we've got it over there, we can consume it in a laptop with using Firefox, HTML5, VLC or MPlayer, everything we want.
05:31
That's the simple idea of the architecture. Which technologies we are using. Well, we have tested it in Android devices, 1.6, 2.1, 2.2.
05:42
We use TCP as a transport protocol, because we are doing buffering. We have no problem about the feedback, the recent protocol, and all this kind of things TCP has. But it's quite easy for us to send from the mobile to the transcoding server using TCP.
06:01
We were thinking about RTP, the typical one, but we prefer to use it. We have to convert. We record the signal with the video and the audio in different streams. I'll tell you later why. But well, we've got the container MP4 and the audio with pulse code modulation, PCM in different streams.
06:25
And we convert it with this codecs and containers. R and TR for the video and Barbies for the audio. We use the transcoding application we've got, FMP. And IceCast as a streaming server and ask for where to send it to upload the content to the streaming server.
06:48
We use Java as a programming language. We have out-of-memory errors. So that's why we use it. Only because we've got the previous product and we reuse it.
07:02
We use self-scripting to control the process of the pipes we use to connect FMP with ACK Forward, with IceCast. We use self-scripting. And the end-user side, we could use whatever we want. VLC and Player or HTML5 inside Firefox or the browser.
07:26
Technical details. As I said, we've got two different recording threads. Because if we record them all together, we have problems to send it to the transcoding server. Because we don't have all the headers that the container format have.
07:44
If we send it, we don't have timestamps, we don't have all the things we know. We need to know which kind of bytes are video, which kind of bytes are audio. So we record them separately, and we send it separately in two different threads.
08:01
In the transcoding server, we mix them. We use a control port. We send XML data to include the metadata information. Like the author, the title, or whatever the user wants to include. And we respond with the listen ports.
08:20
We send, as I said, we send the video and the audio in different ports. We're using TCP to send the information. We use well-known transcoding technologies, so there's no problem about that. It's quite well tested, and there's no problem about that. The problem here is the audio delay.
08:43
It's controlled because we are using our own timestamps. We define which kind of delay we've got in the record thread. And that's why we put it in the transcoding server to mix the audio and the video. And we are using pipes to connect the application we are using in FFMPEG, our firmware, and all this kind.
09:06
We have developed a version of CAD called MyCAD. Because we really needed to construct a stream of bitrate, a constant bitrate of bytes.
09:21
And if we use CAD, we are maybe having problems about broken pipe and all these kind of things. And we already developed a little application called Chop Pages. We are trying to put inside FFMPEG. We are talking with them, the developers. And that's the only thing this application is doing.
09:43
It's making pages of our container, just a few little, a few short. Because they are quite big, we have problems with the IceCast server. Here we have some screenshots of the application.
10:01
They are in Spanish because it's for a Spanish institution. But it's quite simple. If you have already worked with Android, it's quite easy to define with an XML, all these kind of things. We have here to define the configuration of the server, the metadata, the vision of the camera.
10:25
It's quite simple. I thought I could do for you a live demo, but I didn't know if I could have Wi-Fi. And I don't have a 3G connection or a roaming connection, so I beg you to trust me.
10:48
I don't know if you trust in God like the Americans do, but well, please. In Fernando, we trust. If you go to Madrid, maybe you could go to Matadera. I don't know if you have ever been there.
11:01
And you can see it working over there. They are trained then when they have an event or maybe the visitors could... They have all the chain. They have the streaming server and the transcoding server put in their machines. And you could send it, they define, they have posters. You could send your video to this direction and you could use it.
11:25
Just cases, which applications more than the cultural institutions. We are thinking that maybe everyone could be a journalist. In each corner of every street, we could be recording what we are seeing
11:40
and maybe there is someone in the other part of the world that maybe could be interested in that. And maybe, for example, in Madrid nowadays, why not the Egyptian people could send what they are seeing to the rest of the world.
12:02
So everyone could be a good journalist. Another just case could be, for example, if we want to see our children at the school and they are playing football, so maybe we want to send this football match
12:21
to our family or anyone. So maybe it could be another good application. I don't have a photo about children playing football, so I use this one. I don't know. That was the best moment of my life last year.
12:42
Another good application could be adult content. That's not a joke. I was talking to an adult content provider and he thought that if anyone in their house could send what they want to record
13:02
to other people, that's a very good interesting thing. I suppose you know Russian roulette, I think it's called, the webcam that is changing in a random circle. Maybe that could be a good example of what we can do with Android beta streaming.
13:24
And the future. Well, we don't know who knows the future, but that's an open source license, so maybe you could do things about this development. You can give support.
13:41
We are trying to decide to which forge we move the code, but of course it's completely open source because it's on the contract and we know the open source is the best way to develop.
14:00
If you want to contribute or maybe you have good ideas about this product or about the future of video streaming, maybe you could contact me or you could enter to our website and get an opinion and see what we have done.
14:22
That's all and if you have questions, maybe it's just two minutes. Why do you need transcoding? Because if you see the API of Android, we don't have the possibility to write with using free codecs.
14:48
We cannot record with R, Barbies and Theora. We wanted to use them because we wanted to use a free streaming server, Icecast, so we had to use R, Barbies and Theora.
15:03
We thought about putting inside the Android the libraries of R, and it was quite easier to use, to send the codec, to send the stream as the mobile record.
15:25
No more questions? Okay, thank you so much.