opkcube.blogg.se

Pipe ffmpeg python
Pipe ffmpeg python







MPEG-DASH is the technology used by YouTube and Netflix, but unfortunately, it is not natively supported by browsers. MP4 is generally not used by companies noted for streaming either. For streaming, this has to moved, so you don't have to download the entire stream before playing it. This is normally present at the end of the file. By default, an MP4 file contains a moov atom, which details information how to play the file. One of the key observations here is that MP4 is not naturally suited to streaming media. Return Response ( generate (), mimetype =' video/mp4 ') PIPE route (' /video.mp4 ')įor data in iter (p.stdout.readline, b ''): Popen (' cat video.h264 | ' + cmd, shell = True, stdin =subprocess. ' -c:v h264 ' \ # input is h264 ' -i - ' \ # input from stdin ' -movflags frag_keyframe+empty_moov ' \ # allows mp4 to be streamable ' -vf scale=640:-1 ' \ # scales output to 640px in height, and a width to keep the current ratio. from flask import Flask, Response, render_templateĬmd = ' docker run -i -rm jrottenberg/ffmpeg:3.4-alpine ' \ Each ffmpeg argument is commented to describe why it is required.

pipe ffmpeg python

Once requested, a python generator is used to stream the results of a very crude subprocess which cats a video file into the ffmpeg docker container for muxing and returns the results in a pipe. It serves HTML, which contains a video tag requesting video.mp4. Luckily, you can grab a docker container with it in.īelow is a small python webapp. The only downside is that it requires a C toolchain, which in my experience, are troublesome to build cross-platform. If you want to display H264 video on a web browser, it needs muxing into MP4 or another file container format.įFmpeg is the leading tool available when muxing is required.

pipe ffmpeg python

MP4 is a file container, which can contain H264.









Pipe ffmpeg python