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.