Xây dựng ứng dụng web Python để chuyển đổi video thành ảnh gif bằng 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. 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úcresize(clip)
để thay đổi kích thướcwidth
vàheight
của clipconcatenate_clips([clip1,clip2,...])
để ghép các clip khác nhau lại với nhaucrop(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àmwrite_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 title
nà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>

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:

Ứ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 MoviePy
thư viện python để chỉnh sửa video.

- Chúng tôi tải tệp lên từ thanh bên bằng cách chỉ định
st.sidebar
trên dòng 13 st.video
cho 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àyst.sidebar.number_input()
hiển thị widget nhập số, đồng thờisubclip
cắt video giữa hai thái cực đã chọn trước đó. write_gif
cuối cùng chuyển đổi tệp mp4 thành tệp GIF trên dòng 24.st.download_button
hiể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ứast.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!