Streamlit 讲解专栏(八):图像、音频与视频魔法
文章目录
- 1 前言
- 2 st.image:嵌入图像内容
- 2.1 图像展示与描述
- 2.2 调整图像尺寸
- 2.3 使用本地文件或URL
- 3 st.audio:嵌入音频内容
- 3.1 播放音频文件
- 3.2 生成音频数据播放
- 4 st.video:嵌入视频内容
- 4.1 播放视频文件
- 4.2 嵌入在线视频
- 5 结语:走向更高级的Streamlit应用开发

1 前言
欢迎各位读者来到“最全Streamlit教程”专栏系列!如果您正在寻找一种简单而强大的方式来创建交互式数据应用程序,那么Streamlit无疑是您的最佳选择。作为该领域的热门框架,Streamlit让数据科学家、开发者和爱好者能够以前所未有的速度构建出引人入胜的数据可视化工具。
专栏名称:最全Streamlit教程
在这个专栏中,我们将深入探索Streamlit的各个方面,从入门基础到高级技巧,从数据可视化到交互式应用,无一不涵盖。您将逐步掌握Streamlit的核心概念,并学会如何将其灵活应用于您的项目中。
不论您是数据分析师,机器学习工程师,还是想要将数据与技术相结合的创业者,这个专栏都将为您提供所需的知识和技能,助您成为一名Streamlit的高级使用者。
在本篇博客中,我们将聚焦于Streamlit的媒体元素功能,包括st.image、st.audio和st.video。通过本文,您将了解如何使用这些功能,为您的应用增添图像、音频和视频内容,从而提升用户体验。
2 st.image:嵌入图像内容
在Streamlit应用程序中展示图像内容是增强用户体验的重要一环。Streamlit的st.image函数为您提供了在应用中嵌入图像的便捷方法。通过该函数,您可以轻松地将图像文件或URL集成到应用中,从而为用户呈现各种视觉元素。
2.1 图像展示与描述
让我们从一个简单的示例开始。假设您有一张名为’sunrise.jpg’的图像,您可以使用以下代码将其展示在您的Streamlit应用中:
import streamlit as st
from PIL import Image# 打开图像文件
image = Image.open('sunrise.jpg')# 使用st.image函数展示图像
st.image(image, caption='Sunrise by the mountains')

在这个示例中,我们首先通过PIL库的Image.open函数打开了一个图像文件。接着,使用st.image函数将图像嵌入到了应用程序中。通过caption参数,您可以为图像添加标题,提供更多信息给用户。这个标题将显示在图像下方。
2.2 调整图像尺寸
除了简单地展示图像,st.image函数还支持调整图像的尺寸。通过width参数,您可以设置图像的显示宽度,从而控制图像在应用中的呈现大小。例如:
st.image(image, caption='Sunrise by the mountains', width=300)
在上述代码中,图像的宽度被设置为300像素,可以根据实际需要进行调整。
2.3 使用本地文件或URL
值得注意的是,您可以通过本地文件路径或者URL来加载图像。如果您想要从网络上加载图像,只需将URL传递给Image.open函数即可。这使得您可以轻松地在应用中展示在线图像资源。
url = 'https://example.com/sunrise.jpg'
image_url = Image.open(url)
st.image(image_url, caption='Sunrise by the mountains')
通过st.image函数,您可以轻松地在Streamlit应用程序中展示图像内容,并为图像添加描述和适当的尺寸。不论是数据可视化、图像处理还是展示项目,嵌入图像将使您的应用更加生动有趣。在接下来的部分中,我们将继续探索其他媒体元素,以丰富您的应用体验。
在下一个章节,我们将深入了解如何使用st.audio函数来嵌入音频内容。
3 st.audio:嵌入音频内容
在Streamlit应用程序中嵌入音频内容是提升用户交互体验的关键之一。Streamlit的st.audio函数使得将音频文件或音频数据嵌入应用变得非常简单。让我们深入了解如何使用这个功能来在您的应用中播放音频。
3.1 播放音频文件
首先,我们来看一个展示如何使用st.audio播放音频文件的示例代码:
import streamlit as st# 打开音频文件
audio_file = open('myaudio.ogg', 'rb')
audio_bytes = audio_file.read()# 使用st.audio函数播放音频
st.audio(audio_bytes, format='audio/ogg')

在这个示例中,我们使用了open函数打开了一个名为’myaudio.ogg’的音频文件。接着,将音频文件的字节内容传递给st.audio函数,通过format参数指定音频格式。这将在应用中显示一个音频播放器,允许用户播放音频文件。
3.2 生成音频数据播放
除了播放预先录制的音频文件,st.audio还支持播放通过代码生成的音频数据。以下是一个示例代码,展示如何生成一个440Hz的音符并播放:
import streamlit as st
import numpy as npsample_rate = 44100 # 44100 samples per second
seconds = 2 # 音符持续2秒钟
frequency_la = 440 # 音符的频率为440 Hz# 生成时间数组
t = np.linspace(0, seconds, seconds * sample_rate, False)
# 生成440 Hz的正弦波音符
note_la = np.sin(frequency_la * t * 2 * np.pi)# 使用st.audio播放生成的音频
st.audio(note_la, sample_rate=sample_rate)
在上述代码中,我们使用NumPy库生成了一个持续2秒钟的440Hz正弦波音符。通过将生成的音频数据传递给st.audio函数,我们可以在应用中播放这个音符。
请注意,在使用st.audio播放音频数据时,您需要确保提供正确的音频格式和采样率。同时,音频文件或数据的大小可能会影响应用程序的加载和响应时间。确保优化音频内容以提供最佳用户体验。
通过st.audio函数,您可以在Streamlit应用程序中播放音频文件或自动生成的音频数据。无论是为您的数据分析可视化增加声音效果,还是用于教育或娱乐性应用,嵌入音频内容都能丰富您的应用交互性。接下来的部分中,我们将深入探讨st.video函数,让您了解如何嵌入视频内容。
4 st.video:嵌入视频内容
在Streamlit应用程序中嵌入视频内容是吸引用户关注的有效手段之一。Streamlit的st.video函数使得将视频文件或视频数据嵌入到应用中变得非常简单。让我们深入了解如何使用这个功能来在您的应用中展示视频。
4.1 播放视频文件
首先,我们来看一个展示如何使用st.video播放视频文件的示例代码:
import streamlit as st# 打开视频文件
video_file = open('myvideo.mp4', 'rb')
video_bytes = video_file.read()# 使用st.video函数播放视频
st.video(video_bytes)

在这个示例中,我们使用了open函数打开了一个名为’myvideo.mp4’的视频文件。接着,将视频文件的字节内容传递给st.video函数。这将在应用中嵌入一个视频播放器,允许用户观看视频内容。
请注意,st.video函数支持多种视频格式,但由于不同浏览器和操作系统的差异,一些格式可能会出现兼容性问题。确保选择一种广泛支持的视频格式,以确保您的应用在各种环境中能够正常播放。
4.2 嵌入在线视频
除了播放本地视频文件,st.video还支持通过URL嵌入在线视频。以下是一个示例代码,展示如何通过URL播放YouTube视频:
video_url = 'https://www.youtube.com/watch?v=your_video_id'
st.video(video_url)
在上述代码中,您只需将YouTube视频的URL传递给st.video函数,即可将视频嵌入到应用中。这使得您可以轻松地在应用中展示在线视频资源。
通过st.video函数,您可以在Streamlit应用程序中嵌入本地视频文件或在线视频。不论是为数据可视化增加动态内容,还是在培训或演示中使用视频,嵌入视频内容都能让您的应用更具吸引力。
5 结语:走向更高级的Streamlit应用开发
在本篇技术博客中,我们深入探索了Streamlit框架中的媒体元素功能,包括st.image、st.audio和st.video。通过这些功能,您可以轻松地在您的Streamlit应用程序中嵌入丰富多彩的图像、音频和视频内容,为用户带来更加丰富的交互体验。
通过st.image函数,我们学会了如何展示图像内容,并为图像添加标题和调整尺寸。这使得您的数据可视化和展示项目更具视觉冲击力,为用户带来更好的沉浸式体验。
使用st.audio函数,我们了解了如何嵌入音频文件和自动生成的音频数据。不论是为数据分析结果增添声音效果,还是在教育应用中使用音频提示,嵌入音频内容将为您的应用增添更多维度。
最后,我们深入探讨了st.video函数,了解了如何嵌入本地视频文件和在线视频。这为您提供了在应用中展示动态内容的有效方式,使得您的应用更加生动有趣。
总之,Streamlit作为一款强大而易用的数据应用开发框架,为我们提供了丰富的工具和功能,以快速构建交互式应用。通过熟练使用媒体元素,您能够为您的应用增加更多的多媒体元素,从而让用户体验更加丰富和吸引人。
在本篇博客的示例代码和解释的基础上,您可以进一步探索更多高级功能,如用户输入控件、数据交互、布局调整等。通过不断实践和学习,您将能够创建出更加复杂和功能丰富的Streamlit应用。
感谢您阅读本篇博客!如果您有任何问题、反馈或想法,欢迎在评论区与我互动。期待看到您在未来的项目中运用Streamlit创造出惊艳的交互式应用!不要停止学习和创新,祝您在Streamlit的世界中取得更多的成就。

相关文章:
Streamlit 讲解专栏(八):图像、音频与视频魔法
文章目录 1 前言2 st.image:嵌入图像内容2.1 图像展示与描述2.2 调整图像尺寸2.3 使用本地文件或URL 3 st.audio:嵌入音频内容3.1 播放音频文件3.2 生成音频数据播放 4 st.video:嵌入视频内容4.1 播放视频文件4.2 嵌入在线视频 5 结语&#x…...
python使用装饰器记录方法耗时
思路 python使用修饰器记录方法耗时,目的是每当方法执行完后,可以记录该方法耗时,而不需要在每个方法的执行前后,去创建一个临时变量,来记录耗时。 方式一(不推荐): 在每个方法的…...
JavaWeb课程学习--Day01
HTML 建立css文件: css使用方式: <span>...</span>无语意包裹标签 css中的三种选择器: 注意:播放视音频时要留出播放空间 盒子模型: 表格标签: 以上表格: 表单标签: 表…...
Spring Boot单元测试使用MockBean注解向Service注入Mock对象
1. 背景介绍 我们在测试时有一个Service,我们需要测试Service,但Service内部依赖ServiceA、ServiceB,此时我们希望Mock ServiceA,ServiceB 注入真实对象。 class Service {private ServiceA A;private ServiceB B;public int me…...
Java中使用instanceof判断对象类型
记录:470 场景:Java中使用instanceof判断对象类型。例如在解析JSON字符串转换为指定类型时,先判断类型,再定向转换。在List<Object>中遍历Object时,先判断类型,再定向转换。 版本:JDK 1…...
postman测试后端增删改查
目录 一、本文介绍 二、准备工作 (一)新建测试 (二)默认url路径查看方法 三、增删改查 (一)查询全部 (二)增加数据 (三)删除数据 (四&…...
根据源码,模拟实现 RabbitMQ - 通过 SQLite + MyBatis 设计数据库(2)
目录 一、数据库设计 1.1、数据库选择 1.2、环境配置 1.3、建库建表接口实现 1.4、封装数据库操作 1.5、针对 DataBaseManager 进行单元测试 一、数据库设计 1.1、数据库选择 MySQL 是我们最熟悉的数据库,但是这里我们选择使用 SQLite,原因如下&am…...
1、基于 CentOS 7 构建 LVS-DR 群集。 2、配置nginx负载均衡
一、基于CentOS7和、构建LVS-DR群集 准备四台虚拟机 ip作用192.168.27.150客户端192.168.27.151LVS192.168.27.152RS192.168.27.152RS 关闭防火墙 [rootlocalhost ~]# systemctl stop firewalld安装ifconfig yum install net-tools.x86_64 -y1、DS上 1.1 配置LVS虚拟IP …...
android 如何分析应用的内存(十七)——使用MAT查看Android堆
android 如何分析应用的内存(十七)——使用MAT查看Android堆 前一篇文章,介绍了使用Android profiler中的memory profiler来查看Android的堆情况。 如Android 堆中有哪些对象,这些对象的引用情况是什么样子的。 可是我们依然面临…...
Spring 使用注解储存对象
文章目录 前言存储 Bean 对象五大注解五大注解示例配置包扫描路径读取bean的示例 方法注解 Bean Bean 命名规则重命名 Bean 前言 通过在 spring-config 中添加bean的注册内容,我们已经可以实现基本的Spring读取和存储对象的操作了,但在操作中我们发现读…...
一、初始 Spring MVC
文章目录 一、回顾 MVC 模式二、初始 Spring MVC2.1 Spring MVC 核心组件2.1.1 前端控制器(DispatcherServlet)2.1.2 处理器映射器(HandlerMapping)2.1.3 处理器适配器(HandlerAdapter)2.1.3 后端控制器&am…...
《爬虫》爬取页面图片并保存
爬虫 前言代码效果 简单的爬取图片 前言 这几天打算整理与迁移一下博客。因为 CSDN 的 Markdown 编辑器很好用 ,所以全部文章与相关图片都保存在 CSDN。而且 CSDN 支持一键导出自己的文章为 markdown 文件。但导出的文件中图片的连接依旧是 url 连接。为了方便将图…...
【项目部署】JavaScript解析JSON解析报错Unexpected token xxx is not valid JSON
问题背景 这个报错发生在之前部署的一个前后端分离的项目中。后端使用的Spring Boot,前端使用的JavaScript,前后端交互使用Thymeleaf框架。 现象 项目组的另一个小伙伴说,突然有个页面打不开了,整个页面全空白。我F12打开浏览器…...
做接口测试如何上次文件
在日常工作中,经常有上传文件功能的测试场景,因此,本文介绍两种主流编写上传文件接口测试脚本的方法。 首先,要知道文件上传的一般原理:客户端根据文件路径读取文件内容,将文件内容转换成二进制文件流的格式…...
Java SPI机制详解-01
1. 概述 SPI(Service Provider Interface),是 Java 6 引入了一个内置功能,实现服务提供发现和加载机制,使之与特定接口的匹配。 SPI 机制的核心思想就是 解耦 ,将装配的控制权移到程序之外,这…...
由浅入深C系列六:C中实现字符串trim的功能
C中实现字符串trim的功能 简介设计思路代码实现运行效果 简介 一个项目中,需要用c语言实现对字符串中的字定字符进行过滤并从字符串的删除,查询了C语言的基本库,没有发现有这样的函数,于是发挥程序员的主观能力性,自力…...
博客网站添加复制转载提醒弹窗Html代码
网站如果是完全禁止右键(复制、另存为等)操作,对用户来说体验感会降低,但是又不希望自己的原创内容直接被copy,今天飞飞和你们分享几行复制转载提醒弹窗Html代码。 效果展示: 复制以下代码,将其…...
ubuntu下nfs服务安装
操作系统:ubuntu22.04.2 一、服务端安装与配置 1、在服务端安装nfs服务端组件 sudo apt install nfs-kernel-server 2、创建共享目录share并且授权所有人可以访问 sudo mkdir /shared sudo chmod -R 777 /shared 3、配置nfs sudo vim /etc/exports 这将允许…...
Unity框架学习--2
接上文 IOC 容器是一个很方便的模块管理工具。 除了可以用来注册和获取模块,IOC 容器一般还会有一个隐藏的功能,即: 注册接口模块 抽象-实现 这种形式注册和获取对象的方式是符合依赖倒置原则的。 依赖倒置原则(Dependence I…...
WebRTC音视频通话-实现GPUImage视频美颜滤镜效果iOS
WebRTC音视频通话-实现GPUImage视频美颜滤镜效果 在WebRTC音视频通话的GPUImage美颜效果图如下 可以看下 之前搭建ossrs服务,可以查看:https://blog.csdn.net/gloryFlow/article/details/132257196 之前实现iOS端调用ossrs音视频通话,可以查…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...
DAY 26 函数专题1
函数定义与参数知识点回顾:1. 函数的定义2. 变量作用域:局部变量和全局变量3. 函数的参数类型:位置参数、默认参数、不定参数4. 传递参数的手段:关键词参数5 题目1:计算圆的面积 任务: 编写一…...
小智AI+MCP
什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析:AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github:https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...
