Jupyter (IPython) Notebook 单元格中有多个音频对象
More than one Audio object in a Jupyter (IPython) Notebook cell
我试图在一个 Jupyter Notebook 单元格中嵌入多个 IPython.display.Audio
对象,但由于某种原因只显示最后一个。
这里有一个简单的例子:
import IPython
IPython.display.Audio(url="https://ccrma.stanford.edu/~urinieto/drop/090412-Incendios.mp3")
IPython.display.Audio(url="https://ccrma.stanford.edu/~urinieto/drop/130224-Undertow.mp3")
这只显示一个(第二个)音频对象。理想情况下,我想将它放在 for
循环中并在单个单元格中显示多个音频对象。
有什么想法吗?
注意:我是 运行 Jupyter 4.0.6,IPython 4.0.0,Python 2.7.10。
IPython.display.Audio(...)
命令仅创建一个"display"对象(在那种特殊情况下,subclass的对象Audio
class DisplayObject
).
之后,您可以对此类对象执行基本操作,绑定到 class DisplayObject
(以及绑定到 class Audio
的特定内容)。其中一项操作包括使用 IPython.display.display
函数 显示 它。
您的特定目标将通过以下代码实现:
import IPython
IPython.display.display(IPython.display.Audio(url="https://ccrma.stanford.edu/~urinieto/drop/090412-Incendios.mp3"))
IPython.display.display(IPython.display.Audio(url="https://ccrma.stanford.edu/~urinieto/drop/130224-Undertow.mp3"))
相同的机制用于显示 DisplayObject
对象的其他类型(subclasses):HTML
、Markdown
、Math
、SVG
、Javascript
、Video
、Image
等。详情请参阅 this。
当你第一次尝试这样做时,有三件事真的很困惑(一开始我也很困惑):
命令的名称IPython.display.Audio
,似乎暗示着要显示一些东西;事实并非如此;
事实是所有这些多媒体对象统称为 "display" 对象,而其中一些根本就不是 "displayed",只是嵌入在 DOM 树中(例如,Javascript
对象);
事实上,如果你创建了这样一个对象并且不在其上使用IPython.display.display
,它将被标准IPython交互机制自动显示如果它是在单元格中创建的最后一个东西;这是混淆的主要来源,因为它让人们认为您不需要使用任何特定函数来显示 "display object".
我试图在一个 Jupyter Notebook 单元格中嵌入多个 IPython.display.Audio
对象,但由于某种原因只显示最后一个。
这里有一个简单的例子:
import IPython
IPython.display.Audio(url="https://ccrma.stanford.edu/~urinieto/drop/090412-Incendios.mp3")
IPython.display.Audio(url="https://ccrma.stanford.edu/~urinieto/drop/130224-Undertow.mp3")
这只显示一个(第二个)音频对象。理想情况下,我想将它放在 for
循环中并在单个单元格中显示多个音频对象。
有什么想法吗?
注意:我是 运行 Jupyter 4.0.6,IPython 4.0.0,Python 2.7.10。
IPython.display.Audio(...)
命令仅创建一个"display"对象(在那种特殊情况下,subclass的对象Audio
class DisplayObject
).
之后,您可以对此类对象执行基本操作,绑定到 class DisplayObject
(以及绑定到 class Audio
的特定内容)。其中一项操作包括使用 IPython.display.display
函数 显示 它。
您的特定目标将通过以下代码实现:
import IPython
IPython.display.display(IPython.display.Audio(url="https://ccrma.stanford.edu/~urinieto/drop/090412-Incendios.mp3"))
IPython.display.display(IPython.display.Audio(url="https://ccrma.stanford.edu/~urinieto/drop/130224-Undertow.mp3"))
相同的机制用于显示 DisplayObject
对象的其他类型(subclasses):HTML
、Markdown
、Math
、SVG
、Javascript
、Video
、Image
等。详情请参阅 this。
当你第一次尝试这样做时,有三件事真的很困惑(一开始我也很困惑):
命令的名称
IPython.display.Audio
,似乎暗示着要显示一些东西;事实并非如此;事实是所有这些多媒体对象统称为 "display" 对象,而其中一些根本就不是 "displayed",只是嵌入在 DOM 树中(例如,
Javascript
对象);事实上,如果你创建了这样一个对象并且不在其上使用
IPython.display.display
,它将被标准IPython交互机制自动显示如果它是在单元格中创建的最后一个东西;这是混淆的主要来源,因为它让人们认为您不需要使用任何特定函数来显示 "display object".