我有一个本地视频文件(.avi,但可以转换),我想展示一个客户端(即它是私有的,不能发布到网上),但我不能弄清楚如何在IPython笔记本中播放它。
经过一番谷歌搜索后,似乎HTML5视频标签可能就行了,但我不知道任何HTML,也无法让它发挥。
有关如何嵌入此内容的任何想法?
答案 0 :(得分:27)
将其作为HTML5视频播放:]
from IPython.display import HTML
HTML("""
<video width="320" height="240" controls>
<source src="path/to/your.mp4" type="video/mp4">
</video>
""")
<强>更新强>
此外,使用魔法小区:
%%HTML
<video width="320" height="240" controls>
<source src="path/to/your.mp4" type="video/mp4">
</video>
同样适用于音频
%%HTML
<audio controls>
<source src="AUDIO-FILE.mp3">
</audio>
答案 1 :(得分:23)
您必须将视频读入内存并对其进行base64编码,因为IPython Notebook不是静态文件服务器:
import io
import base64
from IPython.display import HTML
video = io.open('test.mp4', 'r+b').read()
encoded = base64.b64encode(video)
HTML(data='''<video alt="test" controls>
<source src="data:video/mp4;base64,{0}" type="video/mp4" />
</video>'''.format(encoded.decode('ascii')))
答案 2 :(得分:13)
使用降价单元格:
<video controls src="path/to/video.mp4" />
答案 3 :(得分:2)
一种更简单的方法:
from IPython.display import Video
Video("OUT.mp4")
答案 4 :(得分:1)
查看此链接,您会找到更多https://gist.github.com/christopherlovell/e3e70880c0b0ad666e7b5fe311320a62
来自IPython.display的导入HTML
from IPython.display import HTML
HTML('<iframe width="560" height="315" src="https://www.youtube.com/embed/S_f2qV2_U00?rel=0&controls=0&showinfo=0" frameborder="0" allowfullscreen></iframe>')
答案 5 :(得分:1)
@Configuration
@EnableJpaRepositories(basePackages = {"xxx.xxx.xxx.core.dao"})
@EnableTransactionManagement
public class Repository {
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/xxxx");
dataSource.setUsername("xxxx");
dataSource.setPassword("xxxx");
return dataSource;
}
@Bean
public EntityManagerFactory entityManagerFactory() {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setGenerateDdl(true);
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
factory.setPackagesToScan("xx.xxxx.xxxx.xxxx.domain");
factory.setDataSource(dataSource());
factory.afterPropertiesSet();
return factory.getObject();
}
@Bean
public PlatformTransactionManager transactionManager() {
JpaTransactionManager txManager = new JpaTransactionManager();
txManager.setEntityManagerFactory(entityManagerFactory());
return txManager;
}
&#13;
答案 6 :(得分:0)
@Atcold的评论今天救了我;),所以我将其发布为更详细的答案。
我有一个带有视频捕获命令的单元格,如下所示:
!sudo ffmpeg -t 5 -s 320x240 -i /dev/video0 /home/jovyan/capture.mp4
捕获的文件保存在git存储库之外的位置,以管理磁盘使用情况。
对于jupyter笔记本,文件必须与.ipynb文件位于同一目录。
# run this before calling Video()
! ln -sf "/home/jovyan/capture.mp4" ./capture.mp4
from IPython.display import Video
Video("capture.mp4")
瞧! 谢谢大家的精彩回答和评论。
答案 7 :(得分:0)
据我所知,Ubuntu 系统在支持 直接渲染视频文件,如 .mp4。 您需要使用 jupyter notebook 进行一些编码/解码。 示例:
mp4 = open(path,'rb').read()
data_url = "data:video/mp4;base64," + b64encode(mp4).decode()
这个片段可以解决这个问题。
from IPython.display import display, HTML from base64 import b64encode
def display_video(path):
mp4 = open(path,'rb').read()
data_url = "data:video/mp4;base64," + b64encode(mp4).decode()
display(
HTML(
"""
<video width=400 controls>
<source src="%s" type="video/mp4">
</video>
""" % data_url
)
)
snipet 是从 (https://github.com/facebookresearch/AugLy/blob/main/examples/AugLy_video.ipynb) 获得的,但它在其他存储库中经常使用
答案 8 :(得分:0)
你也可以试试这个:
from ipywidgets import Video
Video.from_file("./play_video_test.mp4", width=320, height=320)