2013-02-19 44 views
9

Tôi đang cố khắc phục một số video được tạo bằng iDevice. Các video có vòng xoay trong siêu dữ liệu chỉ được Apple hiểu và phần mềm của nó nhưng không có ai khác. Việc sửa lỗi này khá đơn giản, nhưng tôi cũng muốn giữ siêu dữ liệu khác trong các tệp như vị trí địa lý.ffmpeg không sao chép siêu dữ liệu tùy chỉnh

Tôi đã thử một vài phiên bản, tất cả đều có kết quả tương tự, ví dụ:

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

này nên làm việc, nó đã mang lại cho xem trước đúng của siêu dữ liệu:

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) 

Nhưng file kết quả chỉ giữ một số thẻ siêu dữ liệu sau:

ffmpeg -i output.mp4 

hiển thị:

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 

Tôi cũng đã cố gắng để thêm một thẻ Tôi quan tâm đến bằng tay với

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

không có thay đổi trong kết quả.

Đầu ra dưới dạng .mov cũng không thay đổi bất kỳ thứ gì.

Có mẹo nào để thêm siêu dữ liệu không chuẩn không? Làm thế nào để tôi lấy lại vị trí trong đó?

Cảm ơn trước bất kỳ ai có thể cung cấp một số thông tin chi tiết về điều này.

+0

Bạn tỉa giao diện điều khiển đầu ra ffmpeg mà cắt ra có khả năng thông tin hữu ích. – LordNeckbeard

+0

Tôi đã thêm tất cả đầu ra ngay bây giờ, hy vọng nó giúp tìm ra vấn đề – e110c0

Trả lời

1

Trình muxer FFmpeg mp4 chỉ ghi danh sách lựa chọn các loại siêu dữ liệu đã biết. Một số muxers, như AVI, sẽ viết tất cả các trường siêu dữ liệu bằng cách sử dụng thẻ tùy chỉnh (một phần cho phép các trường hợp sử dụng remuxing), nhưng movenc.c vẫn chưa thực hiện điều đó (xem các khối mã trong dòng 2911 hoặc 3064). Bạn có khả năng có thể thực hiện nó cho mình.

Các vấn đề liên quan