Samuh
Samuh

Reputation: 36484

Making Video files Android ready for playback over HTTP

I am working on an Android application which is supposed to play videos over HTTP on Android devices. Before we setup a server to host the video files just wanted a few things clarified:

As per the developer documentation, Android supports .mp4 and .3gp container formats for video. If we use H.263(video) - AAC LC (Audio) audio-video codec used for our media files will we be able to play the video by passing the URL to MediaPlayer class?

I did a little experiment and passed URL of one of the video files(.mp4) to the MediaPlayer class and got the following error:

Command PLAYER_INIT completed with an error or info PVMFErrContentInvalidForProgressivePlayback

From the docs, I came to know that for progressive playback, the video's index (e.g moov atom) should be at the start of the file.

Questions:
1. How do we make our videos Android-ready?
2. What are the different considerations that we need to make?

Please help.

Thanks.

Upvotes: 3

Views: 801

Answers (2)

Stanislav Vitvitskyy
Stanislav Vitvitskyy

Reputation: 2377

You can actually achieve this using a pure Java implementation of ISO BMF ( MP4 ) container used JCodec ( http://jcodec.org ). For this use the following code:

MovieBox movie = MP4Util.createRefMovie(new File("bad.mp4"));

new Flattern().flattern(movie, new File("good.mp4"));

The side effect of 'Flattern' is creating a web optimized movie file that has it's header BEFORE the data.

You can also use similar functionality from command line:

java -cp jcodec-0.1.3-uberjar.jar org.jcodec.movtool.WebOptimize <movie>

The JCodec library can be downloaded from a project website.

Upvotes: 1

Samuh
Samuh

Reputation: 36484

I cross posted this question on Android-developers google group. Mark answered it there. Thanks Mark! See this thread

Upvotes: 0

Related Questions