2016-09-23 2 views
1

Я работаю над приложением, показывая потоковое видео (по rtmp). Я начал использовать для этого MobileVLCKit. Мне нужна функция, которая сделает снимок видео. Я пробовал встроенную функциюСделать снимок VLCMediaPlayer (MobileVLCKit)

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

Но это не работает. Это то, что поддержка написала об этом на videolan форуме:.

"Этого метод является OS X только Несмотря на то, что выставлено на прошивке (что он должен не быть, я согласен), он не будет работать на мобильные устройства. "

Затем я попытался использовать стандартную 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(); 
Смежные вопросы