如何在 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]);
假设我有一个包含 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]);