Bagaimana cara menggunakan ffmpeg untuk menambahkan metadata ke file AAC tanpa reencoding?

13

Saya menggunakan ffmpeg untuk mengekstrak hanya aliran audio dari file video:

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

Ini menghasilkan file audio yang bersih tetapi tanpa metadata apa pun.

Untuk menambahkan metadata, ffmpeg memiliki opsi baris perintah:

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

Ini berjalan tanpa kesalahan, tetapi ketika file output diperiksa dengan ffprobe, ia tidak memiliki tag metadata sama sekali.

Jika wadah keluaran diubah ke mp4, metadata dapat diatur dan muncul di file keluaran:

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

Inilah bagian yang menarik; jika saya menggunakan Banshee untuk mengedit metadata dari file .aac yang ada, kemudian gunakan ffmpeg untuk memproses file dengan cara yang sama, metadata asli berhasil disalin ke file .aac yang baru.

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

tetapi, upaya untuk mengubah metadata tidak berpengaruh:

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

Jadi sepertinya .aac container dapat menampung metadata dan ffmpeg dapat menyalinnya dari input ke output, tetapi tidak dapat mengubahnya ketika copy codec digunakan.

Apakah ada yang tahu cara untuk mendapatkan ffmpeg untuk mengubah metadata dalam wadah aac tanpa reencoding?

Bergantian, apakah ada alat generik lain yang bisa saya gunakan untuk mengatur metadata setelah file diproses?

Terimakasih banyak. Chris

Chris C.
sumber

Jawaban:

12

Tujuannya adalah untuk menghasilkan file audio saja dari file video tanpa pengkodean ulang dan untuk memperkenalkan metadata yang dikenali oleh pemutar media. Lingkungannya adalah Debian GNU / Linux.

Saya ingin mengucapkan terima kasih kepada @bootload karena menempatkan saya di jalur yang benar untuk menemukan jawaban.

ffmpeg tampaknya tidak mendukung menambahkan tag metadata ke file output .AAC, namun, berikut adalah dua solusi yang mungkin.

  1. Utilitas baris perintah id3 dan id3v2 (tersedia dari repositori standar) dapat menerapkan tag id3 ke file audio .aac. Nautilus mengenali gaya tag v1 dan v2 sehingga keduanya harus berfungsi. Tag yang sama dikenali oleh pemutar media Banshee.
id3v2 -t "My Title" audio.aac
  1. ffmpeg dapat menambahkan metadata ke wadah MP4, tetapi ekstensi .mp4 di Nautilus akan muncul sebagai file video. Apple Inc. menggunakan ekstensi non-standar ke wadah MP4 untuk membedakan file video (.m4v) dari file audio (.m4a). Ekstensi ini dikenali di bawah Debian oleh Nautilus dan oleh ffmpeg. Begitu,
ffmpeg -i video.mp4 -vn -acodec copy -metadata title="My Title" audio.m4a

akan menghasilkan file khusus audio yang dikenali oleh Nautilus, dan ffmpeg dapat menambahkan metadata ke wadah dengan aman.

Chris C.
sumber
3

Apa perangkat keras yang dimaksud? Apakah itu untuk perangkat Apple iP *? Jika demikian coba http://atomicparsley.sourceforge.net/ Kalau tidak coba http://ffmpeg.org/ffmpeg.html#contoh menggunakan metode mex / demux INI "UTF-8-encoded INI" . (Ekstrak metadata sebagai file utf8 & ubah & masukkan kembali).

bootload
sumber
Lingkungannya adalah Debian GNU / Linux.
Chris C.
Dokumentasi ffmpeg tidak jelas tentang cara menggunakan metadata muxer / demuxer, meskipun tautan dokumen menunjukkan format file yang dihasilkan. Bisakah Anda memberikan contoh baris perintah tentang bagaimana ini akan dilakukan? Terima kasih.
Chris C.
@ ChrisC tidak terlihat bagus. Tanpa mengarungi spesifikasi aac & ffmpeg untuk memverifikasi ini sepertinya metadata yang dihormati oleh ffmpeg tercantum di sini ~ wiki.multimedia.cx/index.php?title=FFmpeg_Metadata#Basic_Usage dan acc tidak didukung. Menggunakan cli untuk format lain, Anda mengikuti pola 'ffmpeg -i track05.wav -metadata title = "Track # 5" -metadata author = "Artis Tidak Dikenal" -acodec alac -y track05.m4a misalnya. Pola umum adalah ffmpeg -i <SOURCE> -metadata key = "value" <SOURCE>. Ini persis proses yang Anda ikuti :(
bootload
Mari kita menjadi sangat spesifik. Apa format metadata yang ingin Anda encode? Apakah kita berbicara ID3? Format apa yang akhirnya akan Anda gunakan?
bootload
Saya melihat sekeliling untuk melihat apa yang didukung AAC. Mungkin tidak ada format resmi, tetapi di dalam Debian ID3V1 dan ID3V2 keduanya berfungsi. Banshee tampaknya memasang tag ID3V2 saat menggunakan editornya.
Chris C.
1

MP4Box (bagian dari paket "gpac") menyelimuti file AAC dengan wadah MP4 tanpa mengubah data asli. Metadata kemudian dapat ditambahkan menggunakan hampir semua perangkat lunak penandaan:

MP4Box -add old.aac new.mp4
Gid
sumber