Chỉ cần mux các hình ảnh
Bạn chỉ có thể mux các hình ảnh JPG để tạo video:
ffmpeg -framerate 30 -i input%03d.jpg -codec copy output.mkv
Lưu ý rằng nếu bạn bỏ qua -framerate
thì một mặc định -framerate 25
sẽ được áp dụng cho đầu vào.
Tối ưu hóa lossless
Bạn có thể sử dụng jpegtran
để thực hiện tối ưu hóa lossless trên mỗi khung có thể giúp tiết kiệm kích thước tệp đáng kể:
mkdir outputdir
for f in *.jpg; do jpegtran -optimize -copy none -perfect -v "$f" > "outputdir/$f"; done
Bây giờ mux với ffmpeg
như hình trên.
Kiểm tra xem nó thực sự là lossless
Các muxer framehash thể được sử dụng để so sánh băm độc đáo của mỗi khung để đảm bảo rằng kết quả là thực sự lossless:
$ ffmpeg -i input%03d.jpg -f framehash -
stream_index, packet_dts, packet_pts, packet_duration, packet_size, hash
0, 0, 0, 1, 460800, 29bcc2db3726c7dfec1826c5740f603f
0, 1, 1, 1, 460800, b5fdc23d93cbd043dc2b9290dc8378f0
0, 2, 2, 1, 460800, ee0709942f24b458fd2380d134dcb59d
...
$ ffmpeg -i output.mkv -map 0:v -f framehash -
stream_index, packet_dts, packet_pts, packet_duration, packet_size, hash
0, 0, 0, 1, 460800, 29bcc2db3726c7dfec1826c5740f603f
0, 1, 1, 1, 460800, b5fdc23d93cbd043dc2b9290dc8378f0
0, 2, 2, 1, 460800, ee0709942f24b458fd2380d134dcb59d
...
Trong các ví dụ trên, mỗi khung được liên kết cho đầu vào và đầu ra chia sẻ cùng một hàm băm đảm bảo rằng các khung giống hệt nhau và đầu ra không bị mất.
Cũng thấy