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)