Java媒体框架:如何从视频流中获取帧率



我正在使用Java Media Framework播放视频文件。

现在我想知道视频流的帧速率是多少?

这怎么可能?谢谢

编辑:以下实例可用:

javax.media.Manager
javax.media.MediaLocator
javax.media.NoProcessorException
javax.media.Processor

尝试以下

        try {
            Processor myProcessor = Manager.createProcessor( myMediaLocator );
            Format relax = myProcessor.getContentDescriptor().relax();
            if(relax instanceof VideoFormat) {
                double frameRate = ((VideoFormat)relax).getFrameRate();
            }
        } catch( NoProcessorException e ) {
        } catch( NotConfiguredError e ) {
        } catch( IOException e ) {
        }

或者可能形成DataSource的内容描述符。对于URLDataSource:

DataSource dataSource = myProcessor.getDataOutput();
if(dataSource instanceof URLDataSource){
    PullSourceStream[] streams = ((URLDataSource)dataSource).getStreams();
    if(streams.length > 0){
        Format relax = streams[0].getContentDescriptor().relax();
        if(relax instanceof VideoFormat) {
            System.out.println(((VideoFormat)relax).getFrameRate());
        }
    }
}

或者至少,尝试从javax.media.Buffer:中获取格式

DataSource dataSource = myProcessor.getDataOutput();
if(dataSource instanceof PullBufferDataSource){ // or PushBufferDataSource
    PullBufferStream[] streams = ((PullBufferDataSource)dataSource).getStreams();
    if(streams.length > 0){
        Format relax = streams[0].getFormat();
        if(relax instanceof VideoFormat) {
            System.out.println(((VideoFormat)relax).getFrameRate());
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新