Xây dựng ứng dụng web Python để chuyển đổi video thành ảnh gif bằng Streamlit

Apr 09 2022
Một cách đơn giản và thú vị để chuyển đổi video thành GIF bằng MoviePy và Streamlit
Một vài tháng trước, tôi đã thử nghiệm với rất nhiều trang web để chuyển đổi video thành gif, nhưng tôi không tìm thấy giải pháp nào thỏa đáng để chỉnh sửa và chuyển đổi video mà không trở nên điên rồ. Đột nhiên, tôi phát hiện ra MoviePy, một thư viện python chuyên chỉnh sửa video.
Tác giả minh họa

Một vài tháng trước, tôi đã thử nghiệm với rất nhiều trang web để chuyển đổi video thành gif, nhưng tôi không tìm thấy giải pháp nào thỏa đáng để chỉnh sửa và chuyển đổi video mà không trở nên điên rồ. Đột nhiên, tôi phát hiện ra MoviePy, một thư viện python chuyên chỉnh sửa video. Nó cho phép thực hiện nhiều thao tác chỉnh sửa cơ bản, như cắt video, nối và thay đổi khung hình / giây.

Đồng thời, tôi muốn có một giao diện trực quan để tạo tệp gif, thay vì sửa đổi và chạy mỗi lần tập lệnh. Vì lý do này, tôi đã tận dụng Streamlit, một công cụ tuyệt vời cho phép tạo ứng dụng bằng Python với vài dòng mã.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách khai thác thư viện Python tuyệt vời này một cách hiệu quả.

Streamlit là gì?

Streamlit là một khung công tác mã nguồn mở miễn phí cho phép tạo các ứng dụng web trong vài phút. Những lợi ích của nền tảng này là:

  • Thật dễ dàng và đơn giản để sử dụng
  • Nó không yêu cầu kinh nghiệm giao diện người dùng
  • Kiến thức về HTML là không cần thiết
  • Một vài dòng mã xây dựng một ứng dụng đẹp
  • Nó hoạt động với các thư viện Python, như gấu trúc, Tensorflow, Pytorch

MoviePy là gì?

MoviePy là một mô-đun Python để làm việc với video. Nó cho phép có các tính năng hữu ích để chỉnh sửa video như:

  • subclip(start,end)trả về một clip giữa thời gian bắt đầu và kết thúc
  • resize(clip)để thay đổi kích thước widthheight của clip
  • concatenate_clips([clip1,clip2,...])để ghép các clip khác nhau lại với nhau
  • crop(clip,x1=None,x2=None,y1=None,y2=None,width=None,height=None)trả về vùng cắt của clip được chỉ định trong hàm
  • write_gif(clip,fps=None)để chuyển đổi video sang định dạng GIF, trong đó fps là số khung hình trên giây

Điều kiện tiên quyết

Trong hướng dẫn này, tôi khuyên bạn nên sử dụng Visual Studio Code làm IDE vì nó có giao diện trực quan, hỗ trợ nhiều ngôn ngữ thông qua việc cài đặt các tiện ích mở rộng và tích hợp một thiết bị đầu cuối. Để bắt đầu với Visual Studio Code, hãy xem hướng dẫn này . Sau khi bạn quyết định sử dụng trình soạn thảo mã và bạn đã hoàn tất quá trình cài đặt, đã đến lúc cài đặt hai thư viện:

pip install streamlit
pip install moviepy

Như bạn có thể suy luận, phương pháp titlenày được sử dụng để hiển thị văn bản ở định dạng tiêu đề. Bước tiếp theo là chạy mã trên thiết bị đầu cuối theo cách sau:

streamlit run <filename.py>

Tác giả minh họa

Một đặc điểm quan trọng khác của Streamlit được cung cấp bởi các widget đầu vào , cho phép bạn tương tác trong ứng dụng web của mình bằng cách sử dụng các nút, đầu vào số, thanh trượt và các tùy chọn khác. Ví dụ: hãy tải lên một tệp từ hệ thống tệp:

Tác giả minh họa

Ứng dụng chuyển đổi

Mục tiêu là xây dựng một ứng dụng chỉ đơn giản là chuyển đổi tệp mp4 thành tệp GIF. Để xử lý video, chúng tôi sử dụng MoviePythư viện python để chỉnh sửa video.

Tác giả minh họa

  • Chúng tôi tải tệp lên từ thanh bên bằng cách chỉ định st.sidebartrên dòng 13
  • st.videocho phép hiển thị video trên dòng 16
  • Chúng tôi tạo một video clip bằng phimmoy trên dòng 21
  • Hàm cut_video()được gọi ở dòng 22. Nó được sử dụng để cắt video trong một khoảng giây xác định trước, trong đó chúng tôi chỉ định các số trong các widget đầu vào. Chức năng này st.sidebar.number_input()hiển thị widget nhập số, đồng thời subclipcắt video giữa hai thái cực đã chọn trước đó.
  • write_gifcuối cùng chuyển đổi tệp mp4 thành tệp GIF trên dòng 24.
  • st.download_buttonhiển thị tiện ích nút cho phép chúng tôi tải xuống tệp GIF mà ứng dụng web của chúng tôi thu được.

Ứng dụng này rất cần thiết và đơn giản. Có thể đạt được những cải tiến hơn nữa bằng cách thêm tiện ích con để chọn số khung hình mỗi giây và hiển thị gif thu được:

  • Trên dòng 33, chúng tôi thêm một tiện ích đầu vào khác để chỉ định số khung hình mỗi giây. Video có càng ít khung hình thì video càng kém chất lượng hơn.
  • Ở dòng cuối cùng, chúng tôi gọi hàm download_gif, hàm chứa st.markdownảnh GIF thu được và hàm trước đó cho nút tải xuống.

Xin chúc mừng! Ứng dụng web của bạn để chuyển đổi video thành tệp GIF đã sẵn sàng. Điều này có thể thực hiện được với một vài dòng mã như tôi đã hứa. Nó cho thấy Streamlit có thể được áp dụng như thế nào để xây dựng các ứng dụng web nhanh chóng và dễ dàng cho các mục đích khác nhau, chẳng hạn như tạo các bảng điều khiển đẹp, đưa ra các dự đoán về mô hình và nhiều ứng dụng khác. Mã Github ở đây . Cảm ơn vì đã đọc. Chúc một ngày tốt lành!

© Copyright 2021 - 2023 | vngogo.com | All Rights Reserved