web-dev-qa-db-ja.com

ビデオの正確な長さを取得する

私はプレーヤーを作成していて、すべてのファイルをリストし、すべてのファイルの前に、ビデオの長さを提示したいと考えています。

唯一の問題は、適切なビデオの長さが得られないことです。時々、それは完全に間違った長さを返します。

私は以下の解決策を試しました:

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

let duration = asset.duration.seconds

そのため、時間は時々別の値を与えることがあります。誰かが可能な解決策を知っているなら、私は聞いてうれしいです。

1つの可能な解決策を使用してコードを更新しましたが、うまくいきませんでした。

let asset = AVAsset(url: url)

let duration = asset.duration

let durationTime = CMTimeGetSeconds(duration)

let minutes = Double(durationTime / 60)

私は11:47分の動画を試してみましたが、11:78が返されました。

だから私は問題がビデオにあると思います、そして私は1:16分の別のビデオを選びました、そして再び戻り値は1:26です(10秒は間違っています)

16
Mr. James

これは私にとってはうまくいきます:

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"が出力されます。

コメントから編集:

707で割ると60 sec/min秒を返す動画は11.78です。これは11.78分、つまり11分で、0.78min * 60sec/min = 47secの合計は11 min 47 secです

25
David S.