IPython 显示并排显示多个视频
Multiple videos side-by-side with IPython Display
我一直在使用 中建议的有用答案在 Jupyter Notebook 中一次查看多个视频。本质上,HTML 似乎没有用,但是 IPython 做了类似这样的事情(给出了所需视频的 filepaths
列表)神奇地工作:
from IPython import display
for filepath in filepaths:
display.display(display.Video(filepath, embed=True))
现在我得到了输出中显示的所有视频。但是,这些视频是垂直堆叠的。旁边有很多 space,最好先并排放置而不是垂直放置,这样我可以很容易地在屏幕上看到它们。我该怎么做?
您可以使用 ipywidgets
执行此操作:在 ipywidgets.Output
小部件中显示视频,
然后使用 ipywidgets.GridspecLayout
排列您的小部件。
这是一个例子:
from ipywidgets import Output, GridspecLayout
from IPython import display
grid = GridspecLayout(1, len(filepaths))
for i, filepath in enumerate(filepaths):
out = Output()
with out:
display.display(display.Video(filepath, embed=True))
grid[0, i] = out
grid
这对我来说在 Colab 中运行良好:
from IPython.display import HTML
from base64 import b64encode
html_str=""
for filepath in filepaths:
mp4 = open(filepath,'rb').read()
data_url = "data:video/mp4;base64," + b64encode(mp4).decode()
html_str += """
<video width=400 controls>
<source src="%s" type="video/mp4">
</video>
""" % data_url
HTML(html_str)
我一直在使用 filepaths
列表)神奇地工作:
from IPython import display
for filepath in filepaths:
display.display(display.Video(filepath, embed=True))
现在我得到了输出中显示的所有视频。但是,这些视频是垂直堆叠的。旁边有很多 space,最好先并排放置而不是垂直放置,这样我可以很容易地在屏幕上看到它们。我该怎么做?
您可以使用 ipywidgets
执行此操作:在 ipywidgets.Output
小部件中显示视频,
然后使用 ipywidgets.GridspecLayout
排列您的小部件。
这是一个例子:
from ipywidgets import Output, GridspecLayout
from IPython import display
grid = GridspecLayout(1, len(filepaths))
for i, filepath in enumerate(filepaths):
out = Output()
with out:
display.display(display.Video(filepath, embed=True))
grid[0, i] = out
grid
这对我来说在 Colab 中运行良好:
from IPython.display import HTML
from base64 import b64encode
html_str=""
for filepath in filepaths:
mp4 = open(filepath,'rb').read()
data_url = "data:video/mp4;base64," + b64encode(mp4).decode()
html_str += """
<video width=400 controls>
<source src="%s" type="video/mp4">
</video>
""" % data_url
HTML(html_str)