Câu trả lời:
Tùy thuộc vào cách tệp gốc của bạn được mã hóa, có thể không giữ được kích thước tệp.
ffmpeg -i infile.avi youroutput.mp4
phải giữ nguyên kích thước khung hình và tốc độ trong khi tạo tệp mp4.
ffmpeg -i infile.avi
sẽ cung cấp cho bạn thông tin về tệp đầu vào của bạn - kích thước khung, codec được sử dụng, bitrate, v.v.
Bạn cũng có thể chơi với acodec
và vcodec
các tùy chọn khi bạn tạo đầu ra của mình. Cũng cần nhớ rằng các tệp mp4 và avi có thể sử dụng nhiều loại codec khác nhau và số dặm của bạn có thể thay đổi tùy theo loại codec bạn chọn.
Tôi đã rất quan tâm đến việc chuyển đổi tập tin avi sang mp4. Đọc bài viết của bạn, tôi nhớ lệnh ffmpeg này:
ffmpeg -i input.avi -strict -2 output.mp4
Lệnh -strict -2
được yêu cầu bởi codec AAC là thử nghiệm, nhưng hoạt động (libaac), nếu bạn thêm hai tham số đó. Các tập tin đầu ra là chất lượng cao theo mặc định.
Theo tôi hiểu, cần phải thay thế avi-container bằng mp4 một (chính thức - định dạng tệp phương tiện cơ sở ISO ISO / IEC 14496-12).
nếu bạn chạy lệnh sau:
ffmpeg -i input.avi -y output.mp4
Trong trường hợp như vậy, ffmpeg mã hóa lại các luồng cơ bản trong input.avi (thùng chứa cahnge và mã hóa lại là chế độ mặc định của ffmpeg ). Điều đáng chú ý là mã hóa lại có thể làm giảm chất lượng hình ảnh và / hoặc thính giác.
Do đó, bạn nên tắt mã hóa lại bằng các tùy chọn codec " c: v copy c: a copy ":
ffmpeg -i input.avi -c:v copy -c:a copy -y output.mp4
Trong trường hợp trên, ffmpeg chỉ thay đổi shell (container)
ffprobe -i infile.avi
thay vìffmpeg -i infile.avi
để nhận thông tin, vì kết quả sau này gây ra lỗi "Ít nhất một tệp đầu ra phải được chỉ định".