HƯỚNG DẪN VIẾT CODE FFMPEG

Video - Điều chúng ta thấy!

Nếu bạn gồm một chuỗi tuần từ các hình hình họa cùng biến hóa chúng ở 1 tần số vẫn biết (hãy ví dụ như 24 hình trên giây), các bạn sẽ tạo thành ảo giác về việc chuyển động.Tóm lại, đó là nguyên tắc cơ bản ẩn dưới video: một chuỗi các hình hình ảnh chạy với tốc độ mang lại trước.

Bạn đang xem: Hướng dẫn viết code ffmpeg

*

Zeitgenössische Illustration (1886)

Audio - Điều chúng ta nghe!

Mặc cho dù video ko âm thanh hao rất có thể mang đến không hề ít cảm xúc, dẫu vậy bài toán bổ sung cập nhật thêm âm tkhô giòn vẫn đem lại những tận hưởng hứng khởi hơn.

Âm tkhô cứng là sự rung cồn lan truyền nhỏng sóng áp suất, thông qua bầu không khí hoặc bất kể phương tiện đi lại truyền dẫn không giống, như khí gas, hóa học lỏng hoặc khu đất.

Trong một khối hệ thống âm thanh hiện đại số, microphone thay đổi âm thanh khô thành dấu hiệu điện tương tự, kế tiếp qua cỗ biến hóa tương tự như - số (analog-to-digital converter ADC) - tiêu biểu vượt trội sử dụng điều chế độ rộng xung (pulse-code modulation PCM) - đổi khác biểu thị tựa như quý phái bộc lộ số.

*

Nguồn

Codec - Nén dữ liệu

CODEC là một mạch năng lượng điện tử hoặc phần mềm dùng để làm nén hoặc giải nén tài liệu video/audio tiên tiến nhất. Nó biến đổi dữ liệu video/audio số hoá nguim thuỷ (không nén) quý phái format nén hoặc ngược trở lại.https://en.wikipedia.org/wiki/Video_codec

Nhưng nếu như chúng ta lựa chọn gói gọn hàng ngàn hình ảnh vào trong tệp tài liệu với hotline nó là 1 trong bộ phim truyền hình, bạn có thể cảm nhận một tệp tư liệu khổng lồ. Hãy demo tính toán một chút:

Giả sử chúng ta sẽ chế tạo một đoạn Clip với độ phân giải 1080 x 19đôi mươi (cao x rộng) cùng bọn họ dành 3 bytes cho từng điểm hình họa (px - đơn vị chức năng bé dại tuyệt nhất của một màn hình) để mã hoá màu sắc (hoặc Color 24 bit, nó đại diện mang lại 16,777,216 Màu sắc không giống nhau), và đoạn Clip này chạy ở tốc độ 24 hình bên trên giây, kéo dãn dài nửa tiếng.


toppf = 1080 * 1920 //tong_so_diem_anh_tren_mot_hinhcpp = 3 //gia_tri_cho_moi_diem_anhtis = 30 * 60 //thoi_gian_tinh_bang_giayfps = 24 //so_hinh_tren_giaybo_nho_yeu_cau = tis * fps * toppf * cpp
Video này đã đề nghị xấp xỉ bộ lưu trữ 250.28GB hoặc băng thông 1.11Gbps! Đó là lý do tại vì sao bọn họ yêu cầu dùng CODEC.

Container - Định dạng tệp lưu trữ phổ biến video với audio

Một container xuất xắc định hình tệp là 1 trong định hình tập tin mà lại thông số của nó diễn tả các nguyên tố không giống nhau của tài liệu cùng ban bố cũng luôn có ra sao trong một tập tin máy vi tính.https://en.wikipedia.org/wiki/Digital_container_format

Một tệp tin chứa toàn bộ những luồng dữ liệu (bao gồm tất cả audio cùng video) và nó cũng cung cấp phương pháp đồng bộ và công bố tầm thường, như tựa đề, độ sắc nét,...

Thông thường chúng ta có thể tư duy format của tệp dữ liệu bằng phương pháp quan sát vào phần mở rộng tên tệp: ví dụ như một tệp có tên đoạn Clip.webm là 1 trong Clip sử dụng định hình container webm.

*

FFmpeg - Sở chế độ bên dưới dạng câu lệnhMột phương án hoàn thành, nhiều nền tảng gốc rễ nhằm lưu lại, chuyển đổi và phạt trực tuyến luồng audio và video.

Để thao tác làm việc cùng với truyền thông đa phương tiện, chúng ta cũng có thể thực hiện công cụ/thỏng viện có ích Gọi là FFmpeg. Rất rất có thể bạn đã có lần biết/sử dụng nó một phương pháp trực tiếp hoặc loại gián tiếp (chúng ta gồm áp dụng Chrome?).

Nó tất cả một chương trình chạy lệnh hotline là ffmpeg, một công tác mã nhị phân dễ dàng và đơn giản mà lại khôn cùng dạn dĩ mẽVí dự nlỗi chúng ta cũng có thể chuyển đổi trường đoản cú định dạng mp4 sang định dạng container avi chỉ bằng cách gỗ câu lệnh sau:


$ ffmpeg -i đầu vào.mp4 output.avi
Chúng ta chỉ thực hiện một bước format lại (remuxing) tại đây, tức thị nó đã thay đổi từ format container này sang một định hình container khác.Về mặt nghệ thuật FFmpeg cũng rất có thể thực hiện thêm 1 bước biến đổi chuẩn chỉnh nén (transcode) mà lại bọn họ sẽ nói tới nó sau.

Bộ lao lý câu lệnh FFmpeg 101

FFmpeg tất cả một Home tài liệu vẫn giải thích cụ thể đầy đủ về nguyên tắc hoạt động vui chơi của nó.

Nđính gọn nhưng nói, chương trình câu lệnh FFmpeg nên định hình đối số sau nhằm thực hiện hành vi của nó ffmpeg 1 2 -i 3 4 5 vào đó:

tuỳ chọn toàn cụctuỳ chọn đầu vàomặt đường đứng vị trí số 1 vàotuỳ chọn đầu ramặt đường dẫn đầu ra

Các phần 2, 3, 4 với 5 có thể là một hoặc những theo như yêu cầu của khách hàng.Thật dễ dàng dạng nhằm hiểu phần đa định hình đối số này vào câu lệnh dưới đây:


# WARNING: kích thước tệp tin xê dịch 300MB$ wget -O bunny_1080p_60fps.mp4 http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_60fps_normal.mp4$ ffmpeg -y # chọn lọc toàn cục-c:a libfdk_aac -c:v libx264 # tuỳ lựa chọn đầu vào-i bunny_1080p_60fps.mp4 # đường dẫn đầu vào-c:v libvpx-vp9 -c:a libvorbis # tuỳ chọn đầu rabunny_1080p_60fps_vp9.webm # mặt đường đứng vị trí số 1 ra
Câu lệnh này dấn tệp nguồn vào định hình mp4 chứa 2 luồng tài liệu (một luồng audio nén cùng với chuẩn chỉnh nén aac cùng một luồng Clip sử dụng chuẩn chỉnh nén h264) cùng biến đổi nó sang trọng format tệp webm, cũng biến hóa chuẩn nén audio với Clip của chính nó.

Chúng ta có thể đơn giản hoá những câu lệnh bên trên dẫu vậy hãy chú ý rằng FFmpeg vẫn thừa nhận hoặc dự đoán thù những quý hiếm mặc định cho chính mình.Ví dụ, khi bạn gõ ffmpeg -i input đầu vào.avi output.mp4, chuẩn nén audio/video sẽ được sử dụng nhằm xuất output.mp4 là gì?

Werner Robitza vẫn viết một bài xích hướng dẫn phải gọi về nén và bao gồm sửa cùng với FFmpeg.

Những hành vi cách xử trí video phổ biếnTrong khi thao tác làm việc cùng với audio/đoạn phim, chúng ta hay thực hiện một bộ những tác vụ ví dụ cùng với nội dung nhiều phương tiện đi lại.

Chuyển đổi chuẩn nén - Transcoding

*

Là gì? là hành động chuyển đổi một luồng dữ liệu (có thể là audio hoặc video) từ chuẩn chỉnh nén này sang trọng chuẩn chỉnh nén khác.

Xem thêm: Ngon Hơn Với Bát Tiết Canh Lòng Lợn, Cách Hãm Tiết Canh Lợn Mán

Tại sao? thỉnh phảng phất họ phát hiện ngôi trường đúng theo một vài ba sản phẩm (Tivi, điện thoại cảm ứng logic, bẳng tinh chỉnh,...) không hỗ trợ các loại X nhưng lại hỗ trợ một số loại Y với phần nhiều chuẩn chỉnh nén bắt đầu hỗ trợ tỉ trọng nén tốt rộng.

Như cố nào? thay đổi một đoạn phim từ chuẩn nén H264 (AVC) lịch sự chuẩn chỉnh nén H265 (HEVC) bằng phương pháp sau:


$ ffmpeg -i bunny_1080p_60fps.mp4 -c:v libx265 unny_1080p_60fps_h265.mp4

Chuyển thay đổi định hình tệp - Transmuxing

*

Là gì? là hành động thay đổi xuất phát điểm từ một định hình tệp (container) này sang một định hình tệp khác.

Tại sao? thỉng phảng phất một vài lắp thêm (Tivi, điện thoại cảm ứng logic, bẳng tinh chỉnh và điều khiển,...) không cung cấp các loại X dẫu vậy lại cung cấp các loại Y cùng thỉnh thoảng đông đảo định hình new cung cấp rất nhiều chức năng văn minh được những hiểu biết.

Nhỏng cầm cố nào? thực hiện biến đổi từ bỏ format mp4 sang trọng format webm.


$ ffmpeg -i bunny_1080p_60fps.mp4 -c copy # dieu_khien_ffmpeg_bo_qua_buoc_giai_ma_va_ma_hoabunny_1080p_60fps.webm

Tgiỏi đổi vận tốc bit - Transrating

*

Là gì? là hành vi biến đổi tốc độ bit của video/audio, hoặc xuất ra hồ hết phát triển thành thể (renditions) không giống.

Tại sao? phần đa bạn có thể test coi video clip của công ty với kết nối mạng 2G(edge) bằng phương pháp áp dụng những vật dụng điện thoại thông minh sáng ý hiệu năng thấp hoặc bằng liên kết Internet cáp quang đãng (fiber) trên sản phẩm công nghệ Tivi 4K của họ. Do kia, bạn nên khuyến nghị nhiều hơn thế nữa một vươn lên là thể của và một đoạn phim cùng với vận tốc bit khác nhau.

Nhỏng nuốm nào? tiến hành xuất một trở nên thể cùng với tốc độ bit thân 3856K và 2000K.


$ ffmpeg -i bunny_1080p_60fps.mp4 -minrate 964K -maxrate 3856K -bufsize 2000K unny_1080p_60fps_transrating_964_3856.mp4
Đôi khi bọn họ sẽ thuộc sử dụng 2 tác vụ biến đổi tốc độ và chuyển đổi size. Werner Robitza đã viết một chuỗi các bài viết đề xuất phát âm về tinh chỉnh và điều khiển tỉ trọng trong FFmpeg.

Txuất xắc thay đổi độ sắc nét - Transsizing

*

Là gì? là hành vi chuyển đổi unique đoạn Clip tự độ sắc nét này sang 1 độ sắc nét khác. Như sẽ nói trước kia, tác vụ đổi khác kích thước thường kèm theo cùng với tác vụ thay đổi vận tốc.

Tại sao? nguyên do tương bốn nhỏng với tác vụ chuyển đổi tốc độ.

Nhỏng cố nào? chuyển đổi từ độ sắc nét tự 1080p thành 480p.


$ ffmpeg -i bunny_1080p_60fps.mp4 -vf scale=480:-1 unny_1080p_60fps_transsizing_480.mp4

Mngơi nghỉ rộng: phân phát trực con đường phù hợp ứng (Adaptive-streaming)

*

Là gì? là hành động xuất nhiều độ sắc nét (hoặc tốc độ bit) và phân chia ngôn từ đa phương tiện thành các đoạn cùng truyền cài đặt chúng trải qua giao thức http.

Tại sao? nhằm cung cấp nội dung nhiều phương tiện đi lại linch hoạt nhằm hoàn toàn có thể xem trên điện thoại hợp lý hiệu năng rẻ hoặc truyền họa 4K, nó cũng dễ dàng mở rộng cùng thực thi nhưng lại hoàn toàn có thể tăng thêm độ trễ.

Nlỗi rứa nào? tạo nên một nội dụng format WebM mê say ứng (adaptive) bằng phương pháp sử dụng giao thức DASH.


# luồng video$ ffmpeg -i bunny_1080p_60fps.mp4 -c:v libvpx-vp9 -s 160x90 -b:v 250k -keyint_min 150 -g 150 -an -f webm -dash 1 video_160x90_250k.webm$ ffmpeg -i bunny_1080p_60fps.mp4 -c:v libvpx-vp9 -s 320x180 -b:v 500k -keyint_min 150 -g 150 -an -f webm -dash 1 video_320x180_500k.webm$ ffmpeg -i bunny_1080p_60fps.mp4 -c:v libvpx-vp9 -s 640x360 -b:v 750k -keyint_min 150 -g 150 -an -f webm -dash 1 video_640x360_750k.webm$ ffmpeg -i bunny_1080p_60fps.mp4 -c:v libvpx-vp9 -s 640x360 -b:v 1000k -keyint_min 150 -g 150 -an -f webm -dash 1 video_640x360_1000k.webm$ ffmpeg -i bunny_1080p_60fps.mp4 -c:v libvpx-vp9 -s 1280x7trăng tròn -b:v 1500k -keyint_min 150 -g 150 -an -f webm -dash 1 video_1280x720_1500k.webm# luồng audio$ ffmpeg -i bunny_1080p_60fps.mp4 -c:a libvorbis -b:a 128k -vn -f webm -dash 1 audio_128k.webm# tệp kê knhị DASH$ ffmpeg -f webm_dash_manifest -i video_160x90_250k.webm -f webm_dash_manifest -i video_320x180_500k.webm -f webm_dash_manifest -i video_640x360_750k.webm -f webm_dash_manifest -i video_640x360_1000k.webm -f webm_dash_manifest -i video_1280x720_500k.webm -f webm_dash_manifest -i audio_128k.webm -c copy -bản đồ 0 -bản đồ 1 -bản đồ 2 -maps 3 -map 4 -map 5 -f webm_dash_manifest -adaptation_sets "id=0,streams=0,1,2,3,4 id=1,streams=5" manifest.mpd
PS: Tôi đã đưa ví dụ này trường đoản cú bài Giới thiệu phương thức xem xét lại WebM say đắm ứng bằng giao thức DASH

Hơn nắm nữa

Còn rất nhiều biện pháp sử dụng khác nữa của FFmpeg.Tôi sử dụng nó Khi kết phù hợp với iMovie để xuất ra/sửa đổi một vài ba video clip đến gốc rễ Youtube và các bạn chắc chắn là có thể sử dụng nó một giải pháp bài bản hơn.

Tìm hiểu thư viện FFmpeg libav sâu hơnBạn tránh việc lo lắng vô số về âm thanh cùng hình ảnh?David Robert Jones

Bởi vày FFmpeg là 1 câu lệnh rất hữu dụng để làm rất nhiều tác vụ cần thiết bên trên những tệp tin nhiều phương tiện đi lại, bằng phương pháp nào chúng ta cũng có thể áp dụng nó trong chương trình của bọn chúng ta?

FFmpeg được phối kết hợp do một vài thỏng viện mà lại có thể tích đúng theo vào trong lịch trình của bọn họ.Đôi khi, khi chúng ta cài đặt FFmpeg, nó sẽ tự động hóa download vớ cá các thư viện kia. Tôi sẽ tsay mê chiếu mang lại tập các thư viện hotline là FFmpeg libav.

Tựa đề này là trang chủ của chuỗi những bài viết của Zed Shaw "Học X chăm sâu", nhất là cuốn sách của anh ấy ấy "Học ngôn từ C chuyên sâu" (Learn C the Hard Way).

Chapter 0 - Hello world nổi tiếng

Chương trình Hello world này thực tế sẽ không còn hiển thị tin nhắn "hello world" bên trên màn hình hiển thị terminal