Làm cách nào để sử dụng ffmpeg để thêm siêu dữ liệu vào tệp AAC mà không cần mã hóa lại?


13

Tôi đang sử dụng ffmpeg để chỉ trích xuất luồng âm thanh từ tệp video:

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

Điều này tạo ra một tệp âm thanh sạch nhưng không có bất kỳ siêu dữ liệu.

Để thêm siêu dữ liệu, ffmpeg có tùy chọn dòng lệnh:

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

Điều này chạy không có lỗi, nhưng khi tệp đầu ra được kiểm tra bằng ffprobe, nó không có thẻ siêu dữ liệu nào cả.

Nếu bộ chứa đầu ra được thay đổi thành mp4, siêu dữ liệu có thể được đặt và xuất hiện trong tệp đầu ra:

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

Đây là một chút thú vị; nếu tôi sử dụng Banshee để chỉnh sửa siêu dữ liệu của tệp .aac hiện có, thì hãy sử dụng ffmpeg để xử lý tệp theo cách tương tự, siêu dữ liệu gốc được sao chép thành công vào tệp .aac mới.

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

nhưng, các nỗ lực thay đổi siêu dữ liệu không có hiệu lực:

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

Vì vậy, có vẻ như .aac container có thể chứa siêu dữ liệu và ffmpeg có thể sao chép nó từ đầu vào sang đầu ra, nhưng không thể thay đổi nó khi sử dụng codec sao chép.

Có ai biết cách để có được ffmpeg để thay đổi siêu dữ liệu trong một thùng chứa aac mà không cần mã hóa lại không?

Cách khác, có một công cụ chung nào khác mà tôi có thể sử dụng để đặt siêu dữ liệu sau khi tệp được xử lý không?

Cảm ơn rất nhiều. Chris.

Câu trả lời:


12

Mục tiêu là tạo ra một tệp chỉ có âm thanh từ một tệp video mà không cần mã hóa lại và giới thiệu siêu dữ liệu mà người chơi phương tiện có thể nhận ra. Môi trường là Debian GNU / Linux.

Tôi muốn cảm ơn @bootload vì đã đưa tôi đi đúng hướng để tìm câu trả lời.

ffmpeg dường như không hỗ trợ thêm thẻ siêu dữ liệu vào các tệp đầu ra .AAC, tuy nhiên, đây là hai cách giải quyết có thể.

  1. Các tiện ích dòng lệnh id3 và id3v2 (có sẵn từ kho lưu trữ tiêu chuẩn) có thể áp dụng các thẻ id3 cho tệp âm thanh .aac. Nautilus đã nhận ra cả hai kiểu thẻ v1 và v2 nên sẽ hoạt động. Các thẻ tương tự đã được công nhận bởi trình phát phương tiện Banshee.
id3v2 -t "My Title" audio.aac
  1. ffmpeg có thể thêm siêu dữ liệu vào bộ chứa MP4, nhưng phần mở rộng .mp4 trong Nautilus sẽ xuất hiện dưới dạng tệp video. Apple Inc. sử dụng các phần mở rộng không chuẩn cho bộ chứa MP4 để phân biệt các tệp video (.m4v) với các tệp âm thanh (.m4a). Các tiện ích mở rộng này được công nhận theo Debian bởi Nautilus và bởi ffmpeg. Vì thế,
ffmpeg -i video.mp4 -vn -acodec copy -metadata title="My Title" audio.m4a

sẽ tạo một tệp chỉ có âm thanh được Nautilus nhận ra và ffmpeg có thể thêm siêu dữ liệu vào vùng chứa một cách an toàn.


3

Phần cứng dự định là gì? Có phải cho một thiết bị Apple iP *? Nếu vậy hãy thử http://atomicparsley.sourceforge.net/ Nếu không hãy thử http://ffmpeg.org/ffmpeg.html#Examples bằng cách sử dụng phương pháp mex / demux "UTF-8 được mã hóa" . (Trích xuất siêu dữ liệu dưới dạng tệp utf8 & sửa đổi & chèn lại).


Môi trường là Debian GNU / Linux.
Chris C.

Tài liệu ffmpeg không rõ ràng về cách sử dụng muxer / demuxer siêu dữ liệu, mặc dù liên kết tài liệu hiển thị định dạng tệp kết quả. Bạn có thể cung cấp một ví dụ dòng lệnh về cách điều này sẽ được thực hiện? Cảm ơn.
Chris C.

@ChrisC không đẹp. Không lội qua các thông số aac & ffmpeg để xác minh điều này, có vẻ như siêu dữ liệu được vinh danh bởi ffmpeg được liệt kê ở đây ~ wiki.multidia.cx/index.php?title=FFmpeg_Metadata#Basic_Usage và acc không được hỗ trợ. Sử dụng cli cho các định dạng khác, bạn theo mẫu 'ffmpeg -i track05.wav -metadata title = "Track # 5" -metadata Author = "Unknown Artist" -acodec alac -y track05.m4a chẳng hạn. Mẫu tổng quát là ffmpeg -i <SOURCE> -metadata key = "value" <SOURCE>. Đây chính xác là quá trình bạn đã thực hiện :(
bootload

Hãy nhận được rất cụ thể. Định dạng của siêu dữ liệu bạn muốn mã hóa là gì? Có phải chúng ta đang nói ID3? Định dạng nào cuối cùng bạn sẽ làm việc với?
tải khởi động

Tôi đã xem xét xung quanh để xem những gì AAC hỗ trợ. Có thể không có định dạng chính thức, nhưng trong Debian ID3V1 và ID3V2 dường như đều hoạt động. Banshee dường như đang đặt các thẻ ID3V2 khi sử dụng trình chỉnh sửa của nó.
Chris C.

1

MP4Box (một phần của gói "gpac") bao bọc các tệp AAC bằng các thùng chứa MP4 mà không thay đổi dữ liệu gốc. Siêu dữ liệu sau đó có thể được thêm bằng cách sử dụng bất kỳ phần mềm gắn thẻ nào:

MP4Box -add old.aac new.mp4
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.