LƯU Ý: Tôi đã cập nhật ffmpeg
(trước đây tôi đã có phiên bản lỗi thời avconv
từ kho lưu trữ Ubuntu).
Bây giờ @ slhck -map_metadata -1
hoạt động hoàn hảo.
Tôi đề xuất giải pháp của @ slhck vì nó ít gõ và cập nhật hơn. Tôi sẽ để nó ở đây cho bất cứ ai sử dụng một phiên bản lỗi thời.
Cách dễ nhất để làm điều này là thiết lập -map_metadata
để sử dụng một trong các luồng đầu vào, thay vì sử dụng siêu dữ liệu toàn cầu. 99% thời gian này sẽ làm việc. LƯU Ý: Tôi đang sử dụng avconv, vì đó là trong kho Ubuntu 12.04; điều này có thể sẽ tương thích với ffmpeg, vì cú pháp của chúng luôn nằm trong kinh nghiệm của tôi.
avconv -i input.mp4 -map 0 -map_metadata 0:s:0 -c copy output.mp4
Điều này sẽ lấy siêu dữ liệu từ luồng dữ liệu đầu tiên (thường là luồng video) và sử dụng siêu dữ liệu đó để thay thế siêu dữ liệu toàn cầu của tệp chứa. Điều này hoạt động vì hầu hết thời gian, các luồng dữ liệu không có siêu dữ liệu có ý nghĩa được viết cho chúng; tuy nhiên, đôi khi họ làm như vậy và bạn muốn loại bỏ hoàn toàn siêu dữ liệu đó. Thật không may, cách duy nhất tôi có thể nghĩ ra để làm điều này là sử dụng một đường ống và hai quy trình avconv.
avconv -i input.mp4 -f wav - | avconv -i - -i input.mp4 -map 1 -map_metadata 0 -c copy output.mp4
Điều này lợi dụng thực tế là các tệp WAV không thể chứa siêu dữ liệu (vì định dạng đã được tạo trước khi tồn tại thẻ siêu dữ liệu).
Cả hai phương pháp này đều làm trống tất cả siêu dữ liệu trên một tệp mà tôi vừa kiểm tra chúng - tất cả những gì exiftool
được báo cáo là thông tin về codec và avprobe báo cáo không có siêu dữ liệu cho tôi. Sử dụng một đường ống cho việc này khá xấu, và phương pháp đầu tiên sẽ hoạt động trong 99% trường hợp, do đó nên được ưu tiên.
mov
hoặcmp4
tệp, ngày tạo là một trường số nguyên trong tiêu đề phim và tiêu đề theo dõi (được biểu thị bằng giây kể từ năm 1904). Mặc dù bạn có thể đặt nó thành 0 hoặc một số giá trị cố định khác, không có cách nào để xóa nó và vẫn có tệpmov
hoặc hợp lệmp4
.