я сейчас делаю:В Python с GStreamer, как использовать файл-объект в качестве источника ввода?
source_path = 'file:///home/raj/videos/sample.mpg'
descr = 'uridecodebin uri=%s ! videoconvert ! gdkpixbufsink name=sink' % (source_path)
pipeline = Gst.parse_launch(descr)
Но вместо того, чтобы использовать uri
, как я могу использовать сырой исходный файл, например, от source_file = request.POST['file'].file
. (Возможно, это будет загрузка видеофайла из строки?)
Мои исследования до сих пор привело меня к appsrc
(http://ingo.fargonauten.de/node/447), но я не знаю, как использовать его с GStreamer 1.0, так как я не могу понять о том, как загрузить файл в буфер:
raw_src = request.POST['files[]'].file
descr = 'appsrc name=vidsrc ! videoconvert ! gdkpixbufsink name=sink'
pipeline = Gst.parse_launch(descr)
appsrc = pipeline.get_by_name('vidsrc')
appsrc.emit('push-buffer', Gst.Buffer(raw_src.read()) ##I am not creating the buffer correctly for GStreamer 1.0
Я не совсем понимаю вашу цель. Вы надеетесь позвонить GStreamer из веб-скрипта? –
@MultimediaMike, да, я. Конечный пользователь загружает видео на веб-сайт, и я хочу передать этот файл-объект в appsrc (или любой соответствующий элемент) для использования этого файла. Файл еще не сохранен на жестком диске, поэтому у меня нет пути для него. – Raj
Итак, файл будет храниться в памяти для всего этого процесса? Видеофайлы могут быть довольно большими. Вы уверены, что не хотите хранить это во временном файле? Должно быть возможно кодирование из памяти, но мне интересно об общей архитектуре. Есть ли ограничение на размер файла? –