Descargando el primer cuadro de una secuencia twitch.tv

Usando esta API , he logrado descargar datos de transmisión, pero no puedo entender cómo analizarlos. He mirado el formato RMTP, pero no parece coincidir.

from livestreamer import Livestreamer livestreamer = Livestreamer() # set to a stream that is actually online plugin = livestreamer.resolve_url("http://twitch.tv/froggen") streams = plugin.get_streams() stream = streams['mobile_High'] fd = stream.open() data = fd.read() 

He subido un ejemplo de los datos aquí .

Idealmente, no tendría que analizarlo como video, solo necesito el primer fotogtwig clave como imagen. Cualquier ayuda sería muy apreciada!

Actualización: Ok, tengo OpenCV funcionando, funciona para capturar el primer cuadro de un archivo de video aleatorio que tuve. Sin embargo, produjo una imagen sin sentido cuando usé el mismo código en el archivo con datos de transmisión.

Muy bien, lo descubrí. Asegúrese de escribir como datos binarios, y OpenCV puede decodificar el primer cuadro de video. La imagen resultante tenía los canales R y B cambiados, pero eso se corrigió fácilmente. La descarga de aproximadamente 300 kB parece ser suficiente para estar seguro de que la imagen completa está allí.

 import time, Image import cv2 from livestreamer import Livestreamer # change to a stream that is actually online livestreamer = Livestreamer() plugin = livestreamer.resolve_url("http://twitch.tv/flosd") streams = plugin.get_streams() stream = streams['mobile_High'] # download enough data to make sure the first frame is there fd = stream.open() data = '' while len(data) < 3e5: data += fd.read() time.sleep(0.1) fd.close() fname = 'stream.bin' open(fname, 'wb').write(data) capture = cv2.VideoCapture(fname) imgdata = capture.read()[1] imgdata = imgdata[...,::-1] # BGR -> RGB img = Image.fromarray(imgdata) img.save('frame.png') # img.show()