我目前做的:在使用GStreamer的Python中,如何使用文件對象作爲輸入源?
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? – 2013-03-24 00:47:31
@MultimediaMike,是的。最終用戶正在向網站上傳視頻,我想將該文件對象傳遞給appsrc(或任何適當的元素)以利用該文件。該文件尚未保存到硬盤,所以我沒有路徑。 – Raj 2013-03-24 00:52:11
因此,這個文件將被保留在整個過程的內存中?視頻文件可以變得相當大。你確定你不想將它存儲在臨時文件中嗎?應該可以從內存中進行編碼,但是我想知道整個架構。是否有文件上傳大小限制? – 2013-03-24 03:55:37