What type of .avi video jmf plays?

2019-06-07 12:17发布

问题:

After struggling through exceptions in using jmf, on How do I remove nullpointerexception. I am able to now play my video, but only the .mov file here at this website.

But I am creating my video file using ffmpeg using images and .wav audio files.

I can create it in any format, .avi, .mov, .mp4, but what is important is I should be able to play it in my player, which I built using JMF.

Currently, I am getting this error,

Unable to handle format: FMP4, 1366x768, FrameRate=30.0, Length=3147264 0 extra bytes
java.lang.NullPointerException
        at java.awt.Container.addImpl(Unknown Source)
        at java.awt.Container.add(Unknown Source)
        at javax.swing.JFrame.addImpl(Unknown Source)
        at java.awt.Container.add(Unknown Source)
        at mediaPlayer.<init>(mediaPlayer.java:31)
        at mediaPlayer.main(mediaPlayer.java:38)

The exceptions here are not the problem, since the player works fine with lunarphases.mov on that site.

The problem is

How do I encode the video so that my jmf media player can play it and handle the format?

Thanks for all your help and I really appreciate all your efforts you would put on this problem for me. :)

回答1:

I had a very similar project where I used jmf to play video file. I just used the .mov file. So I can suggest you about .mov. You may convert it later to .avi again.

Here is what you can do to play your .avi video in jmf, As far as I guess, this would work for all type of .avi videos. Your concern is to have a good quality video, it will give you a good quality video.

Here's the trick,

You first encode the video, whatever way you want to do it. You can set the bitrate, framerate everything the way you want to, the way you want to.

Try running the video with jmf, it may not run due to limited support of formats by jmf. Then encode it according to this site.

The same code would now run the video in jmf video player without any problem.

The same is what Robadob pointed too in the above answer,

ffmpeg -i input.avi -vcodec mjpeg -acodec pcm_s16be -ac 2 -y output.mov 

Yes, it gave me a terrible quality video, so encode it by giving a different bit rate,

ffmpeg -i input.avi -vcodec mjpeg -acodec pcm_s16be -ac 2 -y -b:v 5000k output.mov 

This would give you a better quality .mov video.

Hope this helps:).



回答2:

http://www.oracle.com/technetwork/java/javase/formats-138492.html

avi is a container, it can hold video encoded in various different methods. Check this list for the formats which JMF can and can't decode.

According to; http://jeshua.me/blog/EncodingvideowithffmpegforJMF

ffmpeg -i input.mpg -vcodec mjpeg -acodec pcm_s16be -ac 2 -y ouput.mov 

Should work.