Cách dùng lệnh FFmpeg để xử lý âm thanh và video trên Linux

Chia sẻ kiến thức 12/08/2022

FFmpeg là một công cụ xử lý phương tiện dòng lệnh nổi tiếng. Dưới đây là hướng dẫn cách cài đặt và sử dụng nó để sửa đổi các tệp âm thanh và video trên Linux.

Hầu như bất kỳ ai làm việc với video đều từng nghe nói về FFmpeg. Nếu bạn chưa biết, thì đây là một chương trình mã nguồn mở và miễn phí để chuyển đổi định dạng và thay đổi codec của nó.

FFmpeg hỗ trợ gần như tất cả các codec âm thanh/video (H.264, H.265, VP8, VP9, ​​AAC, OPUS, v.v.), các định dạng tệp (MP4, FLV, MKV, TS, WEBM, MP3, v.v.), và thậm chí các giao thức phát trực tuyến (HTTP, RTMP, RTSP, HLS, v.v.).

Đây là cách cài đặt và sử dụng FFmpeg để xử lý các tệp âm thanh và video trên Linux.

Cài đặt trên Linux

FFmpeg là một công cụ mã nguồn mở và miễn phí có sẵn trong kho lưu trữ mặc định của hầu hết mọi bản phân phối Linux lớn. Bạn cũng có thể lấy mã nguồn miễn phí nếu muốn tự biên dịch.

# Debian
sudo apt install ffmpeg

# Fedora
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
sudo dnf -y install ffmpeg

# RHEL/CentOS
yum install ffmpeg ffmpeg-devel

# Arch Linux
pacman -S ffmpeg

Nếu quá trình cài đặt chạy suôn sẻ, bạn sẽ có thể thấy phiên bản FFmpeg khi sử dụng đối số -version.

ffmpeg -version

Nhận thông tin video

Bạn có thể xem thông tin của video bạn muốn chỉnh sửa với FFmpeg bằng cách sử dụng cờ -i:

ffmpeg -i example-video.mp4 -hide_banner

Ở đây, công việc của tham số -hide_banner là ẩn thông tin không cần thiết. Bạn có thể loại bỏ tham số này và xem sự khác biệt trong đầu ra.

Như bạn có thể thấy, bạn sẽ nhận được rất nhiều thông tin như loại codec video, ngày tạo, siêu dữ liệu và cấu trúc bộ mã hóa của video mẫu.

Chuyển đổi file video hoặc file âm thanh sang định dạng khác

Một trong những tính năng hữu ích nhất của FFmpeg là nó có thể chuyển đổi video hoặc âm thanh sang định dạng khác. Bạn có thể làm điều này với một dòng lệnh đơn giản.

MOV sang MP4

Bạn có thể chuyển đổi tệp video định dạng MOV sang MP4 bằng lệnh dưới đây:

ffmpeg -i input-mov-video.mov output-video.mp4

Đầu tiên, sử dụng tham số -i, viết tắt của input video (video đầu vào). Sau đó, nhập tệp bạn muốn chuyển đổi. Cuối cùng, nhập định dạng bạn muốn chuyển đổi sang. Bạn có thể đặt đầu ra bằng bất kỳ tên nào bạn muốn.

Trong khi FFmpeg đang chạy, nó sẽ hiển thị cho bạn những thay đổi mà nó đã thực hiện trên màn hình lệnh. Tệp đầu ra sẽ được lưu trữ trong thư mục làm việc hiện tại của bạn.

WAV sang MP3

Giống như với video, bạn có thể thực hiện các chuyển đổi tương tự cho các tệp âm thanh. Ví dụ: bạn có thể chuyển đổi tệp âm thanh WAV sang MP3 như sau:

ffmpeg -i example-wav.wav -vn -ar 48000 -ac 2 -b:a 256 output.mp3

Lệnh này có nhiều tham số hơn so với phương pháp chuyển đổi video, nhưng chúng không khó hiểu. Cụ thể: 

  • -vn: Đôi khi các tập tin âm thanh bạn nghe có hình ảnh. Những hình ảnh này thường bắt nguồn từ video. Nếu bạn không muốn những hình ảnh như vậy trong đầu ra, bạn có thể sử dụng tham số này.
  • -ar: Tham số này cho phép bạn đặt tần số âm thanh của tệp âm thanh bạn muốn chuyển đổi. Bạn có thể điều chỉnh chất lượng và tần số âm thanh với các giá trị như 8kHz, 44.1kHz hoặc 48kHz.
  • -ac: Bạn có thể đã từng nghe thấy các thuật ngữ mono và stereo trước đây. Tham số này có thể giúp bạn thiết lập số lượng kênh âm thanh.
  • -b: a: Tham số này cho phép bạn đặt tốc độ bit âm thanh mỗi giây. Kilobit càng cao thì chất lượng âm thanh càng cao.

Thao tác với âm thanh 

FFmpeg cũng có thể tách âm thanh khỏi video. Để làm điều này, chỉ cần sử dụng tham số -vn:

ffmpeg -i example-video.mp4 -vn output.mp3

Nếu bạn đã thành công trong việc tách âm thanh khỏi video, thì bây giờ bạn có thể thử xóa âm thanh khỏi video. Sự khác biệt ở đây là tham số -an. Bạn nên ghi nhớ thông số này nếu bạn muốn tắt bất kỳ âm thanh nào trong video:

ffmpeg -i example-video.mp4 -an output-mute.mp4

Xử lý kích thước video

Kích thước video đôi khi có thể là một điều phiền toái, đặc biệt là khi bạn muốn tải chúng lên một nơi nào đó. Bạn không cần phải tải xuống các chương trình để cắt chúng nữa vì FFmpeg có thể làm điều này cho bạn. Có một số thông số bạn cần biết về điều này:

  • -ss: đặt thời gian bắt đầu của clip
  • -to: chỉ định thời gian kết thúc của clip
  • -c: đặt codec cho clip của bạn
  • -t: đặt thời lượng của clip

Ví dụ: nếu bạn muốn cắt video, bạn có thể gõ: 

ffmpeg -i example-video.mp4 -ss 00:02:25 -to 00:03:50 -c copy output-trim.mp4

Bạn cũng có thể chỉ cắt hình ảnh bên trong video chứ không phải toàn bộ video:

ffmpeg -i example-video.mp4 -filter:v "crop=w:h:x:y" output-crop.mp4

Dưới đây là các tham số được sử dụng trong lệnh nói trên:

  • -filter: v : Tham số này chỉ định quy trình lọc bạn sẽ áp dụng cho video
  • crop: Tham số này để chỉ định rằng một thao tác cắt sẽ được thực hiện
  • w: h: x: y: các biến w, h, x và y lần lượt biểu thị chiều rộng, chiều cao và vị trí của hộp cắt

Chỉnh sửa video trên Linux

Việc chỉnh sửa video không chỉ dừng lại ở việc cắt. Đôi khi bạn cũng cần thay đổi tỷ lệ của video. Lệnh sau sẽ thay đổi kích thước video thành kích thước bạn muốn:

ffmpeg -i example-video.mp4 -vf scale=1920:1080 output-scale.mp4
  • -vf: Tham số này hoạt động giống như đối số -filter: v đã thấy ở trên
  • scale: cho phép bạn chỉ định các kích thước tỷ lệ bạn muốn trong đầu ra

FFmpeg cũng cho phép bạn kết hợp nhiều video. Hãy tưởng tượng bạn có nhiều clip được mã hóa bằng cùng một codec. Nhập danh sách video bạn muốn ghép thành tệp .txt. Sau đó, chạy lệnh sau:

ffmpeg -f concat -i my-video-list.txt -c copy sum-output.mp4

Tham số concat ở đây kết hợp các tệp của bạn. Cũng có thể xoay video bằng FFmpeg:

ffmpeg -i example-video.mp4 -vf "transpose=2" output-rotate.mp4
  • chuyển vị = 0 : Lật theo chiều dọc (mặc định)
  • chuyển vị = 1 : Xoay 90 độ theo chiều kim đồng hồ
  • chuyển vị = 2 : Xoay 90 độ ngược chiều kim đồng hồ
  • chuyển vị = 3 : Lật theo chiều dọc
Để xoay video 180 độ theo chiều kim đồng hồ, bạn cần chỉ định thông số chuyển vị hai lần:
ffmpeg -i example-video.mp4 -vf "transpose=2,transpose=2" output-rotate.mp4

FPS và GOP

Như bạn đã biết, FPS (frames per second) có nghĩa là khung hình trên giây. GOP (group of pictures, tạm dịch là nhóm ảnh) là khoảng cách giữa hai khung hình chính. FFmpeg có thể dùng để thay đổi FPS và GOP. Nếu bạn sử dụng lệnh dưới đây, FFmpeg sẽ thay đổi FPS ban đầu thành giá trị bạn đặt:

ffmpeg -i example-video.mp4 -vf "fps=60" output-fps.mp4

Đối với GOP, bạn có thể sử dụng tham số -g và đặt giá trị của nó thành bất kỳ giá trị nào bạn muốn. Lưu ý rằng việc đặt giá trị quá cao có thể gây ảnh hưởng đến các thuật toán chuyển tiếp của một số bộ mã hóa.

ffmpeg -i example-video.mp4 -g 200 output-gop.mp4

Tạo GIF động với FFmpeg

FFmpeg cũng có thể dùng để chuyển đổi video thành GIF động. Bạn có thể sử dụng một lệnh chuyển đổi đơn giản để thực hiện việc này:

ffmpeg -i example-video.mp4 output-gif.gif

Nhưng đôi khi, bạn có thể muốn tùy chỉnh GIF. Bạn có thể sử dụng các tham số khác nhau được thảo luận ở trên để làm điều này:

ffmpeg -ss 00:01:15 -i example-video.mp4 -to 10 -r 10 -vf scale=250:-1 output-gif.gif

Tham số -r ở đây có nghĩa là tốc độ khung hình. Như bạn có thể thấy, nhiều tùy chỉnh khác nhau có thể thực hiện được trong một dòng lệnh.

Trích xuất khung hình từ video

Ngoài việc chuyển đổi một hoặc nhiều hình ảnh thành video, bạn cũng có thể trích xuất khung hình từ video. Lệnh sau sẽ trích xuất một khung hình mỗi giây từ video đầu vào. Ngoài ra, những hình ảnh được trích xuất này sẽ có tên gồm hai chữ số như 01.jpeg , 02.jpeg , v.v. Nếu muốn, bạn cũng có thể thêm các thông số khác mà bạn đã học ở trên.

ffmpeg -i example-video.mp4 -r 1 image-%02d.jpeg

Bạn cũng có thể sử dụng các định dạng khác như PNG và BMP cho các hình ảnh được trích xuất.

Tại sao bạn nên sử dụng FFmpeg trên Linux?

Như bạn có thể thấy, FFmpeg có rất nhiều tác dụng. Bạn không cần phải có bất kỳ kiến ​​thức kỹ thuật hoặc kinh nghiệm với Linux cho việc này. Bạn có thể thực hiện các tác vụ xử lý video và âm thanh chỉ với một vài tham số. Hơn nữa, FFmpeg hoạt động rất tốt ngay cả trên các thiết bị cấp thấp.

Ngoài ra, các tính năng của FFmpeg không giới hạn ở trên. Khi bạn đọc tài liệu và hướng dẫn sử dụng, bạn có thể thấy phần mềm thực sự mạnh mẽ như thế nào. Ngay cả khi sử dụng tham số –help và lệnh man, bạn có thể biết thêm thông tin chi tiết về cách sử dụng FFmpeg. 

Vân Nguyễn

Dịch từ: https://www.makeuseof.com/ffmpeg-commands-linux/

Bình luận (
0
)

Graphic Noti Complete Course

Chúc mừng học viên

Hoàng Lê Tuấn Nam

Đã xuất sắc hoàn thành

Kỹ sư phần mềm cơ bản - Basic Software Engineer đạt học bổng 5%

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        

yêu cầu gọi lại

error: Content is protected !!