Получение ошибки «Не удалось выпустить расширение песочниц» при загрузке видео в FirebaseIOS

Программируем под IOS
Ответить
Anonymous
 Получение ошибки «Не удалось выпустить расширение песочниц» при загрузке видео в Firebase

Сообщение Anonymous »

Я получаю ошибку «Не удалось выпустить расширение песочниц» при загрузке видеоссет в Firebase. Мои изображения загружаются просто хорошо, только видео вызывают проблему.
func testUploadLocalVideo() {
if let localVideoURL = Bundle.main.url(forResource: "IMG_3787", withExtension: "MOV") {
print("Attempting to upload local video: \(localVideoURL)")
uploadVideoToFirebase(fileURL: localVideoURL)
} else {
print("❌ Local test video not found.")
}
}

func uploadImageToFirebase(image: UIImage) {
let storageRef = Storage.storage().reference()
guard let imageData = image.jpegData(compressionQuality: 0.75) else {
print("Error converting image to data")
return
}

let fileName = UUID().uuidString + ".jpg"
let imageRef = storageRef.child("images/\(fileName)")

imageRef.putData(imageData, metadata: nil) { metadata, error in
if let error = error {
print("Error uploading image: \(error.localizedDescription)")
return
}
imageRef.downloadURL { url, error in
if let error = error {
print("Error getting download URL: \(error.localizedDescription)")
return
}
if let downloadURL = url {
DispatchQueue.main.async {
self.selectedImages.append(image)
self.isMediaSelected = true
}
print("✅ Image uploaded successfully: \(downloadURL)")
}
}
}
}

func uploadVideoToFirebase(fileURL: URL) {
print("Starting video upload with fileURL: \(fileURL)")

// Create a temporary file URL within your app's sandbox
let tempFileURL = FileManager.default.temporaryDirectory.appendingPathComponent(fileURL.lastPathComponent)

do {
// Copy the video file to the temporary location
try FileManager.default.copyItem(at: fileURL, to: tempFileURL)
print("✅ Video copied to temporary location: \(tempFileURL)")

// Upload the video from the temporary location
uploadVideoFromTempFile(tempFileURL: tempFileURL)
} catch {
print("❌ Error copying video file: \(error)")
}
}

func uploadVideoFromTempFile(tempFileURL: URL) {
// 1. Generate a unique filename using UUID
let fileName = UUID().uuidString + ".mov"

// 2. Create a reference to the video file in Firebase Storage
let storageRef = Storage.storage().reference().child("videos/\(fileName)")

// 3. Create a metadata object to store the video's content type
let metadata = StorageMetadata()
metadata.contentType = "video/quicktime"

// 4. Load video data
guard let videoData = try? Data(contentsOf: tempFileURL) else {
print("❌ Unable to create video data from temporary file")
return
}

// 5. Upload the video data directly using putData
storageRef.putData(videoData, metadata: metadata) { metadata, error in
if let error = error {
print("❌ Error uploading video: \(error.localizedDescription)")
} else {
// Get download URL from the storage reference
storageRef.downloadURL { url, error in
if let downloadURL = url?.absoluteString {
DispatchQueue.main.async {
self.selectedVideos.append(tempFileURL) // Store tempFileURL
self.isMediaSelected = true
}
print("✅ Video uploaded successfully: \(downloadURL)")
} else {
print("Video uploaded successfully, but download URL is not available.")
}
}
}
}
}
< /code>
Несмотря на то, что они пробовали различные решения, такие как обработка URL-адресов безопасности и копирование видео во временном месте, ошибка сохраняется. Это говорит о том, что могут быть и другие факторы, такие как отсутствующие права, проблемы с параллелизмом, давление в памяти, проблемы с SDK Firebase, ограничения, специфичные для устройства, или мешающий код. Что, возможно, я не сделал ничего из этих шагов правильно (так как это не сработало). Моя цель состоит в том, чтобы видеоролики загружались в Firebase, как и изображения

Подробнее здесь: https://stackoverflow.com/questions/794 ... ideos-to-f
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»