繁体   English   中英

使用 vlcj 从视频中获取 FPS

[英]Get FPS from video using vlcj

有没有办法在不启动视频播放或显示视频本身的情况下从 vlcj 获取每秒帧数?

不,恐怕没有办法做到这一点。

这不是 vlcj 的限制,vlcj 提供 LibVLC 提供的任何内容。

对于需要此类信息的应用程序,我将诸如“MediaInfo”工具之类的工具作为单独的进程(使用 commons-exec)运行并解析输出。

https://mediaarea.net/en/MediaInfo

// Create a VLCJ component and a window (if having a GUI is acceptable for you)
EmbeddedMediaPlayerComponent mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
JFrame frame = new JFrame();
frame.setContentPane(mediaPlayerComponent);

// Make sure the video is not visible nor audible
mediaPlayerComponent.mediaPlayer().audio().setMute(true);
mediaPlayerComponent.mediaPlayer().audio().setVolume(0);
mediaPlayerComponent.setVisible(false);

// Load the file. startXXX() functions are blocking calls, rather than playXXX(), until the video is ready.
frame.setVisible(true);
mediaPlayerComponent.mediaPlayer().media().startPaused("C:\\video.mp4");

// if there are several video tracks, make sure to take the index of the track with the same "id" value.
int index = 0;
for (int i = 0; i < mediaPlayerComponent.mediaPlayer().media().info().videoTracks().size(); ++i) {
  if (mediaPlayerComponent.mediaPlayer().media().info().videoTracks().get(i).id() == mediaPlayerComponent.mediaPlayer().video().track()) {
    index = i;
    break;
  }
}

// Get the frame rate (images per second)
double imgRate = (double)mediaPlayerComponent.mediaPlayer().media().info().videoTracks().get(index).frameRate() / mediaPlayerComponent.mediaPlayer().media().info().videoTracks().get(index).frameRateBase();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM