2016-06-21 4 views
2

В основном я пытаюсь играть в m3u8 (HLS Live Stream) с помощью AVPlayer в Cocoa Swift. Я относительно новым для языка, поэтому в основном захватил некоторые example code для воспроизведения локальных видеофайлов и попытался изменить его, чтобы играть в живой поток ... Но получить вместо этого:Воспроизведение HLS (m3u8) в Cocoa OS X AVPlayer - Swift

http://i.stack.imgur.com/bU9GM.png

Это то, что я получил до сих пор (комментируемые линии играть локальный файл, который делает работу):

import Cocoa 
import AVKit 
import Foundation 
import AVFoundation 

class ViewController: NSViewController { 

    @IBOutlet weak var playerView: AVPlayerView! 

    var videoPlayer:AVPlayer! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     //let path = NSBundle.mainBundle().pathForResource("sample", ofType: "mov") 
     //var fileURL = NSURL(fileURLWithPath: path!) 
     let fileURL = NSURL(string: "http://qthttp.apple.com.edgesuite.net/1010qwoeiuryfg/sl.m3u8") 
     let avAsset = AVURLAsset(URL: fileURL!, options: nil) 

     let playerItem = AVPlayerItem(asset: avAsset) 
     videoPlayer = AVPlayer(playerItem: playerItem) 
     playerView.player = videoPlayer 
     videoPlayer.play() 
    } 

    override var representedObject: AnyObject? { 
     didSet { 
      // Update the view, if already loaded. 
     } 
    } 
} 

Любая помощь о том, как сделать этот код работать или вести меня в правильном направлении высоко ценится!

ответ

2

Я попытался вставить код в новый OS X проекта (или MacOS, как мы должны начать называть его сейчас :))

Когда я начал проект, я получил эту ошибку в консоли:

2016-06-21 09:09:27.860 Videoplayer[2494:169209] App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file. 

Я не знаю, включена ли консоль, это нижняя часть экрана, если включена область отладки.

Если вы не получили включен область отладки, то вы включите его в верхней части Xcode

enable debug area

И тогда вы должны убедиться, что вы показываете консоль, а также, что сделано в нижней части Xcode:

enable console

ОК, теперь вы можете увидеть ошибку, то, как это исправить :)

Это сообщение в основном говорит вам, что Apple заблокировала доступ к HTTP. Это было введено в OS X 10.11 и iOS 9, но может быть отключено.

Как говорится в консоли:

Temporary exceptions can be configured via your app's Info.plist file.

Это означает, что вы должны добавить новый ключ в файл info.plist.

Вы можете добавить его как «сырые» Plist данных, который выглядит следующим образом:

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict> 

Или вы можете добавить его в редакторе Plist, где он выглядит следующим образом:

editing plist

This question и отличные ответы описывают процесс лучше, чем я могу

Если я это сделаю, я могу запустить ваш код и смогу h в прямом эфире, поэтому я надеюсь, что это тоже поможет вам.

+0

Ничего себе, спасибо большое! Должен был осознать, что это была проблема – user3063455

+0

Добро пожаловать. Рад, что он работает для вас сейчас. – pbodsk

+0

@pbodsk - Я получаю эту ошибку при кодировании кода avAsset = AVURLAsset (URL: my_url !, options: nil) - «NSURL» неявно конвертируется в «URL»; вы хотели использовать «как» для явного преобразования?Любые идеи относительно того, почему вы, ребята, не получаете эту ошибку, но я делаю? –

 Смежные вопросы

  • Нет связанных вопросов^_^