2013-02-19 3 views
9

Я пытаюсь исправить некоторые видеоролики, сделанные с помощью iDevice. Видеоролики имеют поворот в метаданных, который понимается только Apple и его программным обеспечением, но никто другой. Исправить это довольно просто, но я также хотел бы сохранить другие метаданные в файлах, таких как геолокация.ffmpeg не копирует пользовательские метаданные

Я попробовал несколько вариантов, все с тем же результатом, например:

ffmpeg -i input.mov -vf vflip,hflip -map_metadata 0 -metadata:s:v:0 rotate=0 -acodec copy output.mp4 

Это должно работать, это уже дает правильный предварительный просмотр метаданных:

ffmpeg version 1.1.2 Copyright (c) 2000-2013 the FFmpeg developers 
built on Feb 8 2013 23:55:22 with Apple clang version 4.0 (tags/Apple/clang-421.0.60) (based on LLVM 3.1svn) 
configuration: --prefix=/usr/local/Cellar/ffmpeg/1.1.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --cc=cc --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid 
libavutil  52. 13.100/52. 13.100 
libavcodec  54. 86.100/54. 86.100 
libavformat 54. 59.106/54. 59.106 
libavdevice 54. 3.102/54. 3.102 
libavfilter  3. 32.100/3. 32.100 
libswscale  2. 1.103/2. 1.103 
libswresample 0. 17.102/0. 17.102 
libpostproc 52. 2.100/52. 2.100 
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2013-02-17 00.39.36.mov': 
    Metadata: 
    major_brand  : qt 
    minor_version : 0 
    compatible_brands: qt 
    creation_time : 2013-02-16 23:39:25 
    model   : iPhone 5 
    model-deu  : iPhone 5 
    encoder   : 6.1 
    encoder-deu  : 6.1 
    date   : 2013-02-17T00:39:25+0100 
    date-deu  : 2013-02-17T00:39:25+0100 
    location  : +48.2683+007.7205+172.710/ 
    location-deu : +48.2683+007.7205+172.710/ 
    make   : Apple 
    make-deu  : Apple 
    Duration: 00:00:09.67, start: 0.000000, bitrate: 16764 kb/s 
    Stream #0:0(und): Video: h264 (High) (avc1/0x31637661), yuv420p, 1920x1080, 16696 kb/s, 24 fps, 24 tbr, 600 tbn, 1200 tbc 
    Metadata: 
     rotate   : 180 
     creation_time : 2013-02-16 23:39:25 
     handler_name : Core Media Data Handler 
    Stream #0:1(und): Audio: aac (mp4a/0x6134706D), 44100 Hz, mono, fltp, 61 kb/s 
    Metadata: 
     creation_time : 2013-02-16 23:39:25 
     handler_name : Core Media Data Handler 
w:1920 h:1080 pixfmt:yuv420p tb:1/600 fr:24/1 sar:0/1 sws_param:flags=2 
[libx264 @ 0x7fc248829a00] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX 
[libx264 @ 0x7fc248829a00] profile High, level 4.0 
[libx264 @ 0x7fc248829a00] 264 - core 125 - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=24 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 

Output #0, mp4, to 'output.mp4': 
Metadata: 
    major_brand  : qt 
    minor_version : 0 
    compatible_brands: qt 
    creation_time : 2013-02-16 23:39:25 
    model   : iPhone 5 
    model-deu  : iPhone 5 
    encoder-deu  : 6.1 
    date   : 2013-02-17T00:39:25+0100 
    date-deu  : 2013-02-17T00:39:25+0100 
    location  : +48.2683+007.7205+172.710/ 
    location-deu : +48.2683+007.7205+172.710/ 
    make   : Apple 
    make-deu  : Apple 
    encoder   : Lavf54.59.106 
Stream #0:0(und): Video: h264 ([33][0][0][0]/0x0021), yuv420p, 1920x1080, q=-1--1, 12288 tbn, 24 tbc 
Metadata: 
    handler_name : Core Media Data Handler 
    creation_time : 2013-02-16 23:39:25 
    rotate   : 0 
Stream #0:1(und): Audio: aac ([64][0][0][0]/0x0040), 44100 Hz, mono, 61 kb/s 
Metadata: 
    creation_time : 2013-02-16 23:39:25 
    handler_name : Core Media Data Handler 
Stream mapping: 
    Stream #0:0 -> #0:0 (h264 -> libx264) 
    Stream #0:1 -> #0:1 (copy) 

Но результирующий файл сохраняет только некоторые из этих тегов метаданных:

ffmpeg -i output.mp4 

показывает:

fmpeg version 1.1.2 Copyright (c) 2000-2013 the FFmpeg developers 
    built on Feb 8 2013 23:55:22 with Apple clang version 4.0 (tags/Apple/clang-421.0.60) (based on LLVM 3.1svn) 
configuration: --prefix=/usr/local/Cellar/ffmpeg/1.1.2 --enable-shared --enable-pthreads - -enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --cc=cc --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid 
libavutil  52. 13.100/52. 13.100 
libavcodec  54. 86.100/54. 86.100 
libavformat 54. 59.106/54. 59.106 
libavdevice 54. 3.102/54. 3.102 
libavfilter  3. 32.100/3. 32.100 
libswscale  2. 1.103/2. 1.103 
libswresample 0. 17.102/0. 17.102 
libpostproc 52. 2.100/52. 2.100 
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4': 
Metadata: 
    major_brand  : isom 
    minor_version : 512 
    compatible_brands: isomiso2mp41 
    creation_time : 2013-02-16 23:39:25 
    date   : 2013-02-17T00:39:25+0100 
    encoder   : Lavf54.59.106 
Duration: 00:00:09.67, start: 0.000000, bitrate: 3286 kb/s 
    Stream #0:0(und): Video: mpeg4 (Simple Profile) (mp4v/0x7634706D), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 3219 kb/s, 24 fps, 24 tbr, 12288 tbn, 24 tbc 
    Metadata: 
    creation_time : 2013-02-16 23:39:25 
    handler_name : VideoHandler 
    Stream #0:1(und): Audio: aac (mp4a/0x6134706D), 44100 Hz, mono, fltp, 61 kb/s 
    Metadata: 
    creation_time : 2013-02-16 23:39:25 
    handler_name : SoundHandler 

Я также попытался добавить один тег я заинтересован в вручную

-metadata:g location=+48.2683+007.7205+172.710/ 

без изменения результата.

Выход как .mov ничего не меняет.

Есть ли какой-либо трюк для добавления нестандартных метаданных? Как мне вернуть место?

Заранее благодарим всех, кто может дать представление об этом.

+0

Вы обрезанный консольный вывод FFmpeg, который вырезает потенциально полезную информацию. – LordNeckbeard

+0

Я добавил все выходные сейчас, надеюсь, это поможет найти проблему – e110c0

ответ

1

Мультимедийный аппарат FFmpeg mp4 записывает только выбранный список известных типов метаданных. Некоторые мультиплексоры, такие как AVI, будут писать все поля метаданных с использованием пользовательских тегов (частично, чтобы разрешить такие варианты использования ремуксирования), но movenc.c этого еще не делает (см. Блоки кода в строке 2911 или 3064). Вы могли бы реализовать его самостоятельно.

Смежные вопросы