使用ffmpeg转换视频格式和复制标签

问题描述:

我一直在试图将我在相机上拍摄的一些视频转换为压缩格式以节省一些存储空间。我想出了如何使用ffmpeg将视频转换为我想要的格式,但我无法弄清楚的是如何复制元数据。我想复制视频拍摄时的原始元数据(最重要的是创建时间)。我尝试使用-map_meta_data 0:0选项运行ffmpeg,但这似乎不起作用。有任何想法吗?使用ffmpeg转换视频格式和复制标签

它看起来像我想在这种情况下复制的数据是在视频的格式部分。使用ffprobe与show_format选项,我得到这个输出:

[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] 

我想复制这两个标签到我的新视频。

+0

请出示您的ffmpeg的命令和完整的控制台输出。 – LordNeckbeard 2012-07-29 04:12:01

the documentation on dumping and loading metadata看一看:

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 

我没有元数据FUL视频,现在来测试,但这样的事情应该工作。

+0

这似乎应该工作,但是当我提取元数据时,creation_time标记不会被提取。这就是保存到文件中的全部内容,这也可以解释为什么map_meta_data选项不起作用:'; FFMETADATA1 encoder = CanonMVI06' – Scott 2012-07-30 14:57:39

+0

@Scott确实如此。尽管它完全不雅,不应该是必须的,但是已经尝试使用ffprobe和grep来获取创建时间,然后使用['-metadata'](http://www.ffmpeg.org/ffmpeg)直接在输出中设置它。 HTML#主选项)? – blahdiblah 2012-07-30 18:04:02

+2

这仍然不起作用,但它指出我在正确的方向。当我运行ffmpeg命令说stfptime不可用时(我一直试图在Windows上执行此操作),我终于注意到有一条消息获得输出。事实证明,由于该库在Windows上不可用,因此该日期从未放入元数据中。所以,我试图在Linux中转换我的视频,其中stfptime可用,并且map_metadata和ffmetadata选项都可用于将creation_time标记保存到视频元数据中。 – Scott 2012-08-16 03:05:08

使用“-map_metadata 0:g”复制所有全局元数据。

0表示输入#0。 g表示全球元数据。

这是我的ffprobe结果。请享用!

input.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]