Jak używać ffmpeg do dodawania metadanych do pliku AAC bez ponownego kodowania?

13

Używam ffmpeg, aby wyodrębnić tylko strumień audio z pliku wideo:

ffmpeg -i video.mp4 -vn -acodec copy audio.aac

Daje to czysty plik audio, ale bez żadnych metadanych.

Aby dodać metadane, ffmpeg ma opcję wiersza poleceń:

ffmpeg -i video.mp4 -vn -acodec copy -metadata title="My Title" audio.aac

Działa to bezbłędnie, ale gdy plik wyjściowy jest sprawdzany za pomocą ffprobe, nie ma żadnych znaczników metadanych.

Jeśli kontener wyjściowy zostanie zmieniony na MP4, metadane można ustawić i pojawiają się w pliku wyjściowym:

ffmpeg -i video.mp4 -vn -acodec copy -metadata title="My Title" audio.mp4

Oto interesujący kawałek; jeśli użyję Banshee do edycji metadanych istniejącego pliku .aac, następnie użyję ffmpeg do przetworzenia pliku w ten sam sposób, oryginalne metadane zostaną pomyślnie skopiowane do nowego pliku .aac.

ffmpeg -i metadata.aac -vn -acodec copy audio.aac

ale próby zmiany metadanych nie przynoszą efektu:

ffmpeg -i metadata.aac -vn -acodec copy -metadata title="My Title" audio.aac

Wygląda więc na to, że kontener .aac może przechowywać metadane, a ffmpeg może kopiować je z wejścia na wyjście, ale nie może go zmienić, gdy używany jest kodek kopiujący.

Czy ktoś zna sposób na zmusienie ffmpeg do zmiany metadanych w kontenerze AAC bez ponownego kodowania?

Czy istnieje też inne ogólne narzędzie, którego można użyć do ustawienia metadanych po przetworzeniu pliku?

Wielkie dzięki. Chris.

Chris C.
źródło

Odpowiedzi:

12

Celem było stworzenie pliku zawierającego tylko dźwięk z pliku wideo bez ponownego kodowania i wprowadzenie metadanych rozpoznawalnych przez odtwarzacze multimedialne. Środowisko to Debian GNU / Linux.

Chciałbym podziękować @bootload za postawienie mnie na właściwej drodze do znalezienia odpowiedzi.

ffmpeg nie obsługuje dodawania znaczników metadanych do plików wyjściowych .AAC, ale oto dwa możliwe obejścia.

  1. Narzędzia wiersza poleceń id3 i id3v2 (dostępne ze standardowych repozytoriów) mogą stosować znaczniki id3 do pliku audio .aac. Nautilus rozpoznał style tagów v1 i v2, więc oba powinny działać. Te same tagi zostały rozpoznane przez odtwarzacz multimedialny Banshee.
id3v2 -t "My Title" audio.aac
  1. ffmpeg może dodawać metadane do kontenera MP4, ale rozszerzenie .mp4 w Nautilusie pojawi się jako plik wideo. Apple Inc. używa niestandardowych rozszerzeń kontenera MP4, aby odróżnić pliki wideo (.m4v) od plików audio (.m4a). Rozszerzenia te są rozpoznawane w Debianie przez Nautilus i ffmpeg. Więc,
ffmpeg -i video.mp4 -vn -acodec copy -metadata title="My Title" audio.m4a

utworzy plik tylko dźwięk rozpoznawany przez Nautilus, a ffmpeg może bezpiecznie dodawać metadane do kontenera.

Chris C.
źródło
3

Jaki jest zamierzony sprzęt? Czy dotyczy to urządzenia Apple iP *? Jeśli tak, spróbuj http://atomicparsley.sourceforge.net/ W przeciwnym razie spróbuj http://ffmpeg.org/ffmpeg.html#Examples przy użyciu metody mex / demux INI zakodowanej w UTF-8 . (Wyodrębnij metadane jako plik utf8, zmodyfikuj i wstaw ponownie).

bootload
źródło
Środowisko to Debian GNU / Linux.
Chris C.
Dokumentacja ffmpeg nie wyjaśnia, jak korzystać z multipleksera / demuxera metadanych, chociaż łącze do dokumentu pokazuje wynikowy format pliku. Czy możesz podać przykład wiersza poleceń, w jaki sposób można to zrobić? Dzięki.
Chris C.
@ChrisC nie wygląda dobrze. Bez brodzenia w specyfikacjach aac i ffmpeg w celu sprawdzenia, wygląda na to, że metadane honorowane przez ffmpeg są wymienione tutaj ~ wiki.multimedia.cx/index.php?title=FFmpeg_Metadata#Basic_Usage i acc nie są obsługiwane. Korzystając z cli dla innych formatów, postępujesz według wzoru „ffmpeg -i track05.wav -metadata title =" Track # 5 "-metadata autor =" Nieznany wykonawca "-acodec alac -y track05.m4a . Uogólniony wzorzec to ffmpeg -i <SOURCE> -metadata key = "value" <SOURCE>. Dokładnie tak postępowałeś :(
bootload
Bądźmy bardzo konkretni. W jakim formacie metadane chcesz zakodować? Czy mówimy o ID3? Z jakim formatem w końcu będziesz pracować?
bootload
Rozejrzałem się, aby zobaczyć, co obsługuje AAC. Może nie być oficjalnego formatu, ale wydaje się, że oba w Debianie ID3V1 i ID3V2 działają. Wygląda na to, że Banshee nakłada tagi ID3V2 podczas korzystania z edytora.
Chris C.
1

MP4Box (część pakietu „gpac”) kopie pliki AAC z kontenerami MP4 bez zmiany oryginalnych danych. Metadane można następnie dodać za pomocą dowolnego oprogramowania do tagowania:

MP4Box -add old.aac new.mp4
Kołowacizna
źródło