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音视频通话,可以查…...
douyin-downloader:抖音视频批量下载的终极技术指南与实战教程
douyin-downloader:抖音视频批量下载的终极技术指南与实战教程 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallba…...
MediaCrawler:多平台数据采集引擎的技术架构与实战应用
MediaCrawler:多平台数据采集引擎的技术架构与实战应用 【免费下载链接】MediaCrawler-new 项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new MediaCrawler是一款面向企业级应用的多平台数据采集解决方案,通过创新的浏览器上…...
Qwen3-4B开箱即用体验:无需复杂配置,直接开启对话
Qwen3-4B开箱即用体验:无需复杂配置,直接开启对话 1. 为什么选择Qwen3-4B Instruct-2507 在众多开源大语言模型中,Qwen3-4B Instruct-2507以其独特的轻量化设计和专注纯文本处理的能力脱颖而出。这个由阿里通义千问团队开发的40亿参数模型&am…...
新KS型单级单吸离心泵的设计(说明书+CAD图纸+调研报告+任务书+英文翻译)
新KS型单级单吸离心泵作为工业流体输送领域的核心设备,其设计聚焦于提升效率、降低能耗与延长使用寿命三大核心目标。该泵型通过优化叶轮几何结构与流道设计,显著减少流体在泵体内的能量损失,实现高效稳定的流量输出。其单级单吸结构简化了内…...
HunyuanVideo-Foley入门必看:音频质量客观指标(PESQ/STOI)实测报告
HunyuanVideo-Foley入门必看:音频质量客观指标(PESQ/STOI)实测报告 1. 引言 在音视频生成领域,音频质量评估一直是开发者关注的重点。HunyuanVideo-Foley作为一款集视频生成与音效生成于一体的AI工具,其音频输出质量…...
【macOS】精选效率神器!大幅提升办公速度的宝藏软件
目录 01 文本编辑 1.1 Notable 1.2 MarkEdit01 文本编辑 1.1 Notable 🌸 开源轻量化 Markdown 笔记,主打数据可控。 🌸 支持多系统:Linux, Windows, macOS。 🌺 网址为:https://notable.app/ 1.2 MarkEdi…...
029、图像到图像翻译:SDEdit与Paint by Example
调试一个老项目,遇到个头疼问题:用户上传的手绘草图,需要自动转成写实风格的产品图。试了传统GAN,效果要么太“塑料感”,要么细节全糊。同事扔来一句:“试试扩散模型呗,现在不都流行这个?” 翻了几篇论文,发现SDEdit和Paint by Example这两个路子挺有意思,今天把调试…...
Phi-3-mini-4k-instruct-gguf镜像免配置实战:独立venv+健康检查+一键访问
Phi-3-mini-4k-instruct-gguf镜像免配置实战:独立venv健康检查一键访问 1. 平台介绍 Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本,特别适合问答、文本改写、摘要整理和简短创作等场景。这个镜像已经完成了本地部署&…...
如何通过3个关键步骤将HDRI全景图转换为立方体贴图:从概念到实践
如何通过3个关键步骤将HDRI全景图转换为立方体贴图:从概念到实践 【免费下载链接】HDRI-to-CubeMap Image converter from spherical map to cubemap 项目地址: https://gitcode.com/gh_mirrors/hd/HDRI-to-CubeMap HDRI-to-CubeMap是一个基于浏览器的专业工…...
大棚检测系统
视频演示01—项目简介系统功能多参数环境监测:实时采集空气温度、湿度、光照强度、CO₂浓度、土壤湿度。本地显示:通过 0.96 英寸 OLED 屏幕直观显示各项数据。无线传输:通过 HC-04/05 蓝牙模块将数据发送至手机或上位机(支持简单…...
