- Chuyển đổi và chỉnh sửa video và âm thanh thành thạo trong Linux với FFmpeg từ thiết bị đầu cuối sử dụng lệnh rõ ràng và cá nhân hóa.
- Khám phá các ví dụ toàn diện về việc thay đổi định dạng, điều chỉnh chất lượng, trích xuất bản nhạc hoặc làm việc với hình ảnh và phụ đề.
- Tìm hiểu cách tự động hóa các tác vụ xử lý và chuyển đổi đa phương tiện lặp đi lặp lại, tối ưu hóa quy trình làm việc của bạn trên Linux.
FFmpeg được coi là một trong những nền tảng xử lý đa phương tiện mạnh mẽ và linh hoạt nhất trên Linux, khiến nó trở nên cần thiết đối với những người tìm kiếm sự linh hoạt và khả năng kiểm soát tuyệt đối từ thiết bị đầu cuối. Mặc dù có sẵn các chương trình đồ họa, máy chơi game này vẫn đảm bảo độ chính xác, tốc độ và khả năng tự động hóa mọi loại tác vụ nghe nhìn. Với FFmpeg có thể chuyển đổi định dạng, điều chỉnh tệp cho phù hợp với thiết bị, trích xuất bản nhạc, cắt đoạn, sửa đổi chất lượng, quản lý phụ đề và nhiều chức năng khác, xử lý cả âm thanh và video. và thậm chí cả hình ảnh, tất cả đều chỉ bằng một vài lệnh được cấu trúc tốt.
Trong bài viết mở rộng này, chúng tôi đã biên soạn và viết lại chi tiết những thông tin toàn diện và nâng cao nhất từ các bài viết xếp hạng tốt nhất trong Google để chuyển đổi định dạng và thao tác với tệp bằng FFmpeg trên Linux. Ở đây bạn không chỉ tìm thấy các lệnh cơ bản mà còn cả Tricks, các thông số và ví dụ thực tế bao gồm mọi thứ từ cài đặt, chuyển đổi tệp hàng loạt, chỉnh sửa siêu dữ liệu và tối ưu hóa chất lượng, cho đến khắc phục sự cố phổ biến và các trường hợp nâng cao như tự động hóa, làm việc với phụ đề, khả năng tương thích với TV và đồng bộ hóa âm thanh và video.
FFmpeg là gì và tại sao nên sử dụng nó trên Linux?
FFmpeg là một tập hợp các chương trình và thư viện được phát triển để quản lý, chuyển đổi, truyền tải và phân tích các tập tin đa phương tiện. Ra đời dưới dạng phần mềm miễn phí, nó nổi bật vì khả năng tương thích với số lượng lớn codec và container. Mặc dù nó tồn tại cho Cửa sổ y Mac, sự tích hợp của nó vào thế giới Linux là điều huyền thoại: nhiều ứng dụng đồ họa sử dụng FFmpeg như một công cụ nội bộ và trong các máy chủ hoặc tập lệnh, nó là vô song.
Ưu điểm chính của FFmpeg là sức mạnh của thiết bị đầu cuối: Bạn có thể xử lý khối lượng dữ liệu lớn, tự động hóa quy trình làm việc và tùy chỉnh mọi khía cạnh kỹ thuật của tệp phương tiện. Tính linh hoạt của nó giúp ích cho cả người dùng mới, những người chỉ muốn thay đổi định dạng, và các chuyên gia cần điều chỉnh các thông số cụ thể cho từng tệp hoặc thực hiện hậu xử lý nâng cao.
Cài đặt FFmpeg trên Linux
Việc cài đặt FFmpeg rất đơn giản trên hầu hết các bản phân phối Linux. Nó thường được tìm thấy trong kho lưu trữ chính thức:
- Debian, Ubuntu và các dẫn xuất:
sudo apt install ffmpeg - Vòm, Manjaro:
sudo pacman -S ffmpeg - Fedora, CentOS, openSUSE:
sudo dnf install ffmpeg
Kiểm tra xem FFmpeg đã được cài đặt đúng chưa bằng cách chạy ffmpeg -version o which ffmpeg. Nếu lộ trình xuất hiện, bạn có thể bắt đầu làm việc.
Các khái niệm chính: codec, định dạng và container
Trước khi tìm hiểu sâu hơn về các lệnh, bạn nên hiểu một số khái niệm sau:
- Bộ giải mã: Thuật toán nén và giải nén âm thanh hoặc video. Ví dụ: h264, xvid, mp3, aac.
- Định dạng hoặc vùng chứa: Tệp nhóm các bản nhạc video, âm thanh, phụ đề và siêu dữ liệu. Ví dụ: mp4, mkv, avi, mov, webm.
- Thông số: Các tùy chọn cụ thể để điều chỉnh tốc độ bit, độ phân giải, fps, kênh âm thanh, v.v.
FFmpeg hỗ trợ nhiều sự kết hợp, nhưng kết quả phụ thuộc vào khả năng tương thích giữa codec và vùng chứa. Không phải mọi định dạng đều hỗ trợ mọi loại bản nhạc và không phải mọi cấu hình đều tương thích như nhau trên mọi thiết bị.
Cú pháp và cấu trúc lệnh FFmpeg cơ bản
Cấu trúc chung của bất kỳ lệnh FFmpeg nào là:
ffmpeg -i archivo_entrada archivo_salida
Một số điểm quan trọng:
- Các tùy chọn áp dụng cho tệp đầu vào hoặc đầu ra sau đây. Số lượng đơn hàng.
- Bạn có thể có nhiều tệp đầu vào và đầu ra, thao tác từng tệp bằng chỉ mục.
- Nếu không chỉ định tệp đầu ra, FFmpeg sẽ chỉ hiển thị thông tin trong bảng điều khiển, không tạo tệp mới.
- Các tùy chọn chung (ví dụ: mức độ chi tiết) được đưa vào đầu.
Ví dụ, để chuyển đổi tệp AVI sang MP4:
ffmpeg -i video.avi video.mp4
Và nếu bạn muốn thiết lập một tham số cụ thể, chẳng hạn như tốc độ bit video là 2500 kb/giây và tốc độ bit âm thanh là 192 kb/giây:
ffmpeg -i video.avi -b:v 2500k -b:a 192k video_final.mp4
Các lệnh cần thiết để chuyển đổi định dạng
Thay đổi định dạng của video hoặc âm thanh
- Từ MP4 sang AVI:
ffmpeg -i entrada.mp4 salida.avi - Từ MKV sang MP4:
ffmpeg -i original.mkv convertida.mp4 - Từ AVI sang MPG (MPEG):
ffmpeg -i video.avi video.mpg - Từ FLV sang MPEG:
ffmpeg -i video.flv video.mpeg - Từ MOV sang MP4:
ffmpeg -i archivo.mov resultado.mp4
Định dạng đầu ra chỉ được xác định bằng cách thay đổi phần mở rộng, nhưng nếu bạn muốn áp dụng codec hoặc một số tính năng nhất định, hãy thêm các tham số cần thiết:
ffmpeg -i entrada.mov -c:v libx264 -c:a aac salida.mp4
Chuyển đổi âm thanh giữa các định dạng
- Từ WAV sang MP3:
ffmpeg -i cancion.wav nueva.mp3 - Từ WMA sang MP3:
ffmpeg -i audio.wma -f mp3 -ab 192 audio.mp3 - Từ FLAC sang OGG:
ffmpeg -i original.flac destino.ogg
Bạn cũng có thể thay đổi các thông số như codec, tốc độ bit, kênh hoặc lấy mẫu:
ffmpeg -i sonido.flac -acodec libmp3lame -ab 128k -ar 44100 nuevo.mp3
Ví dụ thực tế: chuyển đổi nhiều tập tin
Để chuyển đổi hàng loạt các tệp trong một thư mục, hãy sử dụng vòng lặp trong bash:
for archivo in *.avi; do
ffmpeg -i "$archivo" "${archivo%.avi}.mp4"
done
Thao tác này sẽ chuyển đổi tất cả các tệp AVI trong thư mục thành tệp MP4.
Kiểm soát chất lượng và điều chỉnh các thông số chính
Tốc độ bit video và âm thanh
- Lội:
-b:v 3000k(3000 kbps) - Audio:
-b:a 192k(192 kbps)
Bạn có thể điều chỉnh chất lượng tùy theo mục đích sử dụng. Ví dụ, đối với di động Bạn có thể giảm độ phân giải và tốc độ bit:
ffmpeg -i entrada.mkv -vf scale=1280:720 -b:v 1500k salida.mp4
Và đối với âm thanh nhẹ hơn:
ffmpeg -i cancion.wav -b:a 96k cancion_compacta.mp3
Thay đổi độ phân giải và tỷ lệ khung hình
- Để áp dụng độ phân giải đầu ra cụ thể:
ffmpeg -i entrada.mp4 -s 1280x720 salida_720p.mp4 - Để thay đổi tỷ lệ khung hình:
ffmpeg -i entrada.mp4 -aspect 16:9 salida_16_9.mp4
Đôi khi một số thiết bị nhất định yêu cầu định dạng pixel cụ thể, chẳng hạn như TV LG cần -pix_fmt yuv420p: thêm về khả năng tương thích pixel.
Thay đổi tốc độ khung hình mỗi giây (FPS)
Để thay đổi hoặc áp dụng số FPS:
ffmpeg -i original.mp4 -r 30 salida_30fps.mp4
Hãy nhớ rằng việc thay đổi độ phân giải hoặc tốc độ khung hình không cải thiện chất lượng ban đầu, mặc dù điều này có thể cần thiết để đảm bảo khả năng tương thích.
Trích xuất thông tin và phân tích tập tin
Trước khi chuyển đổi, điều quan trọng là phải biết các đặc điểm của tệp:
ffmpeg -i archivo.ext
Thao tác này sẽ hiển thị codec, thời lượng, chất lượng, kênh và siêu dữ liệu trong bảng điều khiển.
Nếu bạn muốn đầu ra sạch hơn, hãy thêm -hide_banner: Tìm hiểu thêm về phân tích và siêu dữ liệu.
ffmpeg -hide_banner -i archivo.ext
Để phân tích toàn diện và có thể tùy chỉnh, hãy sử dụng ffprobe: Tìm hiểu thêm về ffprobe và phân tích nâng cao.
ffprobe -i archivo.ext -print_format json -show_format -show_streams
Bằng cách này, bạn sẽ có được tất cả thông tin được cấu trúc theo JSON.
Chỉnh sửa và xử lý nâng cao các tập tin đa phương tiện
Chỉnh sửa siêu dữ liệu
- Xuất siêu dữ liệu từ tệp MP3:
ffmpeg -i cancion.mp3 -f ffmetadata metadata.txt - Sửa đổi và nhập siêu dữ liệu:
ffmpeg -i original.mp3 -metadata artist='Nuevo Artista' -acodec copy salida.mp3
Bạn có thể chỉnh sửa thông tin như nghệ sĩ, album, thể loại, năm, bản nhạc, v.v. Thích hợp để sắp xếp nhạc của bạn hoặc điều chỉnh cho phù hợp với những người chơi khó tính (ví dụ: Apple).
Trích xuất các bản âm thanh hoặc xóa âm thanh/video
- Chỉ trích xuất âm thanh mà không mã hóa lại:
ffmpeg -i original.avi -vn -acodec copy solo_audio.mp3 - Trích xuất âm thanh đã chuyển đổi sang định dạng khác (ví dụ: từ video):
ffmpeg -i video.mp4 -q:a 0 -map a solo_audio.mp3 - Xóa tất cả các bản âm thanh khỏi video:
ffmpeg -i original.avi -map 0 -map -0:a -c copy sin_audio.avi - Xóa tất cả các luồng âm thanh ngoại trừ những luồng cụ thể:
ffmpeg -i original.avi -map 0 -map -0:a:3 -map -0:a:6 -c copy con_dos_streams.avi - Chỉ trích xuất một bản âm thanh cụ thể:
ffmpeg -i original.avi -map 0:a:2 -c copy solo_pista2.avi
Trích xuất hình ảnh hoặc tạo video từ hình ảnh
- Trích xuất tất cả các khung hình thành hình ảnh:
ffmpeg -i video.mp4 imagen%d.jpg - Trích xuất một khung hình mỗi giây:
ffmpeg -i video.mp4 -vf fps=1 imagen%d.jpg - Chỉ trích xuất các khung hình chính:
ffmpeg -i video.avi -vf "select=eq(pict_type\,I)" -vsync vfr imagen%d.jpg - Tạo video từ một chuỗi hình ảnh:
ffmpeg -i imagen%d.jpg video.avi - Tạo video có tốc độ khung hình tùy chỉnh:
ffmpeg -framerate 1 -i img%03d.png -r 25 -pix_fmt yuv420p salida.mp4
Chuyển đổi video thành GIF động
FFmpeg cho phép bạn chuyển đổi một đoạn video clip thành ảnh GIF động, hữu ích cho meme và phương tiện truyền thông xã hội:
ffmpeg -i original.mp4 -vf "scale=320:-1" animado.gif
Để có chất lượng cao hơn, trước tiên hãy trích xuất các khung hình và sử dụng một công cụ như gifski:
ffmpeg -i original.mp4 frame%04d.png
gifski -o salida.gif frame*.png
Chuyển đổi giữa độ phân giải 4K, FullHD, HD…
- Từ 4K đến FullHD (thay đổi container):
ffmpeg -i 4k.mkv -vf scale=1920:1080 -q:a 0 -q:v 0 1080p.avi - Từ FullHD đến HD:
ffmpeg -i fullhd.mkv -vf scale=1280:720 -b:v 2000k hd.mp4 - Từ FullHD đến 4K:
ffmpeg -i 1080p.mkv -vf scale=3840:-1 4k.mkv
Chỉnh sửa các đoạn: cắt, nối, cắt xén và kết hợp các tệp
Cắt một đoạn video hoặc âm thanh
Để trích xuất một phần cụ thể của tệp:
ffmpeg -ss 00:00:30 -t 00:00:15 -i original.mp4 -c copy fragmento.mp4
Đoạn này cắt từ giây thứ 30, kéo dài trong 15 giây. Nếu bạn muốn xác định kết thúc thay vì thời lượng, hãy sử dụng -to:
ffmpeg -ss 00:00:35 -to 00:01:05 -i original.mp4 -c copy fragmento.mp4
Bạn cũng có thể cắt từ đầu đến một điểm:
ffmpeg -t 00:01:36 -i original.mp4 -c copy recortado.mp4
Ghép nhiều video thành một
Phương pháp đáng tin cậy nhất là thông qua danh sách tập tin và lọc concat: Tìm hiểu thêm về việc nối các tệp với FFmpeg
- Tạo một tệp văn bản (ví dụ:
lista.txt) với tên của các video:
tập tin 'part1.mp4' tập tin 'part2.mp4'
- Chạy:
ffmpeg -f concat -safe 0 -i lista.txt -c copy resultado.mp4
Phương pháp này nhanh và không nén lại, nhưng các video phải có codec giống hệt nhau.
Kết hợp âm thanh và video từ các tập tin khác nhau
Bạn có thể ghép một tệp âm thanh với một tệp video:
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -strict experimental final.mp4
Để thay thế bản âm thanh của video:
ffmpeg -i video.mp4 -i nuevo_audio.mp3 -map 0:v -map 1:a -c copy video_con_nuevo_audio.mp4
Tự động hóa: Chuyển đổi hàng loạt và Viết kịch bản
Một trong những điểm mạnh của FFmpeg là tự động hóa các quy trình bằng cách sử dụng các tập lệnh bash. Bạn có thể thay đổi định dạng của hàng trăm tệp chỉ bằng một vài dòng lệnh:
IFS=$'\n'
for i in *.webm; do ffmpeg -i "$i" "${i/%.webm/.mp3}"; done; unset IFS
Với các vòng lặp tương tự, bạn có thể chuyển đổi .flv sang .ogg hoặc bất kỳ kết hợp nào khác. Hãy nhớ rằng trong những cái tên có khoảng trắng, việc sử dụng IFS Nó là cơ bản.
Sửa lỗi và khả năng tương thích
Sửa chữa các tập tin có vấn đề
Một số video có thể không hoạt động bình thường trên các thiết bị như Smart TV. Giải quyết vấn đề này bằng cách tạo một bản sao trong FFmpeg mà không cần mã hóa lại:
ffmpeg -i video_orig.avi -c:v copy -c:a copy reparado.avi
Nếu có vấn đề với độ phân giải, bạn có thể buộc -vf "setdar=16:9,setsar=1:1" để thiết lập tỷ lệ khung hình phù hợp. Thông tin thêm về khả năng tương thích với các định dạng và thiết bị khác nhau có sẵn tại công cụ chuyển đổi đĩa ảo.
Tối ưu hóa để có khả năng tương thích tối đa
Nếu bạn cần tệp MKV hoạt động trên hầu hết các TV, hãy sử dụng:
ffmpeg -i original.mkv -c:a libmp3lame -pix_fmt yuv420p compatible.mkv
Đôi khi codec âm thanh có thể gây ra sự cố, vì vậy hãy chọn MP3 hoặc AAC để có khả năng tương thích tối đa.
Các tác vụ và hoạt động nâng cao khác
Trích xuất và thêm phụ đề
- Chuyển đổi phụ đề từ .vtt sang .ass:
ffmpeg -i subtitulos.vtt salida.ass - Thêm phụ đề vào video:
ffmpeg -i video.mp4 -i subtitulos.srt -map 0 -map 1 -c copy -c:v libx264 -crf 23 -preset veryfast salida.mkv
Xóa phụ đề và các luồng khác
ffmpeg -i entrada.mkv -map 0:v -map 0:a -c copy solo_video_audio.mkv
Thêm hình mờ hoặc logo
Bạn có thể thêm hình ảnh (ví dụ: PNG có độ trong suốt) vào bất kỳ góc nào:
ffmpeg -i video.mp4 -i logo.png -filter_complex "overlay=10:10" salida.mp4
Để đặt logo ở góc dưới bên phải:
ffmpeg -i video.mp4 -i logo.png -filter_complex "overlay=W-w-10:H-h-10" salida.mp4
Điều chỉnh âm lượng hoặc xóa âm thanh
- Tăng thể tích bằng cách nhân x3.5:
ffmpeg -i entrada.mkv -filter:a "volume=3.5" -c:v copy -acodec mp3 salida.mkv - Loại bỏ tiếng ồn xung quanh (cần có sox):
Đầu tiên trích xuất đoạn nhiễu
ffmpeg -i entrada.mp3 -ss 00:00:00 -t 1 ruido.mp3
Sau đó:
sox entrada.mp3 limpio.mp3 noisered noise.prof 0.21
Đồng bộ hóa âm thanh và video
Nếu bạn phát hiện sự mất đồng bộ, hãy trì hoãn âm thanh hoặc video với -itsoffset o -af adelay:
ffmpeg -itsoffset 1.7 -i video.mkv -i video.mkv -map 0:0 -map 1:1 -acodec copy -vcodec copy sincronizado.mkv
Trong những trường hợp đơn giản hơn, để trì hoãn âm thanh 1.7 giây:
ffmpeg -i video1.webm -af "adelay=1700|1700" -vcodec copy video_sincronizado.webm
Nối các video có codec hoặc định dạng khác nhau
Khi các tập tin không có cùng codec và tham số, tốt nhất là mã hóa lại chúng trước hoặc sử dụng concat với chuyển mã. Bạn cũng có thể kiểm tra .
ffmpeg -f concat -i lista.txt -c:v libx264 -c:a aac -strict experimental salida.mp4
Xoay video
Để xoay video 90 độ sang phải:
ffmpeg -i original.mov -vf "transpose=1" -c:a copy rotado.mov
Đối với 180 độ:
ffmpeg -i original.mov -vf "transpose=2,transpose=2" -c:a copy rotado.mov
Lặp lại một video
ffmpeg -stream_loop 2 -i original.mp4 -c copy loop.mp4
Con số biểu thị số lần lặp lại; sử dụng -1 cho vô cực.
Ổn định video rung
Đối với video không ổn định:
- Phát hiện chuyển động:
ffmpeg -i tembloroso.avi -vf vidstabdetect=stepsize=6:shakiness=3:accuracy=9:result=vectors.trf -f null - - Sửa video:
ffmpeg -i tembloroso.avi -vf vidstabtransform=input=vectors.trf:zoom=1:smoothing=30,unsharp=5:5:0.8:3:3:0.4 -vcodec libx264 -preset slow -tune film -crf 18 -acodec copy corregido.avi
Tốc độ phát lại
Để tăng tốc hoặc làm chậm video:
- Tăng tốc x2:
ffmpeg -i video.mpg -vf "setpts=0.5*PTS" rapido.mpg - Giảm tốc độ x4:
ffmpeg -i video.mpg -vf "setpts=4.0*PTS" lento.mpg
Quay video từ máy tính để bàn hoặc phát trực tuyến
- Ghi lại màn hình nền (FullHD) và âm thanh:
ffmpeg -f alsa -i default -f x11grab -s 1920x1080 -r 30 -i :0.0 -preset ultrafast -vcodec libx264 -tune zerolatency -f mpegts tcp://IP_DESTINO:4444 - Ghi lại từ webcam:
ffmpeg -f v4l2 -i /dev/video0 -preset ultrafast salida.webm
Tự động hóa việc chỉnh sửa hàng loạt và các tác vụ lặp đi lặp lại
Kết hợp FFmpeg vào các tập lệnh bash, mãng xà hoặc bất kỳ ngôn ngữ nào xử lý các quy trình chuyển đổi, đổi tên và xử lý hàng trăm tệp cùng một lúc. Ví dụ về cắt tự động bằng cách sử dụng tệp có danh sách tác vụ và kịch bản sẽ duyệt toàn bộ thư mục và thực thi các lệnh thích hợp cho từng tệp khi cần.
Tự động thay đổi nhiều định dạng tập tin
Sử dụng vòng lặp hoặc tập lệnh tùy chỉnh. Ví dụ, để chuyển đổi tất cả các tệp .wav trên CD sang MP3 và lưu chúng vào một thư mục:
cd /ruta/al/cd
mkdir ~/MP3s
IFS=$'\n'
for i in *.wav; do ffmpeg -i "$i" ~/MP3s/"${i/%.wav/.mp3}"; done; unset IFS
Trường hợp nâng cao: chuyển đổi nội dung DVD, Blu-ray hoặc ISO
- Gắn ảnh ISO vào hệ thống của bạn.
- Xác định các đoạn video (thường là .VOB đối với DVD, .m2ts đối với BluRay).
- Nối các tệp lớn để có được bộ phim đầy đủ:
cat VTS_01_1.VOB VTS_01_2.VOB VTS_01_3.VOB VTS_01_4.VOB > pelicula.vob - Kiểm tra các luồng:
ffmpeg -probesize 4G -analyzeduration 4G -i pelicula.vob - Chỉ chọn những luồng cần thiết (ví dụ: video và âm thanh bằng tiếng Tây Ban Nha):
ffmpeg -i pelicula.vob -q:a 0 -q:v 0 -map 0:1 -map 0:2 pelicula_es.mkv
Toàn bộ quá trình có thể tùy chỉnh theo nhu cầu và bạn có thể thêm phụ đề hoặc bản nhạc thay thế bằng cách sử dụng các thông số phù hợp. -map.
Người viết đam mê về thế giới byte và công nghệ nói chung. Tôi thích chia sẻ kiến thức của mình thông qua viết lách và đó là những gì tôi sẽ làm trong blog này, cho bạn thấy tất cả những điều thú vị nhất về tiện ích, phần mềm, phần cứng, xu hướng công nghệ, v.v. Mục tiêu của tôi là giúp bạn điều hướng thế giới kỹ thuật số một cách đơn giản và thú vị.
