2017-05-30 81 views
1

我正在製作播放器,並且希望列出所有文件,並在所有要顯示視頻持續時間的文件前列出。獲取視頻的準確持續時間

唯一的問題是我沒有得到正確的視頻持續時間,有時它會返回一個完全錯誤的持續時間。

我已經試過了如下解決方案:

let asset = AVAsset(url: "video.mp4") 

let duration = asset.duration.seconds 

所以它的時間有時給的值有時另一個。如果有人知道可能的解決方案,我很高興聽到。

我有更新使用一個可能的解決方案的代碼,但它沒有工作,

let asset = AVAsset(url: url) 

let duration = asset.duration 

let durationTime = CMTimeGetSeconds(duration) 

let minutes = Double(durationTime/60) 

我已經試過的1:38分鐘長的視頻,並返回我= 11:78 ,視頻怎麼會有11分鐘和78秒?

所以我覺得這個問題是與視頻,而我選擇了1:16分鐘另一個視頻,並再次返回的值是1:26(10秒錯)

+0

https://stackoverflow.com/questions/31157526/how-to-get-video-full-duration-and-current-playing-time –

+0

我已經嘗試過了,時間保持瘋狂值@Eric綾 –

回答

4

這個工作對我來說:

import AVFoundation 
import CoreMedia 

... 

    if let url = Bundle.main.url(forResource: "small", withExtension: "mp4") { 
     let asset = AVAsset(url: url) 

     let duration = asset.duration 
     let durationTime = CMTimeGetSeconds(duration) 

     print(durationTime) 
    } 

對於視頻here它打印「5.568」,這是正確的。

+0

嘿,我複製了一個粘貼你的代碼,不改變一行和de持續時間givin 707 11分鐘的視頻,所以我707分70,它返回11.78,有些是錯誤的。你的答案很好,但不能解決我的問題,我會繼續努力。 thxs –

+1

如果視頻長11分47秒,那麼707是正確的。 707秒是11.78分鐘。 –

+0

但是正確的時間是11:47,以及如何得到這個(11:47),我不知道我是否不明白某事或缺少某些東西,你能解釋@DavidShaw –

相關問題