特定のビデオのフレームレートを取得したい。AVFoundation
AVURLAssetやAssetsLibrary
AVAssetReaderなどのAPIを調べてみました。それらのどれも本当に役に立ちません。フレームレートを取得するためのAppleのフレームワーク/ライブラリの方法を知っている人はいますか?
7959 次
3 に答える
9
より簡単なオプションは、AVAssetTrackを取得し、そのnominalFrameRateプロパティを読み取ることです。これはあなたを助けることができるように見えます。
公称フレームレートは、1秒あたりのフレーム数で表したトラックのフレームレートです。(読み取り専用)AVAssetTrackクラス@property(非アトミック、読み取り専用)floatnominalFrameRate
于 2012-06-21T12:56:54.347 に答える
4
iOS 7以降では、AVPlayerItemTrackのcurrentVideoFrameRateプロパティを使用できます。私が見た唯一の一貫したプロパティはFPSを測定します。nominalFrameRateプロパティはHLSストリームで壊れているようです。
AVPlayerItem *item = AVPlayer.currentItem; // Your current item
float fps = 0.00;
for (AVPlayerItemTrack *track in item.tracks) {
if ([track.assetTrack.mediaType isEqualToString:AVMediaTypeVideo]) {
fps = track.currentVideoFrameRate;
}
}
于 2015-04-06T18:56:45.960 に答える
1
プロパティについてはcurrentVideoFrameRate
、Appleのドキュメントから:
アイテムが再生されていない場合、またはトラックのメディアタイプがビデオでない場合、このプロパティの値は0.0です。
アイテムが「再生中」である必要があるので、nominalFrameRate
代わりに使用しました。
iOS 12、Swift4でも引き続き機能します。
let tracks = asset.tracks(withMediaType: .video)
let fps = tracks?.first?.nominalFrameRate
nilチェックを処理することを忘れないでください。
于 2018-09-24T05:46:41.477 に答える