I am trying to play some video streams from mms and m3u8 inside my Android application. It seems that the MediaPlayer doesn't have support on this and from what I have read on FFMPEG it seems there isn't any easy way with that also. I am using Android 2.1 SDK.
Any ideas on what I should in order to make this work? There are some apps there in the store that already do this, but I don't know how.
You may try the Vitamio library, http://vitamio.org
Vitamio is a multimedia framework for all Android devices. Vitamio works like the Android's default MediaPlayer except that it includes much more powerful features. And it's absolutely free !
The following network protocols are supported for audio and video playback:
MMS
RTSP (RTP, SDP)
HTTP progressive streaming
HTTP live streaming (M3U8), for Android 2.1+
Related
I am trying to play a video in android native code using new API mediacodec. I dont want to go mediaPlayer way due to unavoidable reasons. can anybody share some code snippet as to how to go about it? Thanks in advance.
Your original question is too generic. And to be honest, create a new media player in native code is a huge task for your own.
If you are only seeking for some media player solution which has better supporting for variety of formats/codecs like VLC player, you can either try VLC lib which is open source but still in beta release. I have tried VLC, but it really has some crash issues or ANR issues, which is inside the whole framework.
Or you can try with Vitamio SDK which is a library without souce code. Check it out at this link: https://github.com/yixia/VitamioBundle Below is the feature list of it:
I have tried this solution, it is very stable, also some minor issue on 4.3, but still acceptable. So I am not posting any spam here, just copying from the official document:
Vitamio is an open multimedia framework or library for Android and iOS, with full and real hardware accelerated decoder and renderer. It's the simple, clean and powerful API of Vitamio that makes it famous and popular in multimedia apps development for Android and iOS.
According to the developers' feedback, Vitamio has been used by more than 1000 apps and 100 million users around the world.
Vitamio can play 720p/1080p HD mp4,mkv,m4v,mov,flv,avi,rmvb,rm,ts,tp and many other video formats in Android and iOS. Almost all popular streaming protocols are supported by Vitamio, including HLS(m3u8), MMS, RTSP, RTMP, and HTTP.
Network Protocols
The following streaming protocols are supported for audio and video playback:
MMS
RTSP (RTP, SDP), RTMP
HTTP progressive streaming
HLS - HTTP live streaming (M3U8)
And yes, Vitamio can handle on demand and live videos in all above protocols.
Media formats
Vitamio used FFmpeg as the demuxers and main decoders, many audio and video codecs are packed into Vitamio beside the default media format built in Android platform, some of them are listed below.
DivX/Xvid
WMV
FLV
TS/TP
RMVB
MKV
MOV
M4V
AVI
MP4
3GP
Subtitles
Vitamio support the display of many external and embedded subtitle formats.
SubRip(.srt)
Sub Station Alpha(.ssa) / Advanced Sub Station Alpha(.ass)
SAMI(.smi/.sami)
MicroDVD(.sub/.txt)
SubViewer2.0(.sub)
MPL2(.mpl/.txt)
Matroska (.mkv) Subtitle Track
More features
More wonderful features
Support wide range screens from small phone to large tablet
Multiple audio tracks support
Mutitiple subtitles support, including external and embedded ones
Processor optimization for many platforms
Buffering when streaming
Adjustable aspect ratio
Automatically text encoding detection
I'm interested in using Vitamio for an Android project that would use HLS video and support older 2.x versions of Android.
I'm trying to play the video inside and html5 <video> tag, but need it to play inline as opposed to fullscreen. Additionally, I want this to work for live streaming (i.e webcam) not pre-recorded videos.
Does anyone know if it can do this? Alternatively, is there another library I can use to make this work?
Additionally, if I can't do support back to 2.x but this can work in 3.x I'd love to know that too.
Vitamio Network Protocols
The following streaming protocols are supported for audio and video playback:
MMS
RTSP (RTP, SDP), RTMP
HTTP progressive streaming
HLS - HTTP live streaming (M3U8)
And yes, Vitamio can handle on demand and live videos in all above protocols.
We have enabled multicast streaming in one of our machines using VLC server. We use the following URL for streaming the multicast data.
rtp://239.1.2.11:5004 & udp://239.1.2.11:1234
But when we pass these links to the VideoView or mediaplayer in android, we get the message as "Sorry, the video can not be played".
Is it the case that multicast streaming is not supported in android? (Though multicastsocket class is present in library) or are we missing anything?
The links play well on the VLC client so we don't think there is any issue in VLC server.
We are using android v2.3 for development.
I am not at all an expert in video encoding, but I think the problem is not with the streaming, I think it is with the encoding of your videos. You should have a look at Android Supported Media Formats and make sure that your video encoding,format,resolution meet the recommendation specified there.
I know that android supports RTSP streaming if you use the native video player, but I have not been able to find if you can stream video on Android using the HTML5 tag.
The real reason I want to figure this out is I will be using Apple HTTP Live Streaming to serve video to the iPhone using HTML5 and would like to keep things simple and be able to simply define another streaming video source for android.
Any help would be greatly appreciated! Thanks.
No, it doesn't work and probably never will. However, from Android 3.0, HTTP Live Streaming is supported.
I recommend you use a flexible media server such as Wowza. It can stream HLS as well as RTSP and RTMP(Flash) from a single source.
Is it possible to stream video to an Android device by using Windows Media Services? Which protocol should I use between RTSP and HTTP? Actually, I have a video file (MP4 format) at a server and I want to stream video files to an Andriod device.
Currently Android does not support adaptive streaming. I searched for some methods a while ago, but Android does not support any of them. No streaming via Windows Media Server, no support for Flash Media Server and HTTP Live Streaming also does not work. The last one would be the best solution since it does not depend on proprietary protocols - but unfortunately it uses a different container format MPEG-TS and a playlist file M3U8 which Android does not understand at the moment. There is an issue for this - you might want to stare it. ;-)
That said, I would recommend you to just upload the MP4 file to an HTTP server and play it via the HTTP url. If it doesn't play, you have to add some extra streaming information by hinting it - e.g. with MP4Box:
mp4box -hint <filename>
Have fun. :-)