【问题标题】:Multiple videos side-by-side with IPython Display多个视频并排与 IPython Display
【发布时间】:2021-04-13 15:03:12
【问题描述】:

我一直在使用this StackOverflow post 中建议的有用答案在 Jupyter Notebook 中一次查看多个视频。从本质上讲,HTML 似乎无法正常工作,但 IPython 这样做(给定所需视频的 filepaths 列表)具有魔力:

from IPython import display

for filepath in filepaths:
    display.display(display.Video(filepath, embed=True))

现在我得到了输出中显示的所有视频。但是,这些视频是垂直堆叠的。侧面有很多空间,最好先将它们并排放置而不是垂直放置,这样我可以很容易地在屏幕上看到它们。我该怎么做?

【问题讨论】:

    标签: python jupyter-notebook ipython


    【解决方案1】:

    您可以使用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
    

    【讨论】:

    • 恐怕没用:视频仍然显示,但它们仍然垂直堆叠显示
    • 嗯,它对我来说效果很好。你能尝试更新到最新版本的 IPython、Jupyter 和 ipywidgets 吗?我分别有 7.19.0、6.2.0 和 7.6.3。或者它也可能是浏览器,我使用的是 Firefox。
    • 嗯 7.16.1、6.0.3、7.5.0 对我来说。听起来可能不是问题吗?浏览器可能是,我在 Chrome 中使用 Docker 容器。也不确定我的容器是否有 HTML 或其他内容,因为我没有明确安装类似的东西
    • 您可以检查这里的其他示例是否适合您:ipywidgets.readthedocs.io/en/stable/examples/… 如果没有,那么您当前的设置由于某种原因不适用于 ipywidgets。
    • 好的,谢谢!是的,他们没有工作,这至少告诉我要调查什么。如果我让 ipywidgets 工作,我会尝试你的答案并接受它,如果它有效
    【解决方案2】:

    这对我来说在 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)
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-26
      • 1970-01-01
      • 2013-05-29
      • 2019-03-20
      • 2020-07-28
      • 1970-01-01
      相关资源
      最近更新 更多