Tin tức khuyến mãi hot nhất hiện nay

Thứ Ba, 20 tháng 3, 2018

FFMPEG hướng dẫn sử dụng phần 1



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.
























Một vài tham số cơ bản
Trong các lệnh sẽ được trình bày dưới đây sẽ xoay quanh một vài tham số cơ bản như
-i test.mp4 Nhập file đầu vào tên là test.mp4
-c:v Codec của video đang xử lý
-c:a Codec của audio đang xử lý
-map 0:0 Chỉ định luồng đầu tiên của file đầu vào thứ 0 sẽ được xử lý (thường dùng trong trường hợp có nhiều file đầu vào, ví dụ bạn muốn mux video của file thứ 0 với audio của file thứ 1)
-vf Gọi filter đồ họa xử lý 1 tác vụ nào đó
-an Khử audio
-vn Khử video
......
Các tham số khác sẽ được trình bày trong từng câu lệnh cụ thể.

Phân tách các luồng (stream) audio và video nếu cần
Trong 1 file video như các bạn thường ngày vẫn dùng có thể có rất nhiều luồng như: luồng video,luồng audio, luồng subtiles.Một vài file phim hd có thể có 2 luồng audio (tiếng anh và tiếng việt chẳng hạn)


Xuất video
ffmpeg -i test.mp4 -vcodec copy -an test2.mp4


Xuất audio
ffmpeg -i test.mp4 -vn -acodec copy test2.mp4


Xuất sub subtitles (sortsub)
ffmpeg -i test.mp4 -vn -an -scodec copy test2.txt
Chú ý: Container Mp4 không hỗ trợ luồng phụ đề riêng (Nếu có là đã ReEncode vào Video)


Xử lý video
Rotate video
Một số video quay từ điện thoại thường bị quay ngược kích thước (Có tham số rotate trong info)
Loại bỏ tham số rotate trong info,trả về chiều gốc của video
ffmpeg -i test.mp4 -c copy -metadata:s:v:0 rotate=0 test2.mp4
Quay video theo hướng mong muốn
ffmpeg -i test2.mp4 -vf "transpose=1" -c:a copy test3.mp4
0 = 90 Ngược chiều kim đồng hồ và lật video
1 = 90 Theo chiều kim đồng hồ
2 = 90 Ngược chiều kim đồng hồ
3 = 90 Theo chiều kim đồng hồ và lật video

Convert video
ffmpeg -i test.flv -c:v libx264 -c:a aac test2.mp4


Thay dổi kích thước video
ffmpeg -i test.mp4 -s 1280*720 -c:a copy test2.mp4


Cut video
-ss thời điểm bắt đầu cắt (dùng -ss 00:00:00.000 nếu muốn cắt chính xác đến mili giây)
-t thời gian cắt
Ví dụ cắt 3,5 giây từ thời điểm đầu video
ffmpeg -i test.mp4 -codec copy -ss 00:00:00.000 -t 00:00:03.500 test2.mp4

Split video
ffmpeg -i test.mp4 -t 1 test2.mp4 -ss 00:00:01 test3.mp4

Join nhiều video
ffmpeg -f concat -safe 0 -i mylist.txt -c copy join.mp4
nội dung mylist.txt:
# this is a comment
file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'

Mux video và audio
ffmpeg -i test.mp4 -i test2.m4a -c copy test3.mp4

Crop video
-filter:v "crop=out_w:out_h:x:y"
Trong đó:
out_w là số pixel chiều rộng của video xuất ra
out_h là số pixel chiều cao của video xuất ra
x và y là tọa độ chiều rộng và cao (pixel) của điểm bắt đầu crop
Ví dụ:
Ta sử dụng thêm ffplay để xem trước file đã cắt
ffplay -i test.mp4 -filter:v "crop=1280:720:100:100"
Nếu các thông số đã hợp lý thì ta sẽ crop thật
ffmpeg -i test.mp4 -filter:v "crop=1280:720:100:100" -c:a copy test2.mp4

Encode phụ đề vào video
ffmpeg -i test.mp4 -vf "ass=subtitles.ass" -c:a copy test2.mp4

Add logo vào video
-filter_complex "overlay=x:y"
x,y là số pixel tính chiều dài và chiều cao tính từ góc trên cùng bên trái
Ví dụ căn giữa
ffmpeg -i test.mp4 -i logo.png -filter_complex "overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" test2.mp4
main_w – chiều rộng video gốc
main_h – chiều cao video gốc
overlay_w – chiều rộng logo
overlay_h – chiều cao logo


Xử lý audio
Convert audio
ffmpeg -i test.m4a -c:a libmp3lame -ab 128k test2.mp3
ffmpeg -i test.wav -c:a aac -ab 128k test2.mp3
ffmpeg -i test.mp4 -vn -c:a pcm_s16le -ar 44100 -ac 2 test2.wav


Cut,join audio tương tự như video

Related Posts: