10 thủ thuật bạn có thể làm với FFmpeg trên Linux

Tác giả Starlink, T.Ba 29, 2025, 01:55:10 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Bạn muốn làm nhiều hơn với thiết bị đầu cuối Linux? Bạn có thể không theo bản năng kết hợp video và dòng lệnh, nhưng với FFmpeg, bạn thực sự có thể làm được nhiều việc với tệp video chỉ bằng cách nhập một lệnh đơn giản vào thiết bị đầu cuối của mình.

Trong trường hợp bạn chưa nghe nói đến, FFmpeg là một công cụ dòng lệnh có thể xử lý mọi thứ liên quan đến phương tiện. Nó có sẵn trong hầu hết các kho lưu trữ của bản phân phối Linux, vì vậy bạn chỉ cần tìm và cài đặt gói để bắt đầu sử dụng.


Cho dù bạn muốn phát nhanh video, lấy thông tin hay thực hiện các thủ thuật chỉnh sửa video thú vị, FFmpeg đều có thể đáp ứng nhu cầu của bạn. Sau đây là một số điều hữu ích bạn có thể làm với FFmpeg trên máy Linux của mình.

1. Phát Video

Bạn có thể đã có trình phát video yêu thích và điều đó thật tuyệt. Nhưng đôi khi, bạn chỉ cần một cách nhanh chóng và đơn giản để xem một cái gì đó mà không cần mở một ứng dụng đồ họa đầy đủ. Bạn có thể làm điều đó bằng cách sử dụng trình phát tích hợp của FFmpeg, ffplay.

Ví dụ, để phát video, hãy mở terminal và chạy:

Mã nguồn [Chọn]
ffplay your_video_file.mp4

Video của bạn sẽ bật lên trong một cửa sổ riêng, sẵn sàng để phát. Bạn có thể điều khiển bằng các lệnh như "q" để thoát, "p" để tạm dừng và các phím mũi tên trái hoặc phải để tua nhanh hoặc tua lại.

Nếu bạn muốn phát video theo vòng lặp, hãy chạy:

Mã nguồn [Chọn]
ffplay -loop 0 your_video_file.mp4
Tùy chọn -loop 0 làm cho nó lặp vô thời hạn. Bạn có thể thay thế 0 bằng bất kỳ số nào để thiết lập số lần lặp lại.

2. Nhận thông tin phương tiện truyền thông

Thông thường, để có được thông tin tệp video, bạn phải tìm kiếm trong menu trong trình phát phương tiện hoặc thậm chí sử dụng một ứng dụng riêng. Nhưng với FFmpeg, bạn chỉ cần một lệnh để có được tất cả thông tin này.

Để lấy thông tin phương tiện, chỉ cần chạy:

Mã nguồn [Chọn]
ffmpeg -i your_video_file.mp4
Chỉ trong vài giây, bạn sẽ thấy thông tin đầy đủ, bao gồm codec, tốc độ bit, tốc độ khung hình, v.v.


Để biết thông tin chi tiết hơn về luồng video, âm thanh và phụ đề, hãy sử dụng ffprobe (một công cụ của FFmpeg):

Mã nguồn [Chọn]
ffprobe -show_streams –i your_video_file.mp4
Và để có kết quả đầu ra rõ ràng hơn ở định dạng JSON, hãy chạy:

Mã nguồn [Chọn]
ffprobe -v quiet -print_format json -show_format -show_streams your_video_file.mp4

Ngoài ra, tôi xin nói cho bạn biết rằng tất cả các lệnh này đều giúp bạn phân tích tệp video một cách hiệu quả mà không cần phải phát chúng.

3. Ghi lại màn hình của bạn

FFmpeg cũng có thể ghi lại màn hình của bạn. Cho dù bạn muốn chỉ cho ai đó cách thực hiện một việc gì đó trên Linux hay tạo bản demo nhanh, thì cũng không cần thêm chương trình ghi màn hình nào nữa.

Giả sử bạn muốn ghi lại toàn bộ màn hình trong 10 giây. Bạn có thể thực hiện bằng cách sau:

Mã nguồn [Chọn]
ffmpeg -f x11grab -video_size 1920x1080 -r 30 -i :0.0+0,0 -t 10 output.mp4
Lệnh này chụp màn hình nền của bạn ở độ phân giải 1920x1080 với tốc độ khung hình là 30 khung hình/giây. Ngoài ra, tùy chọn "-i :0.0+0,0" cho FFmpeg biết màn hình nào cần ghi lại. Ví dụ, trong trường hợp của chúng tôi, ":0.0" đề cập đến màn hình chính và "+0,0" có nghĩa là bắt đầu ghi từ góc trên bên trái.

Nếu hệ thống của bạn sử dụng Wayland thay vì Xorg, đôi khi bạn có thể gặp phải sự cố màn hình đen vì x11grab của FFmpeg hoạt động tốt nhất với Xorg. Chuyển sang phiên Xorg sẽ khắc phục được sự cố.

Nếu bạn không biết kích thước hoặc vị trí màn hình của mình, bạn có thể tìm hiểu bằng cách sau:

Mã nguồn [Chọn]
xdpyinfo | grep dimensions
Bạn nên biết rằng lệnh FFmpeg trước đó ghi lại màn hình máy tính để bàn của bạn mà không có bất kỳ âm thanh nào. Vì vậy, nếu bạn cũng muốn ghi lại âm thanh cùng với video, thì bạn cần phải chỉ định một thiết bị đầu vào âm thanh cùng với đầu vào video.

Ví dụ, bạn có thể sử dụng tùy chọn "-f alsa -i pulse" để ghi lại cả video và âm thanh màn hình:

Mã nguồn [Chọn]
ffmpeg -f x11grab -video_size 1920x1080 -r 30 -i :0.0+0,0 -f alsa -i default -t 10 output.mp4
Để ghi lại một cửa sổ cụ thể, lệnh FFmpeg phức tạp hơn một chút, nhưng để ghi lại toàn màn hình nhanh chóng, FFmpeg là lựa chọn tuyệt vời. Thêm vào đó, nếu bạn thích làm việc từ thiết bị đầu cuối, nó cung cấp cho bạn toàn quyền kiểm soát mọi khía cạnh của quá trình ghi.

4. Trích xuất hình ảnh từ video

Bạn đã bao giờ muốn trích xuất một khung hình duy nhất từ video—có thể để làm hình thu nhỏ hoặc để chụp một cảnh quay đẹp? FFmpeg giúp bạn thực hiện nhiệm vụ này rất đơn giản.

Ví dụ, giả sử bạn muốn trích xuất một hình ảnh mỗi giây từ video và lưu chúng dưới dạng tệp hình ảnh. Để thực hiện việc này, hãy chạy:

Mã nguồn [Chọn]
ffmpeg -i input.mp4 -r 1 image-%04d.jpg

Ở đây, tùy chọn "-r 1" đặt tốc độ chụp thành một hình ảnh mỗi giây. Nó trích xuất một khung hình từ mỗi giây của video. Bạn có thể điều chỉnh số này để chụp ảnh thường xuyên hơn hoặc ít hơn. Bạn cũng có thể thay đổi JPG thành PNG hoặc định dạng hình ảnh khác nếu cần.

5. Chuyển đổi hình ảnh thành video

FFmpeg không chỉ có thể trích xuất hình ảnh mà còn có thể lắp ráp một loạt hình ảnh thành video. Cho dù bạn muốn tạo trình chiếu, hoạt hình hay tua nhanh thời gian, FFmpeg đều đơn giản hóa quy trình.

Trước khi chuyển đổi, hãy đảm bảo rằng hình ảnh của bạn được đặt tên theo trình tự (ví dụ: image-0001.jpg, image-0002.jpg). Bây giờ, hãy chuyển đổi các hình ảnh tuần tự này thành video bằng lệnh sau:

Mã nguồn [Chọn]
ffmpeg -framerate 1 -i image-%04d.jpg -c:v libx264 -r30 output.mp4
Ở đây, chúng ta đặt tùy chọn tốc độ khung hình thành 1 FPS, nghĩa là nếu chúng ta có 5 hình ảnh và thích video dài 5 giây, tốc độ khung hình sẽ là 1. Bạn có thể điều chỉnh giá trị tốc độ khung hình để tăng tốc hoặc làm chậm video.

Lệnh trước đó chuyển đổi hình ảnh thành video mà không cần thêm nhạc. Nhưng nếu bạn muốn đưa nhạc vào video thì sao? Chạy lệnh này, thay thế "music.mp3" bằng tệp âm thanh bạn muốn:

Mã nguồn [Chọn]
ffmpeg -framerate 1 -i image_%04d.jpg -i music.mp3 -c:v libx264 -r30 -shortest slideshow.mp4
Ở đây, tùy chọn -shortest làm cho video dài bằng đầu vào ngắn hơn. Vì vậy, nếu âm thanh dài hơn trình chiếu, video sẽ khớp với độ dài của trình chiếu.

5. Chuyển đổi Video sang MP3 hoặc GIF

Một trong những tính năng mạnh nhất của FFmpeg là chuyển đổi video sang các định dạng khác nhau, chẳng hạn như chuyển đổi video thành MP3 hoặc tạo hoạt ảnh GIF từ video.

Để trích xuất âm thanh từ video, hãy sử dụng tùy chọn -vn, tùy chọn này buộc FFmpeg phải loại bỏ luồng video và chỉ chuyển đổi âm thanh sang MP3:

Mã nguồn [Chọn]
ffmpeg -i input.mp4 -vn -acodec libmp3lame output.mp3
Bạn cũng có thể đổi output.mp3 thành output.wav hoặc định dạng âm thanh khác nếu cần.

Để chuyển đổi video sang GIF, hãy sử dụng:

Mã nguồn [Chọn]
ffmpeg -i sample_video.mp4 output.gif
Bạn cũng có thể trích xuất các phần cụ thể của video và chuyển đổi chúng thành GIF bằng cách sau:

Mã nguồn [Chọn]
ffmpeg -ss 30.0 -t 2.1 -i sample_video.mp4 output.gif
Lệnh này cắt bớt 2,1 giây từ phần đầu của thời lượng 00:30 của video và chuyển đổi thành GIF.

6. Thêm phụ đề vào phim

Việc thêm phụ đề vào phim có thể rất hữu ích, đặc biệt là khi xem nội dung bằng ngôn ngữ khác. FFmpeg đơn giản hóa quá trình thêm phụ đề vào video của bạn.

Đầu tiên, hãy lấy một tệp phụ đề, thường có phần mở rộng SRT. Ví dụ, nếu bạn có tệp phụ đề (như subtitles.srt) và video (input.mp4), bạn có thể mã hóa cứng phụ đề vào video bằng cách sử dụng:

Mã nguồn [Chọn]
ffmpeg -i input.mp4 -vf "subtitles=subtitles.srt" output.mp4
Lệnh này nhúng phụ đề vĩnh viễn, đảm bảo phụ đề luôn hiển thị và không thể tắt được.

Nếu bạn thích phụ đề tùy chọn mà người xem có thể bật hoặc tắt, hãy sử dụng:

Mã nguồn [Chọn]
ffmpeg -i input.mp4 -i subtitles.srt -c copy -c:s mov_text output.mp4
Lệnh này giữ phụ đề thành một bản nhạc riêng biệt, giữ nguyên chất lượng video gốc.

7. Xây dựng lại chỉ mục của video mà không cần chuyển mã

Đôi khi video có thể bị lỗi—nó có thể bị bỏ qua, đóng băng hoặc ngăn tua nhanh hoặc tua lại. Thông thường, sự cố này phát sinh từ chỉ mục video bị hỏng. Để khắc phục sự cố này, bạn có thể cần xây dựng lại chỉ mục mà không cần mã hóa lại video.

May mắn thay, FFmpeg thường có thể sửa chỉ mục mà không cần thay đổi chính video. Quá trình này, được gọi là remuxing, diễn ra nhanh vì nó giữ nguyên chất lượng video và âm thanh gốc trong khi sửa cấu trúc tệp.

Để xây dựng lại chỉ mục video, hãy chạy:

Mã nguồn [Chọn]
ffmpeg -i input.mp4 -c copy -copyts output.mp4
Tại đây, tùy chọn -c copy hướng dẫn FFmpeg sao chép luồng video và âm thanh chính xác như hiện tại, giữ nguyên chất lượng và tăng tốc quá trình. Tùy chọn -copyts đảm bảo thông tin thời gian được sao chép chính xác, điều này rất quan trọng để phát lại mượt mà.

Cách tiếp cận này hữu ích để kiểm tra và sửa chữa tệp video của bạn một cách nhanh chóng. Tuy nhiên, nếu sự cố vẫn tiếp diễn, video có thể bị hỏng nghiêm trọng.

9. Thay đổi kích thước video

Thay đổi kích thước video là một trong những tính năng hữu ích nhất của FFmpeg. Bạn có thể dễ dàng điều chỉnh kích thước video cho phương tiện truyền thông xã hội, màn hình di động hoặc tối ưu hóa lưu trữ. Video nhỏ hơn chiếm ít dung lượng hơn, tải lên nhanh hơn và hoạt động tốt hơn trên các kết nối chậm hơn.

Để thu nhỏ video theo kích thước cụ thể (ví dụ: 1280x720), hãy sử dụng:

Mã nguồn [Chọn]
ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4
Nếu bạn muốn FFmpeg tự động duy trì tỷ lệ khung hình, hãy chỉ định một chiều hoặc sử dụng biểu thức:

Mã nguồn [Chọn]
ffmpeg -i input.mp4 -vf scale=640:-1 output.mp4
Điều này đặt chiều rộng thành 640 pixel và FFmpeg tính toán chiều cao phù hợp để giữ nguyên tỷ lệ khung hình. Tuy nhiên, lưu ý rằng việc thu nhỏ có thể làm giảm chất lượng, vì vậy hãy chọn độ phân giải cẩn thận.

10. Tỉa và Cắt Video

Việc cắt video cho phép bạn chỉ trích xuất các phần cần thiết mà không ảnh hưởng đến chất lượng. Điều này hoàn hảo để loại bỏ phần intro, outro không mong muốn hoặc bất kỳ lỗi nào.

Ví dụ, để trích xuất một phân đoạn dài 20 giây bắt đầu từ giây thứ 10 trong video, hãy chạy:

Mã nguồn [Chọn]
ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:30 -c copy output_trimmed.mp4
Ở đây, "-ss 00:00:10" yêu cầu FFmpeg bắt đầu ở mốc 10 giây, trong khi "-to 00:00:30" dừng video ở 30 giây. Ngoài ra, tùy chọn "-c copy" đảm bảo rằng video và âm thanh được sao chép mà không cần mã hóa lại, giúp quá trình này nhanh hơn nhiều trong khi vẫn giữ nguyên chất lượng gốc.

Cắt bỏ các cạnh không cần thiết hoặc phóng to phần quan trọng nhất của video. Để cắt video thành 640x480 pixel, bắt đầu từ góc trên cùng bên trái, hãy thực hiện như sau:

Mã nguồn [Chọn]
ffmpeg -i input.mp4 -vf "crop=640:480:0:0" output_cropped.mp4
Bộ lọc cắt xén lấy bốn giá trị: chiều rộng, chiều cao và tọa độ x và y cho vị trí bắt đầu cắt xén. Trong trường hợp này, chiều rộng và chiều cao được đặt thành 640x480 và 0:0 đảm bảo việc cắt xén bắt đầu từ góc trên cùng bên trái của video gốc.

Bằng cách thực hành và học các thủ thuật FFmpeg này, bạn có thể dễ dàng tăng năng suất và hợp lý hóa khối lượng công việc của mình. Và hãy nhớ rằng—đây chỉ là khởi đầu. Có rất nhiều thứ trong FFmpeg đang chờ được khám phá, vì vậy hãy đắm mình vào và tiếp tục thử nghiệm!