FFMPEG hình ảnh sang video hướng dẫn

Ffmpeg Images Video Tutorial



Vì vậy, bạn quan tâm đến việc xây dựng một video dựa trên hình ảnh? Phần mềm Linux cũng có thể giúp bạn thực hiện công việc đó, và đặc biệt là một phần mềm: ffmpeg.

Nếu bạn chưa biết thì ffmpeg là một phần mềm thực hiện chuyển đổi và chỉnh sửa video và âm thanh bằng cách sử dụng các bộ lọc. Đây là một trong những hỗ trợ số lượng lớn nhất các codec khác nhau. Nếu bạn đã sử dụng VLC, thì bạn biết một chút về ffmpeg: VLC sử dụng ffmpeg để giải mã càng nhiều video càng tốt.







Nhưng trước khi tạo video, tôi cần cho bạn biết một số khái niệm để bạn không bị lạc hướng.



Không thực sự khó để tích hợp hình ảnh trong video. Và có một lý do: video dựa trên một loạt hình ảnh. Hãy để tôi giải thích.



Video (thậm chí là video YouTube) là một tập hợp các hình ảnh tĩnh thay đổi nhanh chóng. Trong rạp chiếu phim và rạp chiếu phim, giữa mỗi hình ảnh có một hình ảnh màu đen do cơ chế chuyển đổi khung hình và quá chậm. Nhưng mắt người không thể nhận thấy nó vì cơ chế hoạt động đủ nhanh và do ảo ảnh quang học.





Nhưng máy tính không gặp vấn đề này. Màn hình LCD chỉ tiếp tục hiển thị hình ảnh cuối cùng. Dù sao, trên thực tế, bạn có thể trích xuất một hình ảnh độc lập từ mọi hình ảnh của video. Khi một hình ảnh đến từ một video, nó được gọi là khung . Đó chính xác là những gì bạn thấy khi tạm dừng video - và khi bạn làm như vậy, khuôn mặt thường trông không đẹp!

Nói chung, các video từ Hoa Kỳ a chứa 30 khung hình mỗi giây - nhận ra một chút. Đó là 1.800 khung hình mỗi phút, 54.000 khung hình mỗi nửa giờ video hoặc 108.000 khung hình mỗi giờ . Đó là rất nhiều và đó là cách bạn đôi khi tự hỏi làm thế nào một hình ảnh đơn lẻ có thể nặng 1 MiB nhưng một phút video 1080p có thể chỉ nặng 15 MiB.



Số lượng hình ảnh mỗi giây được gọi là tỷ lệ khung hình . Ở tốc độ 30 khung hình / giây, bạn thay đổi hình ảnh mỗi 33 mili giây . Cụ thể, nếu bạn muốn tạo một phút video chỉ dựa trên hình ảnh của mình, bạn sẽ cần có 1.800 tệp JPG hoặc PNG mỗi phút.

Điều đó rất hữu ích nếu bạn muốn thực hiện chỉnh sửa video nâng cao mà không cần sử dụng công cụ video: bạn chỉ cần tạo hình ảnh cho từng khung hình bằng các hiệu ứng của mình và sau đó bạn có thể nhóm nó trong một video. Nhưng đôi khi bạn muốn hình ảnh tĩnh kéo dài bởi vì bạn muốn hình ảnh tĩnh trong video.

Được rồi, bây giờ, đã đến lúc cài đặt ffmpeg.

Cài đặt ffmpeg trên Linux

Tùy thuộc vào phân phối của bạn, cài đặt ffmpeg có thể dễ dàng hoặc ít khó khăn . Đây là một phần mềm miễn phí có mã nguồn công khai, nhưng vì nó có thể giải mã hoặc mã hóa các định dạng đã được cấp bằng sáng chế như MP4, một số bản phân phối loại trừ nó khỏi kho của chúng. Ví dụ: trong Red Hat Enterprise Linux, CentOS và Fedora, bạn cần RPMFusion vì có bằng sáng chế. Hơn nữa, tất cả các phiên bản Debian và Ubuntu trước 16.04 đang phân phối phiên bản ffmpeg sai dựa trên một nhánh rẽ bất hợp pháp.

Nhưng trước khi nhanh chóng cài đặt nó, có thể phiên bản phù hợp đã được cài đặt? Hãy kiểm tra:

$ffmpeg -phiên bản
ffmpegphiên bản X.XXXXXXXX Bản quyền(NS) 2000-2018các nhà phát triển FFmpeg

Nếu sau khi đăng ký bản quyền mà bạn thấy các nhà phát triển FFmpeg có phiên bản gốc của FFMpeg thì bạn không cần phải làm gì. Tuy nhiên, nếu bạn thấy:

$ffmpeg -phiên bản
ffmpegphiên bản X.XXXXXXXX Bản quyền(NS) 2000-2018các nhà phát triển Libav

Sau đó, điều đó có nghĩa là bạn đang sử dụng cái nĩa của ffmpeg được gọi là Libav. Debian và các phiên bản cũ hơn của Ubuntu thầm lặng thay thế FFMpeg bằng Libav. Nếu nó cho bạn biết nó không được dùng nữa, vui lòng bỏ qua nó, điều đó gây hiểu lầm. Nếu bạn đã cài đặt fork, đã đến lúc xóa phiên bản false ffmpeg của bạn và sau đó làm theo hướng dẫn bên dưới để cài đặt phiên bản phù hợp. Có lẽ như thế này:

$sudo apt-get loại bỏ ffmpeg

Vì vậy, bây giờ bạn có thể chưa cài đặt nó hoặc bạn có phiên bản sai, đã đến lúc cài đặt nó!

Trong Fedora, Red Hat Enterprise Linux (RHEL) và CentOS, hãy truy cập https://rpmfusion.org/Configuration và kích hoạt kho lưu trữ RPMFusion miễn phí trên máy tính của bạn. Sau đó, nếu bạn đang ở Fedora, hãy làm:

$sudodnfTải về ffmpeg

Và đối với CentOS & Red Hat Enterprise Linux, hãy thực hiện:

$sudo cài đặt yum ffmpeg

Đó là tất cả đối với các hệ thống dựa trên Fedora và Red Hat, nó đã được cài đặt.

Trong tất cả các phiên bản Debian (và tất cả các dẫn xuất) và Ubuntu trước 16.04, bạn cần tải bản dựng tĩnh FFMpeg từ trang web chính thức. Đi đến https://ffmpeg.org/download.html#build-linux và dưới đây Bản dựng tĩnh Linux , bấm vào 32-bit và 64-bit cho nhân 2.6.32 trở lên . Sau đó, bên dưới phát hành: X.X.X , tải xuống tệp lưu trữ thích hợp, giải nén nó và bạn có thể khởi chạy các tệp thực thi nằm trong thư mục được giải nén thông qua CLI.

Đối với những người sử dụng Ubuntu 16.04 trở lên, sẽ dễ dàng hơn, chỉ cần làm:

$sudo apt-get cài đặt ffmpeg

Phù! Cuối cùng thì chúng ta cũng nên đi! Trước khi tiếp tục, hãy kiểm tra lần cuối với:

$ffmpeg -phiên bản

ffmpeg phiên bản X.XXXXXXXX Bản quyền (c) 2000-2018 các nhà phát triển FFmpeg

Tạo video từ nhiều hình ảnh

Vì vậy, đối với ví dụ đầu tiên của chúng tôi, chúng tôi sẽ tạo một video từ Hình ảnh trong đó mỗi hình ảnh đại diện cho một khung sẽ được hiển thị trong 33 mili giây. Để tôi chỉ cho bạn lệnh đầu tiên.

** MP4 và H.264 là codec đã được cấp bằng sáng chế, vui lòng kiểm tra xem bạn có quyền mã hóa với nó hay không. **

$ffmpeg-r: v30 -tôi 'Chim cánh cụt -% 05d.png'-codec: v libx264-presetrất chậm
-pix_fmt yuv420p-crf 28 -một 'Penguins.mp4'

OK, vậy nó hoạt động như thế nào? Để lệnh này hoạt động, bạn cần có nhiều khung mà mỗi khung là một tệp như Penguins - 00043.png. Lệnh này sau đó sẽ kết hợp tất cả các khung hình theo thứ tự với tốc độ 30 FPS. Vì vậy, Penguins - 00043.png đứng trước Penguins - 00044.png trong video và ffmpeg sẽ tôn trọng điều đó. Vì vậy, nếu bạn có 120 khung hình, video của bạn sẽ có thời lượng 4 giây.

Có một số yêu cầu về định dạng, chiều rộng và chiều cao để khung hoạt động. Nếu bạn không tuân theo các quy tắc này, ffmpeg có thể bỏ qua một số hình ảnh hoặc hủy quá trình tạo video. Vì thế:

  • Tất cả các khung hình trong cùng một video phải chia sẻ:
    • Chiều rộng & chiều cao
    • Độ đậm của màu
  • Khung hình phải ở kích thước video tiêu chuẩn, chẳng hạn như:
    • 640px 360 (360p)
    • 853 px, 480 (480p)
    • 1280 px 720 (720p)
    • 1920x1080 (1080p)
    • 4096 px 2306 (4K)
  • Thích khung ở định dạng PNG hơn là JPG
  • Tránh trong suốt hoặc alpha ở định dạng PNG

Sau đó, lệnh sẽ mất một khoảng thời gian để chuyển đổi video, tối ưu hóa hiệu suất của video và tạo cho bạn tệp MP4 có tên Penguins.mp4.

Bây giờ, bạn có thể muốn có một hình ảnh tĩnh tồn tại hơn 33 mili giây. Trong trường hợp này, video của bạn là một trình chiếu nhiều hơn và nó không giống như vậy. Để làm như vậy, trước tiên bạn có thể đưa ra tốc độ khung hình chậm hơn cho đầu vào và sau đó yêu cầu ffmpeg sao chép khung hình ở đầu ra. Không, YouTube và Vimeo sẽ không thực sự đánh giá cao video 0,5 FPS ngay cả khi bạn thay đổi hình ảnh 2 giây một lần.

Thay vào đó hãy làm điều đó:

$ffmpeg-r: v1/5 -tôi 'Chim cánh cụt -% 05d.png'-r: v30-codec: v libx264-presetrất chậm
-pix_fmt yuv420p-crf 28 -một 'Penguins.mp4'

Đi thôi! ffmpeg sẽ làm cho mỗi hình ảnh của bạn xuất hiện trong 5 giây nhưng trong video 30 FPS. Đừng lo lắng về cảnh báo khung trùng lặp: đó là những gì bạn muốn.

Phần kết luận

Bây giờ bạn đang - Spielberg mới - có thể tạo video của riêng bạn. Bạn có thể thực hiện trình chiếu đơn giản hoặc chuẩn bị từng khung hình video bằng trình chỉnh sửa hình ảnh như GIMP, nhưng bạn cũng có thể hưởng lợi từ bộ hiệu ứng và codec lớn mà bạn có thể tìm thấy trong ffmpeg.

Hãy dành thời gian để tự mình thử nghiệm - suy cho cùng thì bạn cũng là một nghệ sĩ - và tạo một video có hàng triệu lượt xem trên YouTube!