FFMPEG là một giải pháp hoàn chỉnh, đa nền tảng để ghi, chuyển đổi và phát trực tuyến âm thanh và video.
FFMPEG sử dụng giao diện dòng lệnh (CLI)
Trang chủ chính thức: ffmpeg.org
Cài đặt
Tải xuống: https://www.ffmpeg.org/download.html
Hướng dẫn sử dụng căn bản
Xem hướng dẫn sử dụng
Phải đọc qua bằng mọi giá
ffpmeg -h
Xem thông tin video
ffmpeg -i video.mp4
Xem các định dạng hỗ trợ
ffmpeg -formats
Chuyển đổi định dạng Video
Ví dụ chuyển đổi file video.mkv sang video.mp4
ffmpeg -i input.mkv -codec copy -c:a aac output.mp4
ffmpeg -i video.mkv -codec copy video.mp4
ffmpeg -i video.mkv video.mp4
Khuyên dùng cái đầu
Convert video sang audio
ffmpeg -i video.mp4 -vn -ab 320 audio.mp3
Thay đổi độ phân giải video
ffmpeg -i input.mp4 -filter:v scale=640:480 -c:a copy output.mp4 ffmpeg -i input.mp4 -s 640x480 -c:a copy output.mp4
Giảm dung lượng/chất lượng video
ffmpeg -i input.mp4 -vf scale=1280:-1 -c:v libx264 -preset veryslow -crf 24 output.mp4
Giảm dung lượng/chất lượng audio
ffmpeg -i input.mp3 -ab 128 output.mp3
Xóa audio stream (xóa nhạc)
ffmpeg -i input.mp4 -an output.mp4
Xóa video stream
ffmpeg -i input.mp4 -vn output.mp3
Xuất ảnh từ video
ffmpeg -i input.mp4 -r 1 -f image2 img-%3d.png
- -r – Frame rate. Số khung hình trên giây . Mặc định là 25.
- -f – Output format
- image-%2d.png – Tên file output. Trường hợp này các file output sẽ có tên: img-001.png, img-002.png, img-003.png,…
Thay đổi tỷ lệ khung hình
Thay đổi tỷ lệ khung hình sang 16:9
ffmpeg -i input.mp4 -aspect 16:9 output.mp4
Convert một phần cụ thể của video
Đôi khi, bạn có thể muốn convert chỉ một phần cụ thể của video sang định dạng khác. Ví dụ, lệnh sau sẽ convert 50 giây đầu tiên của file video.mp4 định dạng video.avi.
ffmpeg -i input.mp4 -t 50 output.avi
Tham số -t 50 có nghĩa là lấy 50 giây, bạn cũng có thể truyền vào thời gian với format hh.mm.ss
Tạo video với ảnh và file audio
ffmpeg -loop 1 -i inputimage.jpg -i inputaudio.mp3 -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4
Trim video/audio
Bạn muốn trim video với thời gian bắt đầu là phút thứ 1, thời lượng là 60 giây
ffmpeg -i input.mp4 -ss 00:01:00 -codec copy -t 60 output.mp4
- –s – Thời gian bắt đầu
- -t – Thời lượng
Tương tự với file audio
ffmpeg -i audio.mp3 -ss 00:01:54 -to 00:06:53 -c copy output.mp3
Chia video thành nhiều phần
Một số website chỉ cho phép upload video với thời lượng nhất định, bạn có thể chia nó thành nhiều phần như sau:
ffmpeg -i input.mp4 -t 00:00:30 -c copy part1.mp4 -ss 00:00:30 -codec copy part2.mp4
Ở đây, -t 00:00:30 nghĩa là part 1 của video sẽ kéo dài 30 giây. -ss 00:00:30 là thời gian bwats đầu cho phần tiếp theo. Điều đó có nghĩa là part 2 sẽ bắt đầu từ giây thứ 30 và sẽ tiếp tục cho đến hết video.
Nối nhiều video thành một
FFmpeg cũng có thể nối nhiều video thành một.
Đầu tiên, chúng ta sẽ tạo file video.txt với nội dung:
file 'part1.mp4' file 'part2.mp4'
Trong đó part1.mp4 và part2.mp4 là đường dẫn tới file muốn nối. Sau đó nối video bằng command:
ffmpeg -f concat -i video.txt -c copy output.mp4
Tương tự ta cũng có thể làm với audio.
Thêm subtitle cho video
Chúng ta có file sub với nội dung như sau, tên file subtitle.srt:
1 00:00:00,498 --> 00:00:02,827 - Here's what I love most about food and diet. 2 00:00:02,827 --> 00:00:06,383 We all eat several times a day, and we're totally in charge 3 00:00:06,383 --> 00:00:09,427 of what goes on our plate and what stays off.
Sử dụng command sau để thêm sub cho video:
fmpeg -vf subtitles=subtitle.srt output.mp4
Xem, test file video và audio
ffplay video.mp4
Xem file audio
ffplay audio.mp3
Tăng giảm tốc độ phát video
FFmpeg cho phép bạn thay đổi tốc độ phát video, ví dụ để tăng tốc độ phát:
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4
Giảm tốc độ phát
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4
Live stream video
Bạn có thể live stream một video, ví dụ mình live stream trên youtube
ffmpeg -re -i output.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/{stream_key}
- -f – Định dạng output. Dùng để live stream trên youtube hay để flv
- rtmp://a.rtmp.youtube.com/live2/{stream_key} – Stream url