【问题标题】:More than one Audio object in a Jupyter (IPython) Notebook cellJupyter (IPython) Notebook 单元格中有多个 Audio 对象
【发布时间】:2015-10-09 23:02:36
【问题描述】:

我试图在单个 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 循环中,并在单个单元格中显示多个音频对象。

有什么想法吗?

注意:我在 Python 2.7.10 上运行带有 IPython 4.0.0 的 Jupyter 4.0.6。

【问题讨论】:

  • 重复使用IPython.display.display函数可以在单个单元格的显示区域显示多个“显示”对象。有关示例,请参见 this
  • Taar,不幸的是,这在使用 Audio 对象时不起作用(或者至少我无法弄清楚)。不过,谢谢。
  • 我这样做了: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")) 它似乎正在工作(在 Windows 7 上使用 python 3.4 + IPython 3.2...)
  • 太棒了,就是这样!您愿意将此作为答案发布吗?谢谢。

标签: python audio ipython-notebook jupyter


【解决方案1】:

IPython.display.Audio(...) 命令仅创建一个“显示”对象(在这种特殊情况下,是 DisplayObject 类的子类 Audio 的对象)。

之后,您可以对此类对象执行基本操作,该对象与DisplayObject 类相关联(以及与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对象的其他类型(子类):HTMLMarkdownMathSVGJavascriptVideoImage等. 详情请见this

当你第一次尝试这样做时,三件事真的很令人困惑(我一开始也很困惑):

  • 命令名称IPython.display.Audio,似乎暗示会显示一些东西;事实并非如此;

  • 所有这些多媒体对象统称为“显示”对象,而其中一些从未真正“显示”过,只是嵌入在 DOM 树中(例如,Javascript 对象);

  • 1234563 /em>;这是造成混淆的主要原因,因为它让人们认为您不需要使用任何特定函数来显示“显示对象”。

【讨论】:

  • 真正有教育意义的答案。我希望有更多这样的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-27
  • 1970-01-01
  • 2022-08-10
  • 2013-10-28
  • 1970-01-01
  • 2017-12-14
相关资源
最近更新 更多