2017-01-16 1 views
-1

私は、多数のビデオをデコードする必要があるプロジェクト(HD解像度でそれぞれ〜50)を処理し、Pythonプロセスで生のピクセル値をnumpy配列として使用するプロジェクトに取り掛かりました。デコードは、ほぼリアルタイム(例えば、4〜5fps)でなければならない。これを効率的に行うにはどうすればよいでしょうか? GPUによる高速デコードも可能です。目標は、複数のビデオを同時にデコードして、生のピクセル値を後でPythonプロセスで処理できるようにすることです。Pythonプロセスアドレス空間で複数のビデオストリームをデコードする

答えて

2

したがって、1つのアプローチは、Python(デコード - >パイプ - >パイソンプロセスのアプローチではありません)によってインターフェイスされているいくつかのデコーダを使用することです。

しようとするには、2つの一般的なライブラリがあります。

はどちらも、(非常に効率的に)あなたのビデオをデコードするために内部のffmpegを使用しています。 両方の場合、ストリームを読み込んでピクセルをいくつかの配列に並べ込むのは簡単です。

私はこのようにしてhereのようにMoviePyを1回使用しました。

凝縮例(試していない):

from moviepy.editor import VideoFileClip 
filepath = "output.avi" 
clip = VideoFileClip(filepath) 

for f in clip.iter_frames(progress_bar=True): 
    np_array_frame = f 

iter_framesのドキュメントを参照してください。ドキュメントから

抜粋:

Iterates over all the frames of the clip. 

Returns each frame of the clip as a HxWxN np.array, 
where N=1 for mask clips and N=3 for RGB clips. 
関連する問題