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. :)
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:).
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.