开发者

Java Media Framework: how to get framerate from videostream

开发者 https://www.devze.com 2023-03-13 07:21 出处:网络
I am using the Java Media Framework to play a video file.开发者_Python百科 Now I would like to know the framerate of the videostream?

I am using the Java Media Framework to play a video file.

开发者_Python百科

Now I would like to know the framerate of the videostream?

How is that possible? Thanks!

edit: instances of the following are available:

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


try the following

        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 ) {
        }

or perhaps form the content descriptor form the DataSource. For 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());
        }
    }
}

or at least, try to get the Format from the 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());
        }
    }
}
0

精彩评论

暂无评论...
验证码 换一张
取 消