.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)、期間、および作成時間も含めます。
助けてくれてありがとう!