15

ストレージスペースを節約するために、カメラで撮影したビデオを圧縮形式に変換しようとしています。ffmpeg を使用して動画を必要な形式に変換する方法はわかりましたが、メタデータをコピーする方法がわかりませんでした。ビデオが撮影されたとき (最も重要なのは作成時) の元のメタデータをコピーしたいと思います。-map_meta_data 0:0 オプションを使用して ffmpeg を実行しようとしましたが、うまくいかないようです。何か案は?

この場合にコピーしたいデータは、ビデオのフォーマット セクションにあるようです。show_format オプションを指定して ffprobe を使用すると、次の出力が得られます。

[FORMAT]
filename=video.AVI
nb_streams=2
format_name=avi
format_long_name=AVI format
start_time=0.000000
duration=124.565421
size=237722700
bit_rate=15267331
TAG:creation_time=2012-02-07 12:15:27
TAG:encoder=CanonMVI06
[/FORMAT]

2 つのタグを新しいビデオにコピーしたいと思います。

4

3 に答える 3

11

メタデータのダンプとロードに関するドキュメントをご覧ください。

FFmpeg は、メディア ファイルから単純な UTF-8 でエンコードされた INI のようなテキスト ファイルにメタデータをダンプし、メタデータ マルチプレクサ/デマルチプレクサを使用してそれをロードすることができます。

プロセスは次のようになります。

# First extract metadata
ffmpeg -i original.mov -f ffmetadata metadata.txt
# Next, transcode, including extracted metadata
ffmpeg -i original.mov -f ffmetadata -i metadata.txt compressed.mp4

現在、テストするメタデータが豊富なビデオはありませんが、そのようなものは機能するはずです。

于 2012-07-29T04:35:56.597 に答える
9

「-map_metadata 0:g」を使用して、すべてのグローバルメタデータをコピーします。

0 は入力 #0 を意味します。g はグローバルメタデータを意味します。

これが私のffprobeの結果です。楽しい!

入力.mp4

[FORMAT]
filename=input.mp4
nb_streams=2
nb_programs=0
format_name=mov,mp4,m4a,3gp,3g2,mj2
format_long_name=QuickTime / MOV
start_time=0.000000
duration=60.560500
size=190252680
bit_rate=25132246
probe_score=100
TAG:major_brand=mp42
TAG:minor_version=1
TAG:compatible_brands=mp42avc1
TAG:creation_time=2016-05-14 10:01:17
[/FORMAT]

output.mp4

[FORMAT]
filename=output.mp4
nb_streams=2
nb_programs=0
format_name=mov,mp4,m4a,3gp,3g2,mj2
format_long_name=QuickTime / MOV
start_time=0.000000
duration=60.632000
size=38636429
bit_rate=5097826
probe_score=100
TAG:major_brand=isom
TAG:minor_version=512
TAG:compatible_brands=isomiso2avc1mp41
TAG:creation_time=2016-05-14 01:01:17
TAG:encoder=Lavf57.36.100
[/FORMAT]
于 2016-05-21T08:25:04.437 に答える