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

时间:2018-11-19 16:10:54

标签: html jupyter-notebook ipywidgets

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

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

GlobalScope.launch {
    writeFileAsync(file, bytes)
}

private suspend fun writeFileAsync(file: File, bytes: ByteArray) {
    try {
        file.writeBytes(bytes)
    }  catch (e: Exception) {
        throw PersistenceException(e)
    }
}

这不起作用。 但只需致电

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]);

有效

我需要调用一些Python魔术吗?

1 个答案:

答案 0 :(得分:2)

您实际上并没有显示结果。 Jupyter会自动尝试显示单元格中最后一行代码的结果,因此这就是手动执行HTML时显示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]);