'daki bir video PHAsset'in diskindeki dosya boyutunu nasıl belirleyebilirim iOS8'deki Fotoğraflar çerçevesini kullanarak bir video PHAsset'i isteyebilirim. Dosyanın diskte ne kadar büyük olduğunu bilmek istiyorum. Bunu belirlemek için PHAsset'in bir özelliği görülmemektedir. Herkesin bir çözümü var mı?iOS8
iOS8
cevap
Düzenleme videonun ilk çerçevesi bir görüntü sonuçlanacak bir video türü PHAsset
üzerinde requestImageDataForAsset
kullanarak iOS 9.3 gelince
, (Kullanarak Fotoğraflar çerçeve gerekmemektedir), bu yüzden değil mi artık çalışmak Bunun yerine aşağıdaki yöntemi kullanın, normal video için istek seçeneği nil
olabilir, ancak ağır çekim videosu için PHVideoRequestOptionsVersionOriginal
'un ayarlanması gerekir.
PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init];
options.version = PHVideoRequestOptionsVersionOriginal;
[[PHImageManager defaultManager] requestAVAssetForVideo:asset options:options resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) {
if ([asset isKindOfClass:[AVURLAsset class]]) {
AVURLAsset* urlAsset = (AVURLAsset*)asset;
NSNumber *size;
[urlAsset.URL getResourceValue:&size forKey:NSURLFileSizeKey error:nil];
NSLog(@"size is %f",[size floatValue]/(1024.0*1024.0)); //size is 43.703005
}
}];
// orijinal cevap PHAsset için
, bunu kullanın: ALAsset için
[[PHImageManager defaultManager] requestImageDataForAsset:asset options:nil resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {
float imageSize = imageData.length;
//convert to Megabytes
imageSize = imageSize/(1024*1024);
NSLog(@"%f",imageSize);
}];
:
ALAssetRepresentation *rep = [asset defaultRepresentation];
float imageSize = rep.size/(1024.0*1024.0);
Bir video varlığı üzerinde test, PHAsset gösterir Boyut 43.703125, ALAsset ise boyutu 43.703005 olarak göstermektedir.
Düzenle PHAsset için, dosya boyutunun başka bir yolu. Ama @Alfie Hanssen'in bahsettiği gibi, normal video üzerinde çalışıyor, ağır çekim videosu için, aşağıdaki yöntem blokta bir AVCompozition varlığını döndürecek, dolayısıyla bu tür için çek ekledim. Ağır çekim videosu için requestImageDataForAsset
yöntemini kullanın.
[[PHImageManager defaultManager] requestAVAssetForVideo:asset options:nil resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) {
if ([asset isKindOfClass:[AVURLAsset class]]) {
AVURLAsset* urlAsset = (AVURLAsset*)asset;
NSNumber *size;
[urlAsset.URL getResourceValue:&size forKey:NSURLFileSizeKey error:nil];
NSLog(@"size is %f",[size floatValue]/(1024.0*1024.0)); //size is 43.703005
NSData *data = [NSData dataWithContentsOfURL:urlAsset.URL];
NSLog(@"length %f",[data length]/(1024.0*1024.0)); // data size is 43.703005
}
}];
Bilmen istediğiniz videonun boyutu AVURLAsset
türü değil ise, oldukça yüksek bir şans çektim. Ama kaputun altında, videonuzun (örneğin, ham örnekler, yavaş-mo zaman aralıkları, filtreler, vb.) Bir araya getirildiği daha fazla dosya var, çünkü bir beton oynanabilir dosyanın boyutunu bilmek istersiniz. Bu durumda, dosya boyutunun gerçekte nasıl karşılandığından emin değilim, ancak bu nasıl yapılmalıdır:
PHImageManager.defaultManager().requestExportSessionForVideo(asset, options: nil, exportPreset: AVAssetExportPresetHighestQuality, resultHandler: { (assetExportSession, info) -> Void in // Here you set values that specifies your video (original, after edit, slow-mo, ...) and that affects resulting size.
assetExportSession.timeRange = CMTimeRangeMake(kCMTimeZero, CMTimeMakeWithSeconds(asset.duration, 30)) // Time interval is default from zero to infinite so it needs to be set prior to file size computations. Time scale is I believe (it is "only" preferred value) not important in this case.
let HERE_YOU_ARE = assetExportSession.estimatedOutputFileLength
})
almak mümkün değildir. Sadece bir not, dokümanlar şunu ifade eder: 'assetExportSession.estimatedOutputFileLength' AVAssetExportPresetPassThrough' için her zaman 0'a dönün. Dikkat edin ... –
notu, 'tahminiOutputFileLength' olduğu gibi, gerçek dosya boyutu olduğunu düşünemezsiniz. Benim durumumda 30 MB'lik bir fark vardı. –
- 1. iOS8
- 2. UISearchController iOS8
- 3. ios8 UIImage imageNamed: crash
- 4. iOS8 sınırlarında uygulama uzantısı
- 5. ios8'de kilitlenme _updateInterfaceOrientationFromDeviceOrientation
- 6. iOS8 Simülatörü kullanıcı aracısı
- 7. AVPlayerItem videoCompozisyon dondurma IOS8
- 8. Bu uygulamanın iOS8
- 9. MapKit'teki Bellek Sızıntısı iOS8
- 10. iOS8/iPhone6 + XPC çökmesi
- 11. ABPeoplePickerNavigationController iOS8 ile değiştiriyor?
- 12. iOS8 jest tanıyıcı hızlı
- 13. settings.bundle ios configure iOS8
- 14. NSUserDefaults standartUserDefaults, iOS8'de çalışmıyor
- 15. WKWebView Önbellek bildirimi çalışmıyor IOS8
- 16. iOS8 arka plan getirme sorunu
- 17. iOS8 Modal ViewController Döndürme sorunu
- 18. UIWebView ios8 saydam arka plan
- 19. iOS8 UIKeyboardWillShowNotification Üçüncü taraf klavye yüksekliği
- 20. iOS8: Dış sayfadaki form kağıdını kapatın
- 21. iOS 7 uitabbar gösterileri, ios8 üzerinde görünmez
- 22. Sencha dokunmatik/cordova uygulaması rastgele iOS8
- 23. Swift UIAlertController -> ActionSheet iPad iOS8
- 24. iOS8 + Apple'ın KeychainItemWrapper bir çökme ile sonuçlanır
- 25. iOS8 Safari -webkit-overflow-kaydırma: dokunma; issue
- 26. .stringsdict .stringsdict kullanarak bazı sorunlar yaşamaya iOS8
- 27. iOS8 Quicktype Klavye'yi UITextView üzerinde programlı olarak devre dışı bırakma
- 28. iCloud Çekirdek Verisi IOS8 Yolu, herhangi bir CloudDocs Kapsayıcısının dışındadır
- 29. null nesnesi iOS8'de temsilci yöntemleri - özel klavyeler
- 30. iOS8 AVAudioMyveler Bağlantısı üzerinden mikrofon verileri nasıl gönderilir?
Teşekkür ederiz! Hiçbir istek yokturVideoDataForAsset ... ve bu requestImageDataForAsset videonun boyutunu döndürür – jlw
Evet, özellikle video için requestAVAssetForVideo kullanabilirsiniz. – gabbler
Bu yöntem bir AVCompozition (AVURLAsset olarak yayınlanamaz) döndürüyor gibi görünüyor. Yukarıda gösterildiği gibi yapmaya çalışmak bir çarpışma ile sonuçlanır. iOS 8.1.2. –