Cập nhật ngày 10/11/2021

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