使用Python的交互式视频

时间:2017-11-09 06:55:43

标签: python video tkinter

我只是想知道是否可以在Python 3.6中制作交互式视频?我查看了使用python-gstreamer将视频输入Tkinter的选项,但是我无法让它工作。

那么有人可以建议一种方法并解释如何在Python中播放视频吗?那么也许可能有一个Tkinter窗口,这个视频可以显示在这个框架中吗?

如果Python不可能,欢迎任何其他想法。

谢谢

2 个答案:

答案 0 :(得分:0)

以下代码生成Tkinter窗口并在其中显示视频。如果您还没有所需的库,则需要安装一些依赖项。

import tkinter as tk, threading
import imageio
from PIL import Image, ImageTk

name = "video.mp4" # video file path
video = imageio.get_reader(name)

def stream(label):

    for data in video.iter_data():
        frame_image = ImageTk.PhotoImage(Image.fromarray(data))
        label.config(image=frame_image)
        label.image = frame_image

if __name__ == "__main__":

    root = tk.Tk()
    video_label = tk.Label(root)
    video_label.pack()
    thread = threading.Thread(target=stream, args=(video_label,))
    thread.daemon = 1
    thread.start()
    root.mainloop()

答案 1 :(得分:0)

您可以在jupyter笔记本中的“视频”小部件中尝试使用此方法:

from ipywidgets import Video, Image
from IPython.display import display
from ipywidgets import Checkbox
fileA= 'videoA.mp4'
fileB= 'videoB.mp4'
video = Video.from_file(fileB)
top_toggle = Checkbox(description='Change Video')

def video_loader(filename):
    with open(filename, 'rb') as f:
        video.value = f.read()
def video_change(button):
    if button['new']:
        video_loader(fileA)
    else:
        video_loader(fileB)
top_toggle.observe(video_change, names='value')

display(top_toggle)
display(video)

另请参阅此处: https://github.com/QuantStack/quantstack-talks/blob/master/2018-11-14-PyParis-widgets/notebooks/1.ipywidgets.ipynb