Amikor egyszerűen másolok a.MOV -et (az iPhone-ról) a c.MOV, az ffmpeg sok metaadatot dob le (beleértve a videó idejét és helyét).

Megpróbáltam a -metadata fájlt, de az ffmpeg még mindig eldobja az információt (úgy tűnik, hogy a metaadatok nem esnek el, amikor az ffmpeg Output #0, de elvetik, amikor az ffprobe-t használom a kimeneti fájl metaadatainak megtekintéséhez)

Mit kell tennem az ffmpeg kényszerítésére, hogy megőrizzék ezeket a metaadatokat?

$ ffmpeg -i a.MOV -c copy c.MOV -y Input #0, mov,mp4,m4a,3gp,3g2,mj2, from "a.MOV": Metadata: major_brand : qt minor_version : 0 compatible_brands: qt creation_time : 2018-03-... com.apple.quicktime.location.ISO6709: .../ com.apple.quicktime.make: Apple com.apple.quicktime.model: iPhone ... com.apple.quicktime.software: 11.... com.apple.quicktime.creationdate: 2018-03-... Duration: 00:00:01.77, start: 0.000000, bitrate: 7868 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720, 7707 kb/s, 30 fps, 30 tbr, 600 tbn, 1200 tbc (default) Metadata: creation_time : 2018-03-... handler_name : Core Media Data Handler encoder : H.264 Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 87 kb/s (default) Metadata: creation_time : 2018-03-... handler_name : Core Media Data Handler Stream #0:2(und): Data: none (mebx / 0x7862656D), 0 kb/s (default) Metadata: creation_time : 2018-03-... handler_name : Core Media Data Handler Stream #0:3(und): Data: none (mebx / 0x7862656D), 0 kb/s (default) Metadata: creation_time : 2018-03-... handler_name : Core Media Data Handler Output #0, mov, to "c.MOV": Metadata: major_brand : qt minor_version : 0 compatible_brands: qt com.apple.quicktime.creationdate: 2018-03-... com.apple.quicktime.location.ISO6709: .../ com.apple.quicktime.make: Apple com.apple.quicktime.model: iPhone ... com.apple.quicktime.software: 11.... encoder : Lavf57.71.100 Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720, q=2-31, 7707 kb/s, 30 fps, 30 tbr, 19200 tbn, 600 tbc (default) Metadata: creation_time : 2018-03-... handler_name : Core Media Data Handler encoder : H.264 Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 87 kb/s (default) Metadata: creation_time : 2018-03-... handler_name : Core Media Data Handler Stream mapping: Stream #0:0 -> #0:0 (copy) Stream #0:1 -> #0:1 (copy) Press [q] to stop, [?] for help frame= 23 fps=0.0 q=-1.0 Lsize= 732kB time=00:00:01.76 bitrate=7827.5kbits/s speed= 971x video:921kB audio:9kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.291216% $ ffprobe c.MOV Input #0, mov,mp4,m4a,3gp,3g2,mj2, from "c.MOV": Metadata: major_brand : qt minor_version : 512 compatible_brands: qt encoder : Lavf57.71.100 Duration: 00:00:00.77, start: 0.000000, bitrate: 7819 kb/s Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720, 7707 kb/s, 30 fps, 30 tbr, 19200 tbn, 38400 tbc (default) Metadata: handler_name : DataHandler encoder : H.264 Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 92 kb/s (default) Metadata: handler_name : DataHandler $ 

Megjegyzések

  • Ugyanez a probléma; a fenti nem működik ‘ t. Az ffmpeg verziót használom. Az ffmpeg 3.4.4-1 ~ 16.04 verziója. York0 Copyright (c) 2000-2018 az FFmpeg fejlesztők és ez az ffmpeg -i a.MOV -map_metadata 0 -c másolat c. A MOV ennek ellenére ezt eldobja: – Könyvtár írása: Apple QuickTime com.apple.quicktime.make: Apple com.apple.quicktime.model: iPhone 5s com.apple.quicktime.software: 10.3.3 com.apple.quicktime.creationdate: 2018-06-06T01: 15: 37 + 0800, és helyébe a következő szöveg lép: – Írási alkalmazás: Lavf57.83.100

Válasz

Egyéb A válaszok itt csak a ” ismert ” meta kulcsokkal működnek, egyéni / tetszőleges meta kulcsok esetén, -map_metadata 0 nem elegendő mindannyiuk megtartásához.

Az én átkódoló projektemben sok kameragyártó szeret egyedi meta kulcsokat beadni az MP4 / MOV konténerbe, és szeretném őket a átkódolt MP4 / MOV fájlokat. A sok fejkarcolás után az ffmpeg-nek van kapcsolója erre a célra:

-movflags use_metadata_tags 

A szál szerzője és a Google a jóváírást kapja:

https://superuser.com/questions/1208273/add-new-and-non-defined-metadata-to-a-mp4-file

Megjegyzések

  • Szép tipp – köszönöm. Egy dologra figyeltem fel, amikor konvertáltam egy csomó mov fájlt, amelyeket az iphone-on rögzítettem. Az exif adatok Rotation címkéje 180 volt. Az ffmpeg alapértelmezés szerint automatikusan elforgatja a videót – de ha a mov címkéket is átmásolja az mp4-re, akkor azt mondja a játékosnak, hogy forgassa el 180-at, annak ellenére, hogy az ffmpeg az átalakítás során automatikusan elforgatta az mp4-et. Tehát a videóim fejjel lefelé fordultak, amikor lejátszottam őket 🙂 – A megoldás az én esetemben az volt, ha azt mondtam az ffmpeg-nek, hogy ne forogjon automatikusan az -noautorotate használatával – egy gyors megoldás az Exiftool és állítsa a forgatást 0-ra – exiftool -Rotation=0 file.mp4

Válasz

A -metadata opció a metaadatok manipulálására szolgál. Ha csak a metaadatokat szeretné bemásolni egy bemeneti fájlból egy ouput fájlba, akkor használja a -map_metadata beállítást :

ffmpeg -i a.MOV -map_metadata 0 -c copy c.MOV

A fájlmeghatározó nulla indexű szám, ezért a “0” az első bemeneti fájl metaadatait veszi át.

Megjegyzések

  • Van ötlet, hogyan lehetne ezt működtetni a concat eszközzel? például. ffmpeg -nostdin -f concat -safe 1 -i "${concatlist}" -map_metadata 0 -c copy "$outfile" ahol $concatlist /tmp/concat.list, amelynek olyan vonalai vannak, mint a file 'filenamehere.mp3'
  • rendben, megvan : ffmpeg -nostdin -i "${infile}" -f ffmetadata "${metadatafile}" majd ffmpeg -nostdin -f concat -safe 1 -i "${concatlist}" -i "${metadatafile}" -map_metadata 1 -c copy "$outfile"
  • -map_metadata 0 vagy -map_metadata 1?
  • @evandrix As a válaszban feltüntetett 0 kiválasztja az első bemeneti fájl t forrásként. Részletekért lásd: az ffmpeg dokumentumok ezen szakaszát .
  • rendben, köszönöm szépen ~

Válasz

Az FFmpeg alapértelmezés szerint az első bemeneti fájl összes metaadatát elérhetővé teszi , a kimeneti fájl muxerhez, íráshoz. A -map_metadata lehetővé teszi ennek felülbírálását, vagy egy másik bemenetre mutatva, vagy az ffmpeg-nek azt mondva, hogy dobja el a bemeneti globális metaadatokat (-1 értéke) .

Azonban a rendelkezésre álló metaadatok közül melyik a kimeneti fájlba valójában írva, attól függ, hogy a kimeneti hangtompító. A QT / ISOBMFF muxer (MOV / MP4 / 3GP esetén) csak korlátozott számú, elsősorban az iTunes-hoz kapcsolódó címkét vesz figyelembe. Ahogy @JerryTian megjegyezte, -movflags use_metadata_tags esetén az összes többi címkét a fájlba írja. Ezeket azonban rendhagyó módon írják – különösen a Quicktime nem ismeri fel ezeket a további metaadat-bejegyzéseket. Más, ffmpeg-alapú s / w-nek el kell olvasnia őket. Vagy bárki, aki egyedi s / w-t használ, például @JerryTian, alkalmazhatja s / w-ját az olvasásra.

Ne feledje, hogy a movflags csak a QT muxer kimenetére vonatkozik. Matroska (MKV) ír bármi. Más muxerek eltérnek.

Megjegyzések

  • A metaadatokat próbálom megtartani a zene átalakításakor. Van egy egyedi CATALOGID-em, de amikor konvertálok wav-flac. A mező nem marad meg. ffmpeg -i bb.wav bb2.flac -movflags use_metadata_tags. Van valami ötlet?
  • Tehát ha jól értem, ‘ azt mondja, hogy az FFmpeg használatával az .mkv-ba történő kódoláshoz alapértelmezés szerint meg kell őriznie a forrás összes metaadatát , anélkül, hogy további opciókat kellene megadnia?

Válasz

Nem találtam módot az ffmpeg használatára Az adatok megőrzése. De azt tapasztaltam, hogy az igényeimhez az exif metaadatokat kívántam, és a exiftool egy kényelmes megoldás.

Másolhat metaadatokat videofájlok között: https://unix.stackexchange.com/a/492338/83370

Trükk az összes metaadat másolása a -all:all>all:all opcióval: http://u88.n24.queensu.ca/exiftool/forum/index.php?topic=3440.0

exiftool -TagsFromFile a.MOV "-all:all>all:all" c.MOV 

Megjegyzések

  • Az összes fentieket kipróbáltam a Canon 200D fájljain, és ez az valójában a leghasznosabb. Ennek ellenére a további exiftool c.MOV sokkal kisebb lesz, mint az eredeti kimenete, de megőrzi a tényleges létrehozási dátumot is, de nem -movflags) és a kamera neve, de az objektívre vonatkozó információk még mindig hiányoznak.
  • Rendben, ez valójában remek kiindulópont volt – csak annyit kellett tennem kihagyja ezt a leképezési részt. Csak a exiftool -TagsFromFile in.mp4 out.mp4 használatával végezte el a munkát!

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük