2017-02-23 2 views
0

애플 스위프트 버전 3.0.2 (swiftlang-800.0.63 그 소리-800.0.42.1) 내가 AVPlayer를를 사용하여 인터넷에서 비디오를 재생하고 싶은AVPlayer를 사용하여 비디오를 재생하려면 어떻게해야합니까?

. 그러나 소스 목록 아래의 AVPlayer.swift에서 "super.init (frame : frame)"오류가 발생했습니다.

스레드 1 : EXC_BAD_ACCESS (코드 = 2, 주소 = 0x16fc07fe0) enter image description here

가 어떻게 AVPlayer를를 사용하여 비디오를 재생할 수 있습니까? 오류의 점 이외의 잘못된 점이 있으면 알려주십시오.

let videoURL = NSURL(string: "PUT_YOUR_PROPER_URL") 
let playerAV = AVPlayer(url: videoURL! as URL) 
let playerLayerAV = AVPlayerLayer(player: playerAV) 
playerLayerAV.frame = self.view.bounds 
self.view.layer.addSublayer(playerLayerAV) 
playerAV.play() 

AVPlayer를 지원 확장 아래 :

여기 AVPlayerView.swift

import Foundation 
import UIKit 

final class AVPlayerView : UIView { 
    required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder)! 
    } 
    override init(frame: CGRect) { 
     super.init(frame: frame) 
    } 
    override public class var layerClass: Swift.AnyClass { 
     get { 
      return AVPlayerView.self 
     } 
    } 

}

ViewController.swift

import UIKit 
import AVFoundation 
import CoreMedia 

class ViewController: UIViewController { 
    var playerItem : AVPlayerItem! 
    var videoPlayer : AVPlayer! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     let url:NSURL = NSURL(string: "https://aaa.com/test.m3u8")! 
     let avAsset = AVURLAsset(url: url as URL, options: nil) 

     playerItem = AVPlayerItem(asset: avAsset) 

     videoPlayer = AVPlayer(playerItem: playerItem) 

     print(self.view.bounds) 
     let videoPlayerView = AVPlayerView(frame: self.view.bounds) 

     let layer = videoPlayerView.layer as! AVPlayerLayer 
     layer.videoGravity = AVLayerVideoGravityResizeAspect 
     layer.player = videoPlayer 

     self.view.layer.addSublayer(layer) 
     videoPlayer.play() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

답변

1

비디오 재생 코드

public.mpeg 
public.mpeg-2-video 
public.avi 
public.aifc-audio 
public.aac-audio 
public.mpeg-4 
public.au-audio 
public.aiff-audio 
public.mp2 
public.3gpp2 
public.ac3-audio 
public.mp3 
public.mpeg-2-transport-stream 
public.3gpp 
public.mpeg-4-audio 

당신이 AVPlayer를에서 지원하는 비디오를 사용할 수 있는지 확인합니다.

+0

AVPlayer는 m3u8의 http 라이브 스트리밍을 지원합니까? HLS는 H.264 및 aac의 ts 파일을 포함합니다. – Ubunkun

+0

나는 당신의 url로 다만 검사하고, 그러나 작동하지 않는다. – Nirmalsinh

+0

예, URL이 변경되었습니다. iPhone 브라우저에서 URL을 재생할 수 있습니다. – Ubunkun