Kun kopioin yksinkertaisesti a.MOV (iPhonesta) tiedostoon c.MOV, ffmpeg pudottaa paljon metatietoja (mukaan lukien videon aika ja sijainti).

Yritin -metadata, mutta ffmpeg kuitenkin pudottaa tiedot (näyttää siltä, että metatietoja ei pudota, kun ffmpeg tulostaa Output #0, mutta se hylätään, kun käytän ffprobe-tiedostoa nähdäksesi lähtötiedoston metatiedot)

Mitä minun pitäisi tehdä pakottaaksesi ffmpeg säilyttämään nämä metatiedot?

$ 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 $ 

Kommentit

  • Minulla on sama ongelma; yllä oleva ei toimi ’. Käytän ffmpeg-versiota ffmpeg-versio 3.4.4-1 ~ 16.04.york0 Copyright (c) 2000-2018 FFmpeg-kehittäjät ja tämä ffmpeg -i a.MOV -map_metadata 0 -c kopio c.MOV aiheuttaa tämän edelleen pudottamisen: – Kirjoituskirjasto: 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 ja korvataan seuraavilla: – Kirjoitussovellus: Lavf57.83.100

vastaus

Muu tässä olevat vastaukset toimivat vain ” tunnettujen ” -meta-avainten kanssa mukautetuille / mielivaltaisille meta-avaimille, -map_metadata 0 ei riitä pitämään niitä kaikkia.

Transkooderiprojektissani monet kameranvalmistajat haluavat pistää mukautettuja metanäppäimiä MP4 / MOV-konttiin, ja haluan pitää ne transkoodatut MP4 / MOV-tiedostot. Paljon pään raapimisen jälkeen ffmpegillä on kytkin tätä tarkoitusta varten:

-movflags use_metadata_tags 

Luotto kuuluu tämän säikeen kirjoittajalle ja Googlelle:

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

Kommentit

  • Hieno vinkki – kiitos. Yksi asia, jonka huomasin muunnettuani joukon iphoniin tallentamiani mov-tiedostoja, Exif-tiedoissa oleva Kääntötunniste sanoi 180. ffmpeg kiertää videota automaattisesti – mutta jos kopioit myös mov-tunnisteet mp4: ään, se silti käskee pelaajaa kiertämään 180, vaikka ffmpeg käänsi mp4: tä automaattisesti muunnoksen aikana. Joten videoni päätyivät ylösalaisin, kun soitin niitä 🙂 – Ratkaisu tapauksessani oli kertoa ffmpegille, ettei se pyöri automaattisesti käyttämällä -noautorotate – nopea kiertotapa on Exiftoolin ja aseta kierto arvoon 0 – exiftool -Rotation=0 file.mp4

Vastaa

-metadata -vaihtoehto on tarkoitettu metatietojen käsittelyyn. Jos haluat vain kopioida metatiedot syötetiedostosta ouput-tiedostoon, käytä -map_metadata -vaihtoehtoa :

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

Tiedoston määrittelijä on nolla-indeksoitu luku, joten ”0” ottaa metatiedot ensimmäisestä syötetiedostosta.

Kommentit

  • Onko sinulla ideoita kuinka saada tämä toimimaan concat kanssa? esimerkiksi. ffmpeg -nostdin -f concat -safe 1 -i "${concatlist}" -map_metadata 0 -c copy "$outfile" jossa $concatlist on /tmp/concat.list, jolla on viivat kuten file 'filenamehere.mp3'
  • ok, sai sen : ffmpeg -nostdin -i "${infile}" -f ffmetadata "${metadatafile}" sitten ffmpeg -nostdin -f concat -safe 1 -i "${concatlist}" -i "${metadatafile}" -map_metadata 1 -c copy "$outfile"
  • -map_metadata 0 tai -map_metadata 1?
  • @evandrix As ilmoitettu vastauksessa, 0 valitsee lähteeksi ensimmäisen syötetiedoston . Lisätietoja on ffmpeg-asiakirjojen tässä osassa .
  • ok, kiitos paljon ~

vastaus

FFmpeg asettaa oletusarvoisesti kaikki ensimmäisen syötetiedoston metatiedot saataville , tulostetiedostomikserille kirjoittamista varten. -map_metadata sallii tämän ohittamisen joko osoittamalla toiseen syötteeseen tai käskemällä ffmpegin hylkäämään syötetyt globaalit metatiedot (-1) .

Mikä käytettävissä olevista metatiedoista on tosiasiallisesti kirjoitettu lähtötiedostoon, riippuu ulostulosoittimen. QT / ISOBMFF-äänenvaimennin (MOV / MP4 / 3GP ..) ottaa huomioon vain rajoitetun määrän tunnisteita, pääasiassa iTunesiin liittyviä. Kuten @JerryTian totesi, kaikki muut tunnisteet kirjoitetaan tiedostoon -movflags use_metadata_tags -asetuksella. Nämä kirjoitetaan kuitenkin epätavanomaisella tavalla – etenkin Quicktime ei tunnista näitä metatietomerkintöjä. Muu, ffmpeg-pohjainen s / w, lukee ne. Tai kuka tahansa, joka käyttää mukautettuja tiedostoja, kuten @JerryTian, voi mukauttaa tietonsa lukemaan niitä.

Huomaa, että movflagit koskevat vain QT-mikserin lähtöä. Matroska (MKV) kirjoittaa mitään. Muut äänenvaimentimet vaihtelevat.

Kommentit

  • Yritän pitää sisällönkuvaustiedot musiikkia muunnettaessa. Minulla on oma CATALOGID, mutta muunnettaessa wav – flac. Kenttä ei ole säilynyt. ffmpeg -i bb.wav bb2.flac -movflags use_metadata_tags. Onko sinulla ideoita?
  • Joten jos ymmärrän sinut oikein, ’ sanot uudelleen, että FFmpeg-koodaamisen .mkv-tiedostoksi koodaamisen pitäisi säilyttää kaikki lähteen metatiedot oletuksena , tarvitsematta määrittää muita vaihtoehtoja?

Vastaa

En ole löytänyt tapaa saada ffmpeg säilyttää tiedot. Mutta olen havainnut, että halusin tarpeitani varten exif-metatiedot ja exiftool oli kätevä ratkaisu.

Voit kopioida metatietoja videotiedostojen välillä: https://unix.stackexchange.com/a/492338/83370

Siellä on temppu kopioida kaikki metatiedot käyttämällä vaihtoehtoa -all:all>all:all: http://u88.n24.queensu.ca/exiftool/forum/index.php?topic=3440.0

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

Kommentit

  • Yritin kaikkia yllä olevia tiedostoja Canon 200D: ltä ja tämä on todella hyödyllisin. Se tekee edelleen exiftool c.MOV paljon pienemmäksi kuin alkuperäisen tulosteen, mutta säilyttää todellisen luomispäivämäärän (-map_metadata teki sen liian, mutta ei -movflags) ja kameran nimeä, mutta objektiivitiedot ovat silti kadonneet.
  • OK, tämä oli todella hyvä lähtökohta – kaikki mitä minun piti tehdä ohittaa kartoitusosan. Pelkkä exiftool -TagsFromFile in.mp4 out.mp4 -toiminnon käyttäminen teki työn!

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *