Я только что проверил ваш прикрепленный пример кода. Вы используете функцию play
перед тем, как присвоить AVPlayerItem
своему player
. Вы загружаете asset
асинхронно и до загрузки asset
player
не можете играть. Итак, что вы должны сделать
asset = AVURLAsset(url: movieURL, options: nil)
/// Just after making an asset and remove the code written in asset's setter
let item = AVPlayerItem(asset: asset!)
player = AVPlayer(playerItem: item)
/// This extra line is to playing the live url. It will play what it downloads in chunks.
if #available(iOS 10.0, *) {
player.automaticallyWaitsToMinimizeStalling = false
} else {
// Fallback on earlier versions
}
/// Now your player is ready to play
player.play()
РЕДАКТИРОВАТЬ 1
Если вы все еще боретесь с приведенным выше фрагментом кода, я внес изменения в файл PlayerViewController.m
, чтобы исправить ваши проблемы. Вот ссылка gist этого файла. Поиск /// TheTiger Change
, чтобы найти то, что я сделал изменения. Теперь я могу воспроизводить аудиофайл с правильным временем и значением ползунка.
РЕДАКТИРОВАТЬ 2
Я думал, что вы сможете увидеть разницу, но никаких проблем я объясню более подробно.
# 3. Что касается вашего сообщения об ошибке, это просто сообщение отладки Xcode, и вы можете отключить его. См. этот ответ для более подробной информации.
# 2. Задержка в представлении модального режима задерживается, потому что у вас есть весь код в вашем методе viewWillAppear:
, просто переместите этот код в videDidAppear:
и дайте представлению появиться первым, прежде чем что-либо делать. Это уберет задержку.
# 1. Фон модального vc должен быть прозрачным. Так что это можно сделать прозрачным. этот ответ .
Этот Пример кода просто отлично работает.