FFMPEG - Tổng hợp các lệnh xử lý video trên Linux
Trích xuất hình ảnh từ video, cắt ghép video
FFMPEG là thư viện hỗ trợ xử lý video rất phổ biến trên hệ điều hành Linux. Với những thao tác đơn giản như trích hình ảnh hay cắt video thì mình nên dùng các câu lệnh sẽ tiện hơn. Không cần thiết phải dùng những phần mềm có giao diện.
Video –> Ảnh: Trích hình ảnh từ video
$ ffmpeg -i 'video.mp4' -vf fps=8 '/output/img_%06d.jpg'
Với lệnh trên hình ảnh được trích ra từ video.mp4
sẽ theo format:
- img_0001.jpg
- img_0002.jpg
- img_0003.jpg
- …
Ảnh –> Video: Ghép ảnh thành video
$ ffmpeg -framerate 8 -f image2 -start_number 1 -i folder/img_%*.jpg -crf 10 -q:v 5 -pix_fmt yuv420p video.mp4
Giải thích:
- framerate: fps (khung hình trên giây)
- q:v: chất lượng video (1-31). Tốt nhất: 1 (dung lượng lớn nhất), tệ nhất: 31 (nhẹ nhất)
Lệnh cắt video
$ ffmpeg -i input.mp4 -ss 00:00:00 -to 00:05:00 -c copy output1.mp4
$ ffmpeg -i input.mp4 -ss 00:00:25 -to 00:01:12 -c copy output2.mp4
Lệnh nối video
$ nano mylist.txt
file '/path/to/file1.mp4'
file '/path/to/file2.mp4'
file '/path/to/file3.mp4'
$ ffmpeg -f concat -i mylist.txt -c copy output.mp4
$ ffmpeg -i 'concat:input1.mp4|input2.mp4' -codec copy output.mp4
Resize video
$ ffmpeg -i video1.mp4 -b:v 1M -filter:v scale=-1:720 -c:a copy video_720p.mp4
$ ffmpeg -i video1.mp4 -b:v 1M -filter:v -s 1280x720 -c:a copy video_720p.mp4
- -b:v càng lớn thể hiện chất lượng (bitrate càng nhỏ thì block càng to –> ảnh kém rõ). Bit rate thông thường video đẹp là 3M (3 triệu bit/s = 3000 kb/s)
Convert .mp4 sang .avi
$ ffmpeg -i input.mp4 output.avi
Speed up video
Note:
- 2X speed up = 1/2 = 0.5
- NX speed up = 1/N
$ ffmpeg -itsscale 0.5 -i input.mp4 -c copy output.mp4 # 2X speed up
Slow down video
Note:
- 2X slow down = 2
- NX slow down = N
$ ffmpeg -itsscale 2 -i input.mp4 -c copy output.mp4 # 2X slow down
Crop video (part of original resolution)
$ sudo apt install mencoder
$ mencoder -oac pcm -ovc x264 -vf crop=<WIDTH>:<HEIGHT>:<X-UPPER-LEFT>:<Y-UPPER-TOP> -o output.mp4 input.mp4
$ mencoder -oac pcm -ovc x264 -vf crop=524:1080:698:0 -o output.mp4 input.mp4