Example #1
0
class MyVideoPlayer(VideoPlayer):
    def __init__(self, filename: str, window_title: str, worker_type='thread'):
        super().__init__(filename,
                         window_title,
                         reverse=True,
                         worker_type=worker_type)
        self._video_writer = VideoWriter(
            'rendered.ts', cv.VideoWriter_fourcc('m', 'p', '2', 'v'),
            self._video_reader.fps, self._video_reader.frame_size, worker_type)

    def _pre_render_hook(self, frame: np.ndarray) -> NoReturn:
        frame[:, :frame.shape[1] // 2] = np.clip(
            1.5 * frame[:, :frame.shape[1] // 2], 0, 255)
        self._video_writer.write(frame)

    def _dispose(self) -> NoReturn:
        self._video_writer.close()
        super()._dispose()
Example #2
0
async def save(request):
    buffer = frameserver.get_buffer("test")
    writer = VideoWriter("/home/hannes/Projekte/studienarbeit/test/out.mp4")
    writer.open()
    writer.write_packets(buffer.get_packets())
    subscription = buffer.get_observable().subscribe(
        on_next=lambda p: writer.write_packet(p))
    await asyncio.sleep(10)
    subscription.dispose()
    writer.close()

    last = buffer.get_packets()[-1]
    if (last == None):
        return web.Response(content_type="text/html", text="No Frame")
    output = io.BytesIO()
    frame = last.decode()[0].to_image()
    frame.save(output, format='PNG')
    output.seek(0)
    output_s = output.read()
    b64 = b64encode(output_s)
    return web.Response(content_type="text/html",
                        text="<img src='data:image/png;base64," +
                        str(b64)[2:-1] + "'>")
Example #3
0
# video io
from videoreader import VideoReader
from videowriter import VideoWriter

# OpenCV
import cv2

if __name__ == '__main__':
    parser = IOParser()
    reader = VideoReader(parser.input_file)
    writer = VideoWriter(parser.output_file, reader.fps, (reader.width, reader.height), color=False)

    '''
        OpenCV allows for you to easily switch between colorspaces using the cvtColor method
        Note - no video players will be able to play a single channel grayscale video so each channel, R,G,B are 
        given the same intensity values to represent grayscale.
    '''

    for frame in reader:
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        '''
        if we didn't specify that our VideoWriter is grayscale, we would have to convert back to BGR to output a 
        playable version.
        '''
        # to_bgr = cv2.cvtColor(gray, cv2.COLOR_GRAY2BGR)
        writer.write_frame(gray)

    writer.close()
    reader.close()