วิธีการใช้ library moviepy ในภาษา python ทำรูปภาพ GIF จากวีดีโอ

แชร์ความรู้ภาษา Python ไพทอน การเขียนโปรแกรมภาษาไพทอน

Moderators: mindphp, ผู้ดูแลกระดาน

User avatar
jirawoot
PHP Super Hero Member
PHP Super Hero Member
Posts: 957
Joined: 17/06/2019 10:30 am

วิธีการใช้ library moviepy ในภาษา python ทำรูปภาพ GIF จากวีดีโอ

Postby jirawoot » 31/07/2019 6:44 pm

moviepy คือ library เสริมในภาษา Python ที่ไช้สำหรับการตัดต่อวีดีโอ ถ้าใครที่กำลังหาวิธีทำรูปภาพ gif จากวีดีโอในภาษา Python นะครับสามารถนำวิธีการนี้ไปทำหรือไปต่อยอดได้นะครับ ในการจะทำรูปภาพ GIF จากวีดีโอนั้นต้องทำการ import module moviepy เข้ามาใช้ก่อนจึงจะสามารถใช้งานได้ โดยจะมีรูปแบบคำสั่งภาษา python ดังต่อไปนี้ครับ

Code: Select all

# -*- coding=utf-8 -*-
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from moviepy.editor import VideoFileClip
from flask import Flask, render_template,request,send_file
from werkzeug.utils import secure_filename
import os

app = Flask(__name__)
@app.route("/")
def index():
    return render_template('test.html')
@app.route("/addgif" , methods=['GET', 'POST'])
def edit():

    time1 = int(request.form['time1'])
    time2 = int(request.form['time2'])
    time3 = int(request.form['time3'])
    time4 = int(request.form['time4'])

    file = request.files['file']
    filename = secure_filename(file.filename)
    filename2 = filename.split(".")
    lastname1 = filename2[1]
    name1 = filename2[0]
    file.save(os.path.join(filename))

    num1 = (60*time1)+time2
    num2 =  (60*time3)+time4
    clip = (VideoFileClip(name1+".mp4").subclip(num1, num2))
    clip.write_gif(name1+".gif")

    print ('เพิ่มข้อมูล เรียบร้อยแล้ว')
    return send_file(name1+'.gif', attachment_filename=name1+'.gif',mimetype='image/gif')
if __name__ == '__main__':
    app.run(debug=True)

อั้นนี้จะใช้งานร่วมกับ Flask นะครับ

คำสั่งภาษา HTML

Code: Select all

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
 <form action="/addgif" method="POST" enctype="multipart/form-data">
     <label>ไฟล์วีดีโอ</label><br>
     <input type="file"  name="file" autocomplete="off" placeholder="" value="" required>
              <br>
                       <label>เวลาเริ่ม</label><br>
                            <span>นาที: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
                            <input type="text"  name="time1" autocomplete="off" placeholder="" value="" required>
                            <span class="" id="basic-addon1">วินาที: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
                            <input type="text"  name="time2" class="form-control" autocomplete="off" placeholder="" value="" required>
         <br>
                        <label>เวลาสิ้นสุด</label><br>
                            <span >นาที: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
                            <input type="text"  name="time3"  autocomplete="off" placeholder="" value="" required>
                            <span class="">วินาที: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
                            <input type="text"  name="time4" autocomplete="off" placeholder="" value="" required>
                 <br>
                             <input type = "submit" value = "บันทึก" />
                            </form>
</body>
</html>


ทำการรันโปรแกรมก็จะ ให้อัพไฟล์วีดีโอ แล้วก็ให้เลือกช่วงเวลาที่ต้องการทำรูปภาพ
Image

Image

เมื่อทำการกรอกข้อมูลต่างๆครบแล้วให้บันทึกแล้วรอสักครู่ จะได้ไฟล์รูปภาพ gif ขึ้นมาครับสามารถ download ไปใช้งานได้
Image

ก็เป็นอันที่เรียบร้อยครับ



อ้างอิง
https://zulko.github.io/moviepy/getting_started/videoclips.html
https://pypi.org/project/moviepy/
https://awesomeopensource.com/project/Zulko/moviepy

Return to “Python Knowledge”

Who is online

Users browsing this forum: No registered users and 6 guests