Vì lệnh trên cùng nó dùng chất lượng ảnh gốc của thím, rồi cộng dồn dung lượng lại (1 frame mỗi giây, ví dụ video 60s thì cộng dồn dung lượng 60 hình gốc).
Lệnh thứ 2 của thím là nó vẫn dùng ảnh gốc nhưng encode lại với CRF mặc định là 23 (CRF là chỉ số quyết định chất lượng của video, số từ 0-51, số càng nhỏ chất lượng càng cao nhưng dung lượng cũng sẽ càng lớn). Còn nhiều chỉ số khác nhưng cơ bản cũng như vậy, mặc định sẽ cho chất lượng trung bình.
https://trac.ffmpeg.org/wiki/Encode/H.264
Do vậy nên chất lượng mỗi frame hình sẽ ko bằng ảnh gốc, nhưng bù lại sẽ nhẹ hơn.
Lệnh thứ 3 của thím mình ko biết video
demtrang.mp4
của thím là video nào, mình đoán là video thím xuất ra ở lệnh thứ 2? Nếu như vậy là thím đang encode lại video vừa xuất ra đó 1 lần nữa (với CRF mặc định 23 tiếp tục) nên chất lượng sẽ tiếp tục bị giảm xuống, dung lượng cũng sẽ tiếp tục giảm.
Thím có thể kết hợp cả 2 lệnh thứ 2 và thứ 3 bằng
Code:
ffmpeg -r 1 -loop 1 -i demtrang.jpg -i demtrang.mp3 -acodec copy -shortest -vf scale=1920:1080,subtitles=demtrang.srt output.mp4
để nó ko encode lại 2 lần.
Thím có thể đọc link trên để dùng CRF hoặc các chỉ số khác phù hợp hơn nếu ko muốn dùng mặc định.