FFmpeg ile tüm formatlardaki meta verileri soyun


43

Tüm meta verileri FFmpeg aracılığıyla tüm biçimlerden nasıl kaldırabilirim?

Her bir ffmpeg erkeği için her bir format için özel meta veri ayarlayabilirim . Tüm meta verileri ve şerit ortamlarını ffmpeg'de bulunan tüm meta verilerden temizlemek için herhangi bir seçenek veya yöntem var mı?

   -metadata key=value
       Set a metadata key/value pair.

       For example, for setting the title in the output file:

               ffmpeg -i in.avi -metadata title="my title" out.flv

Yanıtlar:


63

@İzx tarafından komut satırını biraz değiştirerek , şunu anladım:

ffmpeg -i in.mov -map_metadata -1 -c:v copy -c:a copy out.mov

Sonuç (tekrar kontrol edildi exiftool), 81'den 52 satıra indirilmiş bir meta veri kaydı. Tüm meta verileri kaldıramayacağınızı unutmayın, bazı şeyler kalacaktır. Ancak, yaratma tarihini değiştirmedim, ki bu çok garip çünkü Ubuntu versiyonunda çalışıyor gibiydi.

FFmpeg posta listesine yazdım, bu konuda herhangi bir güncelleme veya yorum olup olmadığını sordum. Bakalım ne söyleyeceklerini görelim.


2
Gelen movveya mp4dosyalar, oluşturulma tarihi (1904 yılından beri saniye olarak ifade edilir) film başlık ve hat başlıklarındaki bir tamsayı alanıdır. 0'a veya başka bir sabit değere ayarlayabilseniz de, kaldırmanın ve geçerli bir dosya movveya mp4dosyaya sahip olmanın yolu yoktur .
mark4o

Tamamen çıkaramadığımı biliyorum, ancak bazı nedenlerden dolayı değişiklik yapılamadı.
slhck

3
Mevcut ffmpeg kullanılarak, yaratma süresi -metadata creation_time=2012-12-17T21:30:00(UTC) ile değiştirilebilir .
mark4o

1
Bunu başlığı kaldırmak için nasıl değiştirebilirim? Şu anda, başlığı otomatik olarak oluşturulan bir şeye ayarlıyor. Sonunda tam dosya adını başlık olarak görmek istiyorum.
Çaylak

2
@Rookie O zaman ayarlamanız gerekir -metadata title="Some Value". Veya, bir dosya için, MP4 dosyası için buna benzer bir şey:ffmpeg -i "$file" -map_metadata -1 -c copy -metadata title="$file" "${file%%*.mp4}-new.mp4
slhck

9

Meta verileri, bölümleri, oluşturma zamanını ve unvanını değiştirmek için kullandığım çözüm. Bu şekilde, herhangi bir meta içerik orijinal dosyadan farklı olmalıdır:

ffmpeg -y -i "test.mkv" -c copy -map_metadata -1 -metadata title="My Title" -metadata creation_time=2016-09-20T21:30:00 -map_chapters -1 "test.mkv"

1
Bu değişken benim için yararlı oldu, teşekkür ederim. Ffmpeg el kitabının yukarıdaki gibi daha fazla örnek göstermesini isterdim; stackoverflow, superuser vs. ... hepsi çok yararlı oluyor çünkü çok sayıda faydalı bilgi içeriyor.
Aralık'ta 15

8

NOT: O günden beri güncelleme ffmpegyaptım (önceden avconvUbuntu depolarından eski sürümüne sahiptim).

Şimdi @ slhck's -map_metadata -1 mükemmel çalışıyor.

@ Slhck'in çözümünü öneriyorum çünkü daha az yazıyor ve güncel. Eski bir sürümünü kullanan herkes için burayı burada bırakıyorum.


Bunu yapmanın en kolay yolu -map_metadata, genel meta verileri kullanmak yerine girdi akışlarından birini kullanmaya ayarlamaktır . Bunun% 99'u işe yaramalı. NOT: avconv kullanıyorum, çünkü Ubuntu 12.04 depolarında; bu muhtemelen ffmpeg ile uyumlu olacak, çünkü onların sözdizimleri her zaman benim deneyimimde.

avconv -i input.mp4 -map 0 -map_metadata 0:s:0 -c copy output.mp4

Bu, meta verileri ilk veri akışından (normalde video akışı) alır ve bunu konteyner dosyasının genel meta verilerini değiştirmek için kullanır. Bu işe yarar, çünkü çoğu zaman, veri akışlarının kendilerine yazılan anlamlı bir meta verisi yoktur; Ancak, bazen yaparlar ve bu meta verilerden tamamen kurtulmak istersiniz. Ne yazık ki, bunu yapmayı düşünebilmemin tek yolu bir boru ve iki avconv işlemi kullandı.

avconv -i input.mp4 -f wav - | avconv -i - -i input.mp4 -map 1 -map_metadata 0 -c copy output.mp4

Bu, WAV dosyalarının meta veri içerememesi gerçeğinden faydalanır (format, meta veri etiketleri mevcut olmadan önce oluşturulduğundan).

Bu yöntemlerin her ikisi de onları henüz test ettiğim bir dosyadaki tüm meta verileri exiftoolsusturdu - tüm bildirilenler codec bilgisiydi ve avprobe bana meta veri bildirmedi. Bunun için bir boru kullanmak oldukça çirkin ve ilk yöntem vakaların% 99'unda işe yarayacak, bu yüzden tercih edilmelidir.


1
WAVE dosyaları, diğer RIFF tabanlı dosyalar gibi (örneğin, AVI), aslında bir "INFO" liste öbeğini kullanarak meta veri etiketleri içerebilir. Sadece çok sık kullanılmaz.
17'de 9
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.