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.
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:
źródło