ffmpeg-pythonで動画にメタデータを追加する
pythonでffmpegを操作したい場合、ffmpeg-pythonを使うと思います。
ffmpeg.output()
にはffmpegのオプションを渡すことができます。そこで、ffmpeg-pythonで動画にメタデータを追加するには、ffmpeg.output()
に引数名metadata
で"key=value"
の文字列の形式でメタデータを渡します。
ffmpeg
.input(input_video_path)
.output(output_video_path, metadata="title=New Title")
.run()
ffmpeg.output()
は可変長引数を取るので、複数のメタデータを設定したい場合はその分だけ引数を設定します。
ffmpeg
.input(input_video_path)
.output(output_video_path, metadata="title=New Title", metadata="title=New Artist", metadata="album=New Album")
.run()
辞書型の引数を展開することもできます。
ffmpeg
.input(input_video_path)
.output(output_video_path, **{"metadata": "title=New Title", "metadata": "artist=New Artist", "metadata": "album=New Album"})
.run()
辞書型の引数を変数で保持しておきたい場合は少し工夫が必要です。キーをそのままmetadata
にすると、キーが重複して上書きされてしまうためです。
キーをユニークにするためには、metadata:g:0
のようにグローバルオプションg
を付けて、更にその後にユニークなインデックスを振るようにします。グローバルオプションg
を付けるとメタデータがファイル全体に適用されますが、メタデータはデフォルトでグローバルになっており、グローバルオプションを明示的に付けても省略した場合と同じ動作になるため、このようにしても無害です。また、グローバルオプションの後のインデックスは無視されます。
なお、グローバルオプションを付けずにインデックスだけを振ってmetadata:0
とするとエラーになります。
metadata_dict = {"metadata:g:0": "title=New Title", "metadata:g:1": "artist=New Artist", "metadata:g:2": "album=New Album"}
ffmpeg
.input(input_video_path)
.output(output_video_path, **metadata_dict)
.run()
このハックを使うと、次のように別のファイルからメタデータをコピーすることもできます。
tags = ffmpeg.probe(input_video_path)["format"]["tags"]
metadata_dict = {}
for i, key in enumerate(tags):
metadata_dict[f"metadata:g:{i}"] = f"{key}={tags[key]}"
ffmpeg
.input(input_video_path)
.output(output_video_path, **metadata_dict)
.run()
参考
Author And Source
この問題について(ffmpeg-pythonで動画にメタデータを追加する), 我々は、より多くの情報をここで見つけました https://qiita.com/sin9270/items/8c054abf328be8df729f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .