私は最近、オーディオおよびビデオ関連のコーディングを扱うことに挑戦しましたが、どちらについても知識が限られています。
たまたま、mpeg-2 ビデオを扱っているプロジェクトがあります。mpeg-2 ビデオ自体の長さを抽出するために利用できる Python ライブラリはありますか?
opencv または ffmpeg 以外の別のオプションは、おそらく gstreamer です。
import gst
from gst.pbutils import Discoverer
d = Discoverer(5000000000)
vid_info = d.discover_uri("file://<path>") # needs to be a full path
duration = vid_info.get_duration()
# convert to seconds
duration / gst.SECOND
ただし、このソリューションは、現在の gstreamer バージョン (Ubuntu 12.04) でランダムに (100 ファイルごとに) クラッシュします。また、mpg-2 を操作するために gstreamer プラグインが必要になる場合もあります。どちらなのかは今のところわかりません。
また、多かれ少なかれ大規模なメディア プロジェクトにも取り組んでいます。このプロジェクトは、さまざまなコーデックとコンテナを処理できる必要があり、使用しているすべてのライブラリは多かれ少なかれ混乱しています (値が間違っているか、不安定です)。専門的な mpg ライブラリがそこにあるのかもしれません。
ああ、VLC は ffmpeg を使用しています。したがって、ffmpeg の使用が許可されていない場合は、VLC の使用も許可されていない可能性があります。
私は純粋な python 実装を知りません。しかし、おそらくopencvバインディングがあなたのために働くでしょう:
import cv
cvcapture = cv.CaptureFromFile("movie.mpg")
cv.GetCaptureProperty(cvcapture,cv.CV_CAP_PROP_FRAME_COUNT)
それ以外の場合は、pyffmpeg を使用できます。注意: 私の経験では、フレーム カウントはあまり正確ではないことがよくあります。Opencv 2.6 は非常にうまく機能しますが、以前のバージョンではガベージが発生することがあります。
編集:ああ、申し訳ありませんが、私の間違いです:これにより、フレーム数のみが得られます。持続時間: これにフレームレートを掛けます:
cv.GetCaptureProperty(cvcapture,cv.CV_CAP_PROP_FPS)