6

.MP4ビデオ ファイルからメタデータを読み取る必要がある Windows アプリケーションをPythonで作成しています。

Python 3 でアプリケーションの作成を開始しましたが、ビデオ ファイルからメタデータを読み取るための適切なモジュールが見つかりませんでした。そこで、 3to2を使用してプロジェクト全体を Python 2 に移行したので、ネット上で賞賛されたHachoir-Metadatapip install hachoir-coreを、 、pip install hachoir-parser、およびを使用してインストールできました。pip install hachoir-metadata

次のコードを使用しました。

from hachoir_core.error import HachoirError
from hachoir_core.cmd_line import unicodeFilename
from hachoir_parser import createParser
from hachoir_core.tools import makePrintable
from hachoir_metadata import extractMetadata
from hachoir_core.i18n import getTerminalCharset

# Get metadata for video file
def metadata_for(filename):

    filename, realname = unicodeFilename(filename), filename
    parser = createParser(filename, realname)
    if not parser:
        print "Unable to parse file"
        exit(1)
    try:
        metadata = extractMetadata(parser)
    except HachoirError, err:
        print "Metadata extraction error: %s" % unicode(err)
        metadata = None
    if not metadata:
        print "Unable to extract metadata"
        exit(1)

    text = metadata.exportPlaintext()
    charset = getTerminalCharset()
    for line in text:
        print makePrintable(line, charset)

    return metadata

pathname = c:/video.mp4
meta = metadata_for(pathname)
print meta

これにより、次のメタデータが返されました。

  • 時間: 37 秒 940 ミリ秒
  • 画像の幅: 1280 ピクセル
  • 画像の高さ: 960 ピクセル
  • 作成日: 2014-12-13 19:27:36
  • 最終更新日: 2014-12-13 19:27:36
  • コメント: 再生速度: 100.0%
  • コメント: ユーザー数: 100.0%
  • MIME タイプ: ビデオ/クイックタイム
  • エンディアン:ビッグエンディアン

これは素晴らしいことですが、実際には 1 秒あたりのフレーム数 (FPS) も知る必要があるという事実を除けば、次のテスト出力からわかるように、.AVI ファイルの場合、Hachoir-Metadata は FPS を表示します。

  • 持続時間: 6 秒 66 ミリ秒
  • 画像の幅: 256 ピクセル
  • 画像の高さ: 240 ピクセル
  • フレームレート:30.0fps
  • ビットレート: 884.4 Kbit/秒
  • コメント: オーディオ/ビデオ インデックスあり (2920 バイト)
  • MIME タイプ: video/x-msvideo
  • エンディアン:リトルエンディアン

はい、FPS タグ.MP4 ファイル (100fps) に設定されています。

.MP4 ファイルから FPS を抽出する方法はありますか? できれば、幅 (px)、高さ (px)、期間、および作成時間も含めます。

助けてくれてありがとう!

4

2 に答える 2