javacv 写mp4,用JavaCV和FFmpeg播放视频

So, I'm developing a custom video player for Android but I need to play more than the android supported video files (mp4, 3gp...), like wmv, avi, flv.

At this time I do already convert any video type to .mp4 and I'm able to play them after recoding, but I have no idea how can I play those wmv, avi files without recoding them to mp4.

Is there any way I can play any video on Android without recoding them?

JavaCV + FFmpeg library already working, just don't know how to do that.

By the way, heres the code that I'm using to recode videos:

public static void convert(File file) {

FFmpegFrameGrabber frameGrabber =

new FFmpegFrameGrabber(file.getAbsolutePath());

IplImage captured_frame = null;

FrameRecorder recorder = null;

recorder = new FFmpegFrameRecorder("/mnt/sdcard/external_sd/videosteste/primeiroteste.mp4", 300, 300);

recorder.setVideoCodec(13);

recorder.setFrameRate(30);

recorder.setFormat("mp4");

try {

recorder.start();

frameGrabber.start();

while (true) {

try {

captured_frame = frameGrabber.grab();

if (captured_frame == null) {

System.out.println("!!! Failed cvQueryFrame");

break;

}

recorder.record(captured_frame);

} catch (Exception e) {

}

}

recorder.stop();

recorder.release();

} catch (Exception e) {

e.printStackTrace();

}

}

解决方案Is there any way I can play any video on Android without recoding them?

Why are you recording the Video?? There is no need to record the video. JavaCv.

This is sample code for giving you the idea, how you can achieve it.

FrameGrabber grabber = new FrameGrabber(videoFile);

grabber.start();

BufferedImage image= null;

while((image=grabber.grab())!=null){

// TODO set the image on the canvas or panel where ever you want.

}

grabber.stop();

你可能感兴趣的:(javacv,写mp4)