12/08/2018, 11:55

Sử Dụng FFMPEG với những câu lệnh đơn giản

I. FFMPEG là gì FFmpeg là một thư viện có rất nhiều tiện ích cho việc xử lý video. Tính năng nổi bật nhất có lẽ là khả năng encode/decode nhiều video format khác nhau, giúp convert qua lại nhiều định dạng video. Ngoài ra, chúng ta cũng có thể dùng FFmpeg để cắt một đoạn video, crop video, chụp ...

I. FFMPEG là gì

FFmpeg là một thư viện có rất nhiều tiện ích cho việc xử lý video. Tính năng nổi bật nhất có lẽ là khả năng encode/decode nhiều video format khác nhau, giúp convert qua lại nhiều định dạng video. Ngoài ra, chúng ta cũng có thể dùng FFmpeg để cắt một đoạn video, crop video, chụp lại các frame và xuất ra dạng hình ảnh,… Điều đó với các bạn dùng Windows thì có khối phần mềm để làm, nhưng nếu bạn muốn làm những việc sau, bạn buộc sẽ cần dùng đến FFmpeg:

_Convert qua lại các định dạng video flv, mp4, avi,…
_Convert đồng loạt các video trong các thư mục khác nhau.
_Cắt một đoạn trong các video.
_Tự động convert video từ mp4, avi sang flv (hoặc ngược lại) mỗi khi upload chúng lên server.
_Chụp screenshot, crop và tự động chụp screenshot làm thumbnail từ 1 frame bất kì của video khi video vừa được upload lên.

II. Hướng dẫn sử dụng FFMPEG đơn giản

- Chuyển đổi định dạng video:

Công thức:

ffmpeg -i <đường dẫn tệp tin> <đường dẫn output> Trong đó:

_ffmpeg là định danh chương trình

_-i : định nghĩa input file

Ví dụ: _Chuyển đổi MOV sang FLV:

ffmpeg -i movie1.mov movie1.flv

_Chuyển đổi Mpeg sang FLV:

ffmpeg -i movie1.mpeg movie1.flv

_Chuyển đổi AVI sang FLV (kích thước 500×500):

ffmpeg -i movie1.avi -s 500×500 movie1.flv

-s : kích thước của video output

_Chuyển đổi 3GP to FLV (xóa tiếng, chỉ lấy hình):

ffmpeg -i movie1.3gp -sameq -an movie1.flv

_Chuyển đổi MPEG sang 3GP:

ffmpeg -i movie1.mpeg -ab 8.85k -acodec libamr_wb -ac 1 -ar 16000 -vcodec h263 -s qcif movie2.3gp

-acodec : định dạng audio

libarm_wb : tên lib arm

-ac : audio chanel kênh phát sóng của audio 1 mono 2 stereo

-ar : audio bitrate số bit âm thanh trên 1 giây

-vcodec : định dạng video

h263,h264 : tên lib định dạng của video

qcif:

                    Format				Video Resolution
                    SQCIF				128 × 96
                    QCIF				176 × 144
                    SCIF				256 x 192
                    SIF(525)			352 x 240
                    CIF/SIF(625)		352 × 288
                    4SIF(525)			704 x 480
                    4CIF/4SIF(625)		704 × 576
                    16CIF				1408 × 1152
                    DCIF				528 × 384

_FFV1 Encoding:

ffmpeg -i -vcodec ffv1 -an output.mov

-an : bỏ tiếng video

_Chuyển đổi flv sang mpg:

ffmpeg -i myvideo.flv -ar 22050 -b 500 -s 320x240 myvideo.mpg

**- Chuyển định dạng audio **

_Chuyển đổi aac sang mp3 giữ nguyên các thông tin: ffmpeg -i audio1.aac -ar 22050 -ab 32 -map_meta_data audio1.mp3:audio1.aac audio1.mp3

_Chuyển đổi WMV sang MP3: ffmpeg -i audio1.wmv audio1.mp3

_Chuyển đổi WMV sang FLV: ffmpeg -i audio1.wmv audio1.flv

_Chuyển đổi AMR sang MP3: ffmpeg -i audio1.amr -ar 22050 audio1.mp3

_Chuyển đổi FLV sang MP3: ffmpeg -i movie.flv -vn -acodec copy movie.mp3

- Chuyển một loạt hình ảnh có sẵn thành video và ngược lại

ffmpeg -f image2 -i image%d.jpg video.mpg

_Trong đó image%d.jpg thay thế cho một danh sách các hình ảnh cần chuyển đổi: image1.jpg, image2.jpg …

_Ngược lại chuyển 1 video thành ảnh: ffmpeg -i video.mpg image%d.jpg

_Chuyển đoạn video thành ảnh động .gif, lưu ý là ảnh này chưa nén nên cũng tương đối nặng: ffmpeg -i video_origine.avi gif_anime.gif

-Gắn âm thanh vào đoạn video không tiếng

ffmpeg -i son.wav -i video_origine.avi video_finale.mpg

_Điểm quan trọng ở câu lệnh này là độ khớp hình với tiếng theo ý định của người chuyển.

-Cắt đoạn trong video

_Nếu bạn có một video có thời lượng 45 giây, nhưng bạn muốn rút ngắn nó xuống còn 40 giây thì bạn có thể sử dụng lệnh sau

ffmpeg -i yourvideoname.mp4 -ss 00:00:45 -codec copy -t 40 outputclip.mp4

-Thêm ảnh nền vào tập tin audio

_Bạn hãy di chuyển ảnh nền mà bạn muốn thêm vào tập tin audio vào cùng thư mục “bin” của FFmpegTool và sử dụng lệnh sau để gán vào.

ffmpeg -loop 1 -i inputimage.jpg -i inputaudio.mp3 -c:v libx264 -c:a –strict experimental -b:a 192k -shortest outputfile.mp4

-Nối video

_Nếu bạn có những tập tin video theo từng phần và bạn muốn nối chung lại thành 1 tập tin video duy nhất, bạn có thể tiến hành như sau.

_Di chuyển các tập tin video cần nối vào thư mục “bin” của FFmpegTool Mở Notepad lên và nhập đường dẫn tập tin theo cú pháp như hình dưới

K_hi nhập xong, hãy lưu lại thành tập tin TXT như “file-list.txt” chẳn hạn. Sau đó nhập vào lệnh sau:

ffmpeg -f concat -i file-list.txt -c copy outputfile.mp4

-Add logo lên video

ffmpeg -i in.mp4 -framerate 25 -loop 1 -i logo.png -filter_complex "[1:v] fade=out:st=30:d=1:alpha=1 [ov]; [0:v][ov] overlay=10:10 [v]" -map "[v]" -map 0:a -c:v libx264 -c:a copy -shortest out.mp4

-filter_complex : hiệu ứng của video và audio, [1:v] lấy input logo.png (1 index của logo trong câu lệnh, v: video vd [0:a] thì trong đó 0 là indext và a là audio tức audio của video); fade=out:st=30:d=1:alpha=1 di chuyển trong 30px 1s có alpha di chuyển bằng 1, overlay vị trí hiển thị của logo.

0