(Vn-Z.vn) Ngày 21 tháng 12 Theo Wiki , FFmpeg là một dự án phần mềm mã nguồn mở và miễn phí, bao gồm bộ thư viện khổng lồ và chương trình để xử lý video, audio, multimedia files và streams. FFmpeg được thiết kế để xử lý dựa trên giao diện dòng lệnh đối với video và âm thanh, FFmegeg được sử dụng rộng rãi để chuyển định dạng, chỉnh sửa cơ bản (cắt và nối), chia tỷ lệ video, hiệu ứng hậu kỳ video và tuân thủ các tiêu chuẩn (SMPTE, ITU).
Kế hoạch phát hành
Khoảng 6 tháng một lần, dự án FFmpeg sẽ thực hiện một bản phát hành mới. Giữa các bản phát hành chính sẽ xuất hiện các bản sửa lỗi quan trọng nhưng không có tính năng mới. Lưu ý rằng các bản phát hành này dành cho các nhà phân phối và tích hợp hệ thống. Người dùng muốn tự biên dịch từ nguồn được khuyến khích sử dụng nhánh phát triển, đây là phiên bản duy nhất mà các nhà phát triển FFmpeg tích cực làm việc. Các nhánh phát hành chỉ chọn các thay đổi được chọn từ nhánh phát triển, do đó nhận được các bản sửa lỗi nhiều hơn và nhanh hơn, như các tính năng bổ sung và các bản vá bảo mật.
Tên của dự án được lấy cảm hứng từ chuẩn video MPEG, "FF" viết tắt của "fast forward ". Logo sử dụng mô hình ngoằn ngoèo cho thấy cách các MPEG video codecs xử lý entropy encoding.
FFmpeg là được ứng dụng rất nhiều trong các phần mềm xử lý audio và video, thư viện của nó là thành phần core của ứng dụng media player như VLC , cũng là thành phần core trong quá trình xử lý video của YouTube và iTunes khi lưu trữ file.
Bộ mã nguồn mở này đã được 20 năm phát triển. Xin chúc mừng.
Kế hoạch phát hành
Khoảng 6 tháng một lần, dự án FFmpeg sẽ thực hiện một bản phát hành mới. Giữa các bản phát hành chính sẽ xuất hiện các bản sửa lỗi quan trọng nhưng không có tính năng mới. Lưu ý rằng các bản phát hành này dành cho các nhà phân phối và tích hợp hệ thống. Người dùng muốn tự biên dịch từ nguồn được khuyến khích sử dụng nhánh phát triển, đây là phiên bản duy nhất mà các nhà phát triển FFmpeg tích cực làm việc. Các nhánh phát hành chỉ chọn các thay đổi được chọn từ nhánh phát triển, do đó nhận được các bản sửa lỗi nhiều hơn và nhanh hơn, như các tính năng bổ sung và các bản vá bảo mật.
Tên của dự án được lấy cảm hứng từ chuẩn video MPEG, "FF" viết tắt của "fast forward ". Logo sử dụng mô hình ngoằn ngoèo cho thấy cách các MPEG video codecs xử lý entropy encoding.
FFmpeg là được ứng dụng rất nhiều trong các phần mềm xử lý audio và video, thư viện của nó là thành phần core của ứng dụng media player như VLC , cũng là thành phần core trong quá trình xử lý video của YouTube và iTunes khi lưu trữ file.
Ảnh chụp màn hình Thiết kế bởi Fabrice Bellard Phát triển bởi Đội ngũ FFmpeg Phát hành lần đầu 20 tháng 12 năm 2000; 19 năm trước[1] Phiên bản ổn định 4.3.1 / 11 tháng 7 năm 2020; 4 tháng trước Repository git.ffmpeg.org/ffmpeg.git Viết bằng C và Hợp Ngữ Hệ điều hành Đa dạng, bao gồm Windows, macOS, và Linux (Thực thi được chương trình chỉ có sẵn từ các bên thứ ba, vì dự án chỉ phân phối mã nguồn) Nền tảng x86, ARM, PowerPC, MIPS, DEC Alpha, Blackfin, AVR32, SH-4, and SPARC; có thể biên dịch cho các dạng máy tính khác Ngôn ngữ có sẵn Tiếng Anh Thể loại Phần mềm miễn phí, Nền tảng đa phương tiện Giấy phép LGPL 2.1+, GPL 2+
Không thể phân phối nếu được biên dịch bằng bất kỳ phần mềm nào có giấy phép không tương thích với GPLL[5]Website ffmpeg.or
Bộ mã nguồn mở này đã được 20 năm phát triển. Xin chúc mừng.
20 câu lệnh FFmpeg cơ bản xử lý âm thanh, hình ảnh và video
Cú pháp cơ bản của một câu lệnh FFmepg:
ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...
Sau đây sẽ là một số câu lệnh FFmpeg quan trọng và hữu ích.
1. Xem thông tin file
ffmpeg -i video.mp4
Output
ffmpeg version N-93077-g075fd5ba45 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 8.2.1 (GCC) 20181201
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
libavutil 56. 26.100 / 56. 26.100
libavcodec 58. 46.100 / 58. 46.100
libavformat 58. 26.100 / 58. 26.100
libavdevice 58. 6.101 / 58. 6.101
libavfilter 7. 48.100 / 7. 48.100
libswscale 5. 4.100 / 5. 4.100
libswresample 3. 4.100 / 3. 4.100
libpostproc 55. 4.100 / 55. 4.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.26.100
Duration: 00:00:29.96, start: 0.000000, bitrate: 545 kb/s
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 590x394 [SAR 1:1 DAR 295:197], 218 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: mp3 (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 320 kb/s (default)
Metadata:
handler_name : SoundHandler
At least one output file must be specified
Nếu không muốn xem FFmpeg banner và thông tin khác, bạn thêm tham số -hide_banner
ffmpeg -i video.mp4 -hide_banner
Output
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.26.100
Duration: 00:00:29.96, start: 0.000000, bitrate: 545 kb/s
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 590x394 [SAR 1:1 DAR 295:197], 218 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: mp3 (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 320 kb/s (default)
Metadata:
handler_name : SoundHandler
At least one output file must be specified
2. Convert sang định dạng khác
FFmpeg là trình convert audio và video mạnh mẽ, do đó, nó có thể convert các multimedia files thành các định dạng khác nhau .
Ví dụ, convert file mp4 thành avi:
fmpeg -i video.mp4 video.avi
Tương tự, bạn có thể convert thành các định dạng khác.
Convert flv sang mpeg:
ffmpeg -i video.flv video.mpeg
Convert flv sang mpeg:
ffmpeg -i video.flv video.mpeg
Nếu bạn muốn giữ chất lượng của video, hãy sử dụng tham số -qscale 0.
ffmpeg -i input.webm -qscale 0 output.mp4
Convert nhạc mp3 sang wma:
ffmpeg -i audio.mp3 audio.wma
Convert ảnh png sang jpg:
ffmpeg -i image.png audio.jpg
....
Để kiểm tra danh sách các định dạng được hỗ trợ bởi FFmpeg, chạy:
ffmpeg -formats
FFmpeg hỗ trợ rất nhiều định dạng, vì vậy mình sẽ không show ouput ở đây.
3. Convert video sang audio
Để convert file video sang âm thanh, chỉ cần chỉ định định dạng
output là .mp3 hoặc .ogg hoặc bất kỳ định dạng âm thanh nào khác.
Command dưới đây sẽ convert video mp4 sang file âm thanh mp3
ffmpeg -i video.mp4 -vn -ab 320 audio.mp3
Ngoài ra có một số tham số khác cũng thường được dùng như sau:
ffmpeg -i video.mp4 -vn -ar 44100 -ac 2 -ab 320 -f mp3 audio.mp3
4. Thay đổi độ phân giải video (kích thước video)
- -vn - Disable chức nắc video recording trong output file.
- -ar - Tần số âm thanh của output. Các giá trị phổ biến được sử dụng là 22050, 44100, 48000 Hz.
- -ac - Audio channels.
*- ab - Audio bitrate.
*-f - Định dạng output. Trong trường hợp của chúng ta output là mp3.
Nếu bạn muốn đặt độ phân giải cụ thể cho video, bạn có thể sử dụng command sau:
ffmpeg -i input.mp4 -filter:v scale=1280:720 -c:a copy output.mp4
Hay
ffmpeg -i input.mp4 -s 1280x720 -c:a copy output.mp4
Câu lệnh phía trên sẽ output ra video với đội phân giải 1280 × 720.
Tương tự, để convert video thành kích thước 640 × 480, chạy:
ffmpeg -i input.mp4 -filter:v scale=640:480 -c:a copy output.mp4
Hay
ffmpeg -i input.mp4 -s 640x480 -c:a copy output.mp4
5. Giảm dung lượng/chất lượng video
Bạn muốn giảm dung lượng video để lưu trữ cho đỡ tốn bộ nhớ, command dưới đây sẽ giảm dung lượng của file output
ffmpeg -i input.mp4 -vf scale=1280:-1 -c:v libx264 -preset veryslow -crf 24 output.mp4
Lưu ý rằng chất lượng video sẽ giảm theo, tham số -crf càng cao thì chất lượng video càng thấp.
Bạn cũng có thể giảm một chút chất lượng của âm thanh video bằng cách thêm tham số
-ac 2 -c:a aac -strict -2 -b:a 128k
6. Giảm dung lượng/chất lượng audio
Bạn cũng có thể giảm dung lượng file nhạc bằng cách giảm audio bitrate xuống với tham số -ab.
Ví dụ bạn đang có file nhạc 320k, bạn giảm xuống 128k:
ffmpeg -i input.mp3 -ab 128 output.mp3
Audio bitrate thông dụng:
7. Xóa audio stream (xóa nhạc)
- 96kbps
- 112kbps
- 128kbps
- 160kbps
- 192kbps
- 256kbps
- 320kbps
Bạn không muốn giữ lại nhạc của video, thêm tham số -an
ffmpeg -i input.mp4 -an output.mp4
8. Xóa video stream
Tương tự giống xóa audio stream, ta có -vn dùng để xóa video stream
ffmpeg -i input.mp4 -vn output.mp3
9. Xuất ảnh từ video
Một tính năng khác rất hữu ích của FFmpeg là xuất ảnh từ video. Để xuất ảnh, chúng ta dùng command sau:
ffmpeg -i input.mp4 -r 1 -f image2 img-%3d.png
10. Thay đổi tỷ lệ khung hình
- -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 sang 16:9
ffmpeg -i input.mp4 -aspect 16:9 output.mp4
Tỷ lệ khung hình thường dùng
11. Convert một phần cụ thể của video
- 16:9
- 4:3
- 16:10
- 5:4
- 2:21:1
- 2:35:1
- 2:39:1
Đô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
12. Tạo video với ảnh và file audio
Trường hợp bạn muốn tạo video với 1 ảnh lặp đi lặp lại, và audio nền, command sẽ đơn giản như sau:
ffmpeg -loop 1 -i inputimage.jpg -i inputaudio.mp3 -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4
13. 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
Tương tự với file audio
- –s – Thời gian bắt đầu
- -t – Thời lượng
ffmpeg -i audio.mp3 -ss 00:01:54 -to 00:06:53 -c copy output.mp3
14. 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.
15. 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.
16. 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
17. Xem, test file video và audio
Xem video
ffplay video.mp4
https://images.viblo.asia/fda0d503-e157-4df4-b43a-2598d8daea10.PNG
Xem file audio
ffplay audio.mp3
https://images.viblo.asia/b677f340-504b-4e80-bb28-b58c263460e7.PNG
18. 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
19. 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}
20. Xem thông tin về phiên bản FFmpeg, hướng dẫn về các tham số
- -f - Định dạng output. Dùng để live stream trên youtube hay để flv
- rtmp://a.rtmp.youtube.com/live2/{stream_key} - Stream url
ffmpeg.exe -h
Nguồn https://viblo.asia/p/ffmpeg-va-20-cau-lenh-co-ban-xu-ly-am-thanh-hinh-anh-va-video-naQZRYBAKvx