В моем приложении показаны все видео с фотографиями. Когда видео выбрано, оно воспроизводится с помощью avplayer. Но когда я попытался получить размер (КБ) выбранного видеофайла, он показывает ошибку. При попытке скопировать видеофайл возникла та же ошибка.
Я взял эти разрешения:
<key>NSCameraUsageDescription</key>
<string>App needs to access camera</string>
<key>NSMicrophoneUsageDescription</key>
<string>App need to access microphone</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>App needs to access photos and videos</string>
Код для получения размера:
func fileSize(forURL url: Any) -> Double {
var fileURL: URL?
var fileSize: Double = 0.0
if url is URL || url is String {
if url is URL {
fileURL = url as? URL
}
else {
fileURL = URL(fileURLWithPath: url as! String)
}
var fileSizeValue = 0.0
do{
try fileSizeValue = (fileURL?.resourceValues(forKeys: [URLResourceKey.fileSizeKey]).allValues.first?.value as! Double?)!
if fileSizeValue > 0.0 {
fileSize = (Double(fileSizeValue) / (1024 * 1024))
}
} catch {
print("file size error: \(error)")
}
}
return fileSize
}
let fileSize = fileSize(forURL: selectedVideos[0] as Any)
URL видеофайла:"file: ///var/mobile/Media/DCIM/107APPLE/IMG_7728.MOV"
Ошибка: Ошибка домена = NSCocoaErrorDomain Code = 257 "Файл« IMG_7728.MOV »не может быть открыт, поскольку у вас нет разрешения на
посмотри ".
UserInfo = {NSURL = Файл: ///var/mobile/Media/DCIM/107APPLE/IMG_7728.MOV,
NSFilePath = / вар / мобильного / СМИ / DCIM / 107APPLE / IMG_7728.MOV,
NSUnderlyingError = 0x1c445ef90 {Ошибка домена = NSPOSIXErrorDomain Code = 1
«Операция не разрешена»}}
Edit:
Я изменил URL для пути. Но все равно показывает ошибку:
let selectedFilePath = (selectedVideos[0] as! URL).path
print("video path: \(selectedFilePath)")
do{
let attributes = try FileManager.default.attributesOfItem(atPath: selectedFilePath)
let fileSize = attributes[.size] as! NSNumber
print("file size: \(fileSize)")
} catch {
print("file size error: \(error)")
}
let filePath = get_directory().appendingPathComponent("video\(CACurrentMediaTime()).MOV")
print("copy to path: \(filePath.path)")
do {
try FileManager.default.copyItem(atPath: selectedFilePath, toPath: filePath.path)
} catch {
print("copy error: \(error)")
}
Ошибка:
путь к видео: /var/mobile/Media/DCIM/107APPLE/IMG_7789.MOV
ошибка размера файла: Ошибка Domain = NSCocoaErrorDomain Code = 257 «Файл« IMG_7789.MOV »не может быть открыт, поскольку у вас нет разрешения на его просмотр». UserInfo = {NSFilePath = / var / mobile / Media / DCIM / 107APPLE / IMG_7789.MOV, NSUnderlyingError = 0x1c0259530 {Ошибка домена = NSPOSIXErrorDomain Code = 1 «Операция не разрешена»}}
скопировать в путь: /var/mobile/Containers/Data/Application/5AAD29BD-489D-4737-AA98-E6131EFBA94D/Documents/addMusicToVideos/voices/video1171047.69338271.MOV
ошибка копирования: Ошибка Domain = NSCocoaErrorDomain Code = 257 «Файл« IMG_7789.MOV »не может быть открыт, потому что у вас нет разрешения на его просмотр». UserInfo = {NSFilePath = / var / mobile / Media / DCIM / 107APPLE / IMG_7789.MOV, NSUnderlyingError = 0x1c4859830 {Ошибка домена = NSPOSIXErrorDomain Code = 1 «Операция не разрешена»}}