2017-08-10 15 views
-2

私は、ビデオフレームと対応するオーディオセグメントをビデオファイルからpythonを使って抽出する方法を探しています。 私はopencvについてよく知っています。しかし、それはちょうどビデオフレームを抽出することができます。オーディオは提供されていません。 私は、お互いに正確に対応するビデオフレームとオーディオセグメントの両方が必要です。Linuxでオーディオストリームを使ってPythonでビデオファイルを読むには?

は、任意のヒントのために非常に感謝するだろう:)

+0

タスクの主な目的は、次のことです。 1)関心のある時間セグメントをビデオ(人がフレーム内に出現/消滅したこと)を見つける。 2)見つかった興味のあるセグメント内の音声を分析する(その人が何を言ったか)。 私は既に人の検出と音声認識を実装しました。だから、問題はビデオファイルからビデオ+オーディオを抽出する方法についてだけです。 –

答えて

0

あなたがOpenCVのを介してオーディオを得ることができないことが正しいです。あなたは、ビデオフレームとオーディオを別々に抽出してそこから操作するのが最善の方法でしょう。役立つかもしれないいくつかのツールが含まれます:それ以降https://stackoverflow.com/a/26741357/7604321

あなたがロードできます

ffmpy

ffmpeg (via sub-process)

あなたはここに、この関連のスタックオーバーフローの答えに、サブ処理のffmpegについての詳細を学ぶことができますオーディオファイルとプロセスをビデオフレームとともに表示できます。

あなたの質問にはそれ以上の情報はありませんが、それ以上のことはお勧めできません。

+0

私は実際に直接ffmpegまたはそのコマンドラインラッパー(ffmpy)を使いたくないかもしれません。この解決策は複雑すぎるように見えますが、通常、Pythonはどのようなタスクも解決するための簡単な方法を提供します。だからこそ私はそれを探しているのです。 –

+0

私は、フレームを抽出するためにopencvを使用し、オーディオを別々に抽出するために追加のモジュールを使用することができます。その後、タイムスタンプを使用して処理します。 しかし、私は使用可能な単一のソリューション(存在する場合)を探しています。 –

+0

おそらくPyMediaですか?私はそれを使用したことはありません。 – JCooke

0

最後に、ffmpeg用の軽量ラッパーを実装したmoviepy https://pypi.python.org/pypi/moviepyが見つかりました。また、同じ位置のビデオとオーディオフレームをすばやく取得するためのインターフェイスを提供しています。 moviepyは、オーディオ/ビデオクリップの修正のための幅広い機能スペクトルを提供/ Vフレームを抽出するだけでなく

from moviepy.editor import * 

video = VideoFileClip('your video filename') 
audio = video.audio 
duration = video.duration # == audio.duration, presented in seconds, float 
#note video.fps != audio.fps 
step = 0.1 
for t in range(int(duration/step)): # runs through audio/video frames obtaining them by timestamp with step 100 msec 
    t = t * step 
    if t > audio.duration or t > video.duration: break 
    audio_frame = audio.get_frame(t) #numpy array representing mono/stereo values 
    video_frame = video.get_frame(t) #numpy array representing RGB/gray frame 

:あなたは、以下の例を見つけることができます。

関連する問題