如何在 Jupyter 笔记本上的 Jupyter 小部件上显示视频

How to show a video on a Jupyter widget on a Jupyter Notebook

假设我有一个包含 4 个视频文件的文件夹(命名为 "movie1.mp4"、"movie2.mp4" 等)

我想使用ipywidgets 让用户控制他想看的视频。像这样:

import ipywidgets as wd
from IPython.display import HTML

def showvideo(i):
    HTML("""<video width="100" height="100" controls><source src="movie{}.mp4" type="video/mp4"></video>""".format(i))

wd.interact(showvideo, video_number = [1, 2, 3, 4]);

这行不通。 但只是调用

from IPython.display import HTML

HTML("""<video width="100" height="100" controls><source src="movie1.mp4" type="video/mp4"></video>""")

有效

我需要调用一些 python 魔法吗?

您实际上并没有显示结果。 Jupyter 会自动尝试在单元格中显示最后一行代码的结果,所以这就是为什么你的 HTML 在手动执行时显示,但如果你以编程方式调用它或者你的 HTML 不是在最后一行,您必须在 HTML.

上手动调用 display()

此外,您没有正确指定参数。函数中的参数名称必须与您提供给 interact 的名称相匹配。将您的代码更改为此应该有效:

def showvideo(video_number):
    display(HTML("""<video width="100" height="100" controls><source src="movie{}.mp4" type="video/mp4"></video>""".format(video_number)))

wd.interact(showvideo, video_number = [1, 2, 3, 4]);