2016-09-23 125 views
1

我正在制作一个应用程序,显示流视频(通过rtmp)。我已经开始为它使用MobileVLCKit。我需要一个能够制作视频快照的功能。我试过内置功能使快照VLCMediaPlayer(MobileVLCKit)

func saveVideoSnapshotAt(path: String!, withWidth: UInt32, andHeight: UInt32) 

但它不起作用。这就是支持写了关于它videolan论坛:

这种方法是OS X只当它是在iOS(它应该 没有,我同意)曝光,它不会工作在移动设备“。

然后我试图使用标准iOS功能:

@IBOutlet weak var videoView: UIView! 
    var mediaPlayer = VLCMediaPlayer() 
    if let url = NSURL(string: "rtmp://someurl") { 
     let media = VLCMedia(URL: url) 
     mediaPlayer.media = media 
     mediaPlayer.drawable = videoView 
     mediaPlayer.play() 
    } 
    UIGraphicsBeginImageContext(videoView.frame.size); 
    guard let context = UIGraphicsGetCurrentContext() else { 
     print("Couldn't get context") 
     return 
    } 
    videoView.layer.renderInContext(context) 
    guard let screenshot = UIGraphicsGetImageFromCurrentImageContext() else { 
     UIGraphicsEndImageContext() 
     return 
    } 
    UIGraphicsEndImageContext() 

在结果我只得到UIView后台截图,没有视频吧。有谁知道是否有任何解决方案或至少应该继续寻找哪个方向?

回答

0

解决方案比我想象的简单。

let size = mediaPlayer.drawable.frame.size 

    UIGraphicsBeginImageContextWithOptions(size, false, UIScreen.mainScreen().scale) 

    let rec = mediaPlayer.drawable.frame 
    mediaPlayer.drawable.drawViewHierarchyInRect(rec, afterScreenUpdates: false) 

    let image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext();