小弟之前已经对JMF框架的使用非常熟悉,但因为JMF的局限性比较大,在linux运行有问题,因此想寻求另外一个实现java多媒体的框架,现在好不容易找到了FMJ与ffmpeg,据官方的介绍,FMJ框架是JMF框架的替代品,可以完全脱离JMF运行,只要有ffmpeg动态链接库的支持,但是,关于FMJ的使用小弟真的摸不到头绪,之前虽然已经看过了官网上的相关资料以及源代码,但是那些代码都并不是像JMF的那些接口那样清晰易懂,其中有一个叫FFMPEG-Java例子,我试过用其代码编译,导入ffmpeg动态链接库后运行,但是并没得到预期效果。其源代码在如下地址:http://fmj-sf.net/ffmpeg-java/getting_started.php小弟运行后打印的结果如下:ffmpeg-java and ffmpeg versions do not match: avcodec_version=3426306 LIBAVCODEC_VERSION_INT=3352580
Exception in thread "main" java.lang.RuntimeException: Didn't find a video stream
at net.sf.ffmpeg_java.example.AVCodecSample.main(AVCodecSample.java:80)
[mpeg @ 033e0050]max_analyze_duration reached
Input #0, mpeg, from 'test.mpg':
Duration: 00:03:59.02, start: 0.500000, bitrate: 2792 kb/s
Stream #0.0[0x1e0]: Video: mpeg1video, yuv420p, 960x540 [PAR 1:1 DAR 16:9], 104857 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 29.97 tbc
Stream #0.1[0x1c0]: Audio: mp2, 22050 Hz, 2 channels, s16, 64 kb/s希望有哪位有FMJ丰富经验的大虾能指点一下小弟,这个问题已经困扰小弟近一个月了,救急啊!
Exception in thread "main" java.lang.RuntimeException: Didn't find a video stream
at net.sf.ffmpeg_java.example.AVCodecSample.main(AVCodecSample.java:80)
[mpeg @ 033e0050]max_analyze_duration reached
Input #0, mpeg, from 'test.mpg':
Duration: 00:03:59.02, start: 0.500000, bitrate: 2792 kb/s
Stream #0.0[0x1e0]: Video: mpeg1video, yuv420p, 960x540 [PAR 1:1 DAR 16:9], 104857 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 29.97 tbc
Stream #0.1[0x1c0]: Audio: mp2, 22050 Hz, 2 channels, s16, 64 kb/s希望有哪位有FMJ丰富经验的大虾能指点一下小弟,这个问题已经困扰小弟近一个月了,救急啊!
// Find the first video stream
int videoStream=-1;
for (int i=0; i<formatCtx.nb_streams; i++)
{ final AVStream stream = new AVStream(formatCtx.getStreams()[i]);
final AVCodecContext codecCtx = new AVCodecContext(stream.codec);
//System.out.println("codecCtx " + i + ": " + codecCtx);
if (codecCtx.codec_type == AVCodecLibrary.CODEC_TYPE_VIDEO)
{
videoStream=i;
break;
}
}
if (videoStream==-1)
throw new RuntimeException("Didn't find a video stream"); // Didn't find a video stream看起来系统找不到任何videocodec.建议好好看看你系统上安装的ffmpeg.试试就用ffmpeg能否打开视频文件?