Streaming audio - where to start? - iphone

I need to develop an embedded audio streaming server.
Requirements:
Voice quality or better
Intended for low power wifi transmission
Broad support in existing software and devices (ie, windows media player, quicktime, vlc, iPhone, Android, etc).
Royalty/patent free, or cheap to license
Preferences:
Low overhead TCP/IP based streaming protocol
Voice grade codec (easy to implement in software, no DSP, 32bit CPU if needed)
Would be nice if it supported HTML5 browsers, but is there any codec (such as raw) that is supported by the latest browsers that is lower overhead than MP3?
Therefore:
What are the relevant streaming protocols I should be looking at?
What are the relevant codecs I should be looking at?
What transport streams should I be looking at?
What am I missing, or where else should I be looking for this type of need?

The easiest route would be to wrap the iPhone 3G S' hardware accelerated AAC codec in some sort of standard network stream; I think it's royalty free. For broad support, your best option is MP3 over HTTP shoutcast-style (not royalty free).

Related

Cross Platform Video streaming

I'm looking for a video streaming soluiton which has the ability to upload the video files to the server and deliver to multiple receivers on-demand across the hardware and software platforms (Desktop, Tablet, Mobile, Windows, Android, iOS, etc.). The solution should also support streaming live videos.
Can HTML-5 used as client for the above requirements? IF so, what should be the server side streaming solution? Any feedback and alternatives will be very helpful.
Appreciate it.
You may look at MediaMosa, it is a backend that handles video management. You may create your own application on the front-end.

Possible to Stream Video on iphone/iPad Using Windows Encoder?

Hello all i use windows encoder to stream video online and have a server that i use to broadcast this stream. i am trying to make an app that streams video to the iPhone/iPad using a unique link. i have seen apps out that stream their own DVR cameras so there must be a type of converter or encoder to use. any suggestions?
The short answer is no, not at this time. The iPhone/iPad/iPod Touch work natively with the Apple HTTP Adaptive segmented streaming protocols. MMS (Windows Media) streams are not compatible with "i" devices and will not play. You will need to look into encoding your video with this other format. Check out the Apple specs for a full description of the protocol. Future versions of Windows Media Services (4.0) are claiming that they will support the Apple protocols but this is only a preview/beta at this time and may not truly support the Apple specs.
If your trying to do on-demand iPhone video, you can utilize a service such as Encoding.com to pre-encode your files in the adaptive segmented format for your users to view. For live encoding, Telestream has a product called Wirecast which can encode in a h.264 Apple approved baseline format which can be sent to a service such as Akamai, Multicast Media, or Wowza Server for distribution to your clients.

can we stream WAV audio format

Can we stream live audio which is in WAV format from iPhone to server?
Yes. Yes, we can.
I use DNLA applications very often to stream media to/from my devices (iPhone, iPod, Android, Laptop) and a server in my home. The WAV format is most certainly supported among many others.
You can read up on DNLA here. It's an organization that outlines a set of interoperability guidelines that allow servers and clients to stream various formats of media. I love it.
There is no shortage of DNLA compatible apps for both the iPhone and Android. On my wife's iPhone, I use the free version of iMediaShare.
And on my Android, I use AndroMote.
Now, if you want to know how to do this as a developer, I have no idea since I don't write for the iPhone. However, the answer to your actual question is "Yes," it can be done and there are plenty of apps that do it via the DLNA or Universal Plug N Play (UPnP) guidelines.

flv stream decoding, 3gp encoding

Are there any open source projects in any language and other recourses that I need to look at in order to implement flv to 3gp conversion? It's better to be streaming, I mean return first portion of 3gp before last portion of flv is downloaded.
Or are there any similar services already implemented - my goal is to have something like
http://converter.org?source=sourceUrl.flv&targetFormat=3gp that I can feed to 3gp player, in my case - on iPhone, and not wait until server downloads entire flv.
UPDATE: ffmpeg does really good job here, just
ffmpeg -i input.flv output.mp4
and that's it. But output file can be used only after conversion is done. Streaming is still an open question. There is ffserver that does some sort of streaming but I could not make it work.
I'm not sure if it is possible, but if there's one thing that should do it.
it's http://www.ffmpeg.org/ ..
it can convert anything to anything on an online platform. don't know if it supports streaming but definitely the best solution for online video conversion
Well this one might be a little late to the party but to stream video online you'll need a Media Streaming Server to deliver the video over a specific streaming protocol (i.e. HTTP,HTTPS,RTSP,RTMP). I've also been looking for such a "real-time" transcoding service but the closest thing I've found so far is the Video CDN's which are quite pricy, and also limited in formats/support. What would be really nice is for one of the media servers to add in a real-time transcoding feature. At the time of this writing no such service exists that I know of.
The top 10 most popular options for Media Streaming Servers are (IMHO):
VideoLAN - VLC Media Player (good for quick tests and proof-of-concept)
Kaltura - Open Source video platform
Real Media - Helix Universal Streaming Server (may be best bet for 3GP over RTSP)
Apple - Darwin Streaming Server / Quicktime (Live) Broadcaster (best for iPhone/iPad)
Red5 - Open Source Flash Streaming Server
Adobe - Flash Streaming Server
Wowza - Media Server
FluMotion - Open Source Multimedia Streaming
Microsoft - Windows Media Server (AVI, WMV, Silverlight & other formats)
FreeCast - An OGG Theoris (video) and OGG (audio) streaming/conversion platform
As you can see there are many options for streaming and you can start as simply as hosting the video on the same server and delivering to Desktop computer browsers via HTTP (the easiest way to get started with this is trial & error). Each offers different features in terms of protocols supported and transcoding, but none are truly real-time as you mention where you could feed in a source video and get an output video in the format of you choosing (i.e. 3GP). My personal choice would be to start with VLC for small-scale tests on a home network, since it is basically a swiss-army knife for desktop video that can also act as a server for any of the formats it can playback (though it may be more complicated to get this to stream to the public internet and even harder to go all the way to a single device on a private carrier network, some info is available from people who've tried):
http://forum.videolan.org/viewtopic.php?f=4&t=45782
Some basic transcoding instructions to go to MP4 (required for iPhone/iPad/iPods):
http://wiki.videolan.org/MPEG-4
I also agree about FFMPEG being by far the best solution for video conversion, as it also supports 3GP and you can at least start playing around with conversion on your own test server, you might want to try the following PHP Classes project:
http://www.phpclasses.org/package/5977-PHP-Manipulate-video-files-using-the-ffmpeg-program.html
In my experience that was an excellent contribution to speed web interaction with FFMPEG's mostly command-line and sometimes clunky interface. Who knows, maybe you'll build the first real-time transcoding service, I'd be the first to signup as a customer and/or as a contributor to help you on that!

MIDI player/synthesizer library for the iPhone

Does anyone know if there is a free/cheap MIDI player/synthesizer library that I can incorporate into my iPhone application?
As I understand it the iPhone doesn't have native support for MIDI playback.
To work around this limitation I've created a bank of .caf sound samples that I playback myself but I'd really like to improve the implementation and use MIDI if possible.
Any advice would be greatly appreciated.
Since 10 october of 2011, that is since iOS5, Apple has started delivering basic API for midi files playback. The API is called MusicPlayer along with MusicSequence Check this out :
https://developer.apple.com/library/ios/#documentation/AudioToolbox/Reference/MusicPlayerServices_Reference/Reference/reference.html#//apple_ref/doc/uid/TP40009301-CH1-SW1
By setting up an appropriate Audio Unit Processing Graph you can output the sound you like.
Look at TiMidity++; it looks like something that should be portable to the iPhone platform.
TiMidity++ is a software synthesizer. It can play MIDI files by converting
them into PCM waveform data; give it a
MIDI data along with digital
instrument data files, then it
synthesizes them in real-time, and
plays. It can not only play sounds,
but also can save the generated
waveforms into hard disks as various
audio file formats. TiMidity++ is a
free software, distributed under the
terms of GNU general public license.
Many people have ported TiMidity++ into various platforms; FreeBSD,
NetBSD, many Linux distributions,
Windows (and/or Cygwin environment),
and Mac OS are known to have their own
versions.
There is a commercial library available from Crimson Technology
Crimson Technology Library
I have never used it so I can't vouch for it's quality.
This is a library I've used for MIDI synthesis in Android:
https://code.google.com/p/android-midi-lib/
Although it can't be used for iOS, I think you(and anyone who's interested) can still take a look at the implementation of the MIDI file format(i.e. how bytes are written to a .mid file) and possibly implement a MIDI library yourself.