[英]how to get/set frame position in vlcj?
如何-1.获取音频/视频轨道的当前帧位置? 2.如何去一个轨道的特定帧位置? 使用vlcj sdk。 任何代码片段将不胜感激!
实际上,您可以通过一些数学来做到这一点。 这不是最干净的方法,但很容易理解。
VLCj允许您使用.getLength()
获得媒体的长度。 但是,请注意,这将返回媒体的长度(以毫秒为单位)。 此外,您可以使用.getFPS()
获得媒体的帧数/秒。
因此,现在您可以得到的总帧数为:
total_frames = .getFPS * .getLength() /1000;
然后,您可以使用.getPosition()
以毫秒为单位找出当前位置 ,然后将其转换为帧。 这将以百分比形式返回。
current_frame = .getPosition() * total_frames;
现在,如果您要转到特定的帧,我们将其称为desired_frame
。 您可以使用.setPosition()
来获取百分比。 因此,您需要确定代表要跳转到的帧的总数的百分比。
.setPosition((float)desired_frame/total_frames);
VLCJ并不是真正针对这种逐帧访问而直接设置的-您可以在mediaplayer对象上使用setTime()
和getTime()
,但这将从毫秒开始而不是从帧开始返回时间。 当然,如果您知道帧速率,那么从一个帧转换到另一个帧就不那么容易了。
如果您需要比VLCJ提供的操作低的操作,那么您可能需要看看Xuggler。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.