[英]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.