小弟之前已经对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丰富经验的大虾能指点一下小弟,这个问题已经困扰小弟近一个月了,救急啊!

解决方案 »

  1.   

    你用的ffmpeg-java和你机器上安装的ffmpeg版本不匹配。看好你用的ffmpeg-java是支持那个版本的ffmpeg。
      

  2.   

    请问在哪里可以看到版本之类的信息呢?我之前下ffmpeg源码的时候也没看到版本之类的提示喔。很苦恼!
      

  3.   

    打开任何一个源码文件如ffmpeg_java/AVCodecLibrary.java。注释里能看见这个版本对应的ffmpeg版本。
    // 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能否打开视频文件?
      

  4.   

    我的ffmpeg的动态链接库可能版本过高了,fmj需要的几个库文件:avformat-51.dll,avcodec-51.dll,avdevice-51.dll,avutil-49.dll请问要用哪个版本的源码才能编译出呢?我之前编译都是52的!
      

  5.   

    楼主,你做过有关jmf开发rtsp流媒体播放器的东东么??小弟急求帮助,已经在这方面卡壳很久了我现在已经能够接受服务器的音频数据,但是数据很不清晰,音频播放的时候很卡,不知道是什么原因如果楼主做过相关的东西,不知道能不能将代码借我看看,或者给点提示。。万分感谢哎http://topic.csdn.net/u/20120321/15/395bb230-dd55-46e0-ab64-1cb8552b8242.html?888024634[email protected]