(八)穿越多媒体奇境:探索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…...
CAD练习——绘制房子平面图
首先还是需要设置图层、标注、文字等 XL:构造线 用构造线勾勒大致的轮廓: 使用多线命令:ML 绘制墙壁 可以看到有很多交叉点的位置 用多线编辑工具将交叉点处理 有一部分处理不了的,先讲多线分解,然后用修剪打理&…...
spring 面试题
一、Spring面试题 专题部分 1.1、什么是spring? Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack(一站式)轻量…...
Springboot项目集成Durid数据源和P6Spy以及dbType not support问题
项目开发阶段,mybatis的SQL打印有占位符,调试起来还是有点麻烦,随想整合P6Spy打印可以直接执行的SQL,方便调试,用的Durid连接池。 Springboot项目集成Durid <dependency><groupId>com.alibaba</group…...
安卓如何卸载应用
卸载系统应用 首先需要打开手机的开发者选项,启动usb调试。 第二步需要在电脑上安装adb命令,喜欢的话还可以将它加入系统path。如果不知道怎么安装,可以从这里下载免安装版本。 第三步将手机与电脑用数据线连接,注意是数据线&a…...
【云原生|Kubernetes】14-DaemonSet资源控制器详解
【云原生|Kubernetes】14-DaemonSet资源控制器详解 文章目录 【云原生|Kubernetes】14-DaemonSet资源控制器详解简介典型用法DaemonSet语法规则Pod模板Pod 选择算符在选定的节点上运行 Pod DaemonSet的 Pods 是如何被调度的污点和容忍度DaemonSet更新和回滚DaemonSet更新策略执…...
基于 Guava Retry 在Spring封装一个重试功能
pom依赖 <dependency><groupId>com.github.rholder</groupId><artifactId>guava-retrying</artifactId><version>2.0.0</version> </dependency> <dependency><groupId>org.springframework.boot</groupId>…...
适用HarmonyOS 3.1版本及以上的应用及服务开发工具 DevEco Studio 3.1.1 Release 安装
文章目录 安装步骤1.下载安装包2.安装成功后,初次运行studio2.1 配置node与ohpm的环境2.2安装sdk2.3等待安装结束 3.创建项目3.1 点击Create Project3.2 选择一个空项目3.3 项目配置3.4 Finish、等待依赖下载完毕3.5 项目创建完成 tip 提示4.配置运行环境4.1 真机运…...
[信号与系统系列] 正弦振幅调制之差拍信号
当将具有不同频率的两个正弦曲线相乘时,可以创建一个有趣的音频效果,称为差拍音符。这种现象听起来像颤音,最好通过选择一个频率非常小的信号与和另一个频率大约1KHz的信号,把二者混合从而听到。一些乐器能够自然产生差拍音符。使…...
vb+SQL航空公司管理系统设计与实现
航空公司管理信息系统 一个正常营运的航空公司需要管理所拥有的飞机、航线的设置、客户的信息等,更重要的还要提供票务管理。面对各种不同种类的信息,需要合理的数据库结构来保存数据信息以及有效的程序结构支持各种数据操作的执行。 本设计讲述如何建立一个航空公司管理信…...
python爬取网页视频
Python是一种功能强大的编程语言,被广泛应用于网络爬虫、数据分析和人工智能等领域。在网络爬虫中,常常需要从网页中获取视频或者录制网页视频。下面将介绍如何使用Python来录制网页视频。 import time from selenium import webdriver # 创建驱动程序 d…...
数据挖掘具体步骤
数据挖掘具体步骤 1、理解业务与数据 2、准备数据 数据清洗: 缺失值处理: 异常值: 数据标准化: 特征选择: 数据采样处理: 3、数据建模 分类问题: 聚类问题: 回归问题 关联分析 集成学习 image B…...
react class与hooks区别
在React中,有两种主要的方式来管理组件的状态和生命周期:Class 组件和 Hooks。 Class 组件: Class 组件是 React 最早引入的方式,它是基于 ES6 class 的语法来创建的。Class 组件包含了生命周期方法,可以用来处理组件…...
Python爬虫思维:异常处理与日志记录
作为一名专业的爬虫代理供应商,我们经常会看见各种各样的爬虫异常情况。网络请求超时、页面结构变化、反爬虫机制拦截等问题时常出现在客户的工作中。 在这篇文章中,我将和大家分享一些关于异常处理与日志记录的思维方法。通过合理的异常处理和有效的日志…...
(十六)大数据实战——安装使用mysql版的hive服务
前言 hive默认使用的是内嵌据库derby,Derby 是一个嵌入式数据库,可以轻松地以库的形式集成到应用程序中。它不需要独立的服务器进程,所有的数据存储在应用程序所在的文件系统中。为了支持hive服务更方便的使用,我们使用mysql数据…...
【信号生成器】从 Excel 数据文件创建 Simulink 信号生成器块研究(Simulink)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
【UE4 RTS】01-Camera SetUp
UE版本:4.24.3 前言 本篇主要完成游戏模式、玩家控制器和玩家控制的Pawn的设置,下一篇介绍如何实现Pawn的移动 步骤 1. 首先创建一个俯视角游戏模板 2. 首先删除“TopDownCharacter”, 3. 新建一个文件夹命名为“RTS_Toturial” 在文件夹…...
Mirror网络库 | 说明
此篇为上文,下篇:Mirror网络库 | 实战 一、介绍 基于UNET,从2014年经过9年实战测试;服务器和客户端是一个项目;使用NetworkBehaviour而不是MonoBehaviour,还有NetworkServer和NetworkClient;Mi…...
分布式异步任务处理组件(九)
最近完成了网络通信模块的一些基本代码实现,这里记录一些关于类和接口设计的问题和思考;另外进度可能会受阻,之前不知道猴年马月投的简历现在开始邀约面试了,包括今天在内的三天都有一场面试--主要是今天中午的面试过后两分钟HR就…...
[excel]vlookup函数对相同的ip进行关联
一、需求(由于ip不可泄漏所以简化如下) 有两个sheet: 找到sheet1在sheet2中存在的ip,也就是找到有漏洞的ip 二、实现 vlookup函数有4个参数 第一个:当前表要匹配的列,选择第一个sheet当前行需要处理的ip即可 第二个:第二个shee…...
Java对接腾讯云KMS:FISCO BCOS联盟链私钥托管的完整实战指南
一、引言 在FISCO BCOS联盟链的企业级应用中,私钥安全始终是生产环境绕不开的核心问题。FISCO BCOS作为国产开源联盟链平台,其Java SDK在为区块链应用开发者提供便捷API的同时,也带来了一个关键问题:私钥如何安全存储与使用? 用于交易签名的私钥由业务模块负责安全加载(…...
告别复杂配置:用MS-Swift + vLLM 5分钟搞定Qwen2.5-VL的API服务部署与调用
5分钟极速部署Qwen2.5-VL多模态API:MS-Swift与vLLM实战指南 当我们需要将多模态大模型快速集成到智能客服、内容审核或教育工具中时,传统部署流程往往让人望而却步——从环境配置到模型优化,再到API封装,每一步都可能成为项目落地…...
GLM-4.1V-9B-Base实战案例:短视频封面图内容审核与敏感要素识别
GLM-4.1V-9B-Base实战案例:短视频封面图内容审核与敏感要素识别 1. 短视频封面审核的行业痛点 在短视频内容爆炸式增长的今天,封面图作为吸引用户点击的第一道门面,其内容质量直接影响平台生态和用户体验。然而,人工审核海量封面…...
阿那格雷治疗高风险真性红细胞增多症相关血小板增多,降低血栓事件风险
真性红细胞增多症(PV)作为一种慢性骨髓增殖性肿瘤,其显著特征为红细胞数量异常增多,同时常伴随血小板计数升高。血小板增多不仅增加了血液黏稠度,更显著提升了血栓形成的风险,而血栓事件正是PV患者死亡的主…...
AcousticSense AI步骤详解:从原始.wav到ViT输入张量的全流程
AcousticSense AI步骤详解:从原始.wav到ViT输入张量的全流程 1. 引言:让AI用视觉理解音乐 你有没有想过,AI是如何"听懂"音乐的?传统方法让计算机分析音频特征,但AcousticSense AI走了一条完全不同的路——…...
VibeVoice语音助手搭建教程:支持10分钟长文本,会议纪要秒变语音
VibeVoice语音助手搭建教程:支持10分钟长文本,会议纪要秒变语音 你有没有过这样的经历?深夜加班整理完一份长达十几页的会议纪要,领导突然发来消息:“小王,把会议重点录个语音版,明早发给团队。…...
Krita AI绘画插件终极指南:从零开始掌握AI图像生成艺术
Krita AI绘画插件终极指南:从零开始掌握AI图像生成艺术 【免费下载链接】krita-ai-diffusion Streamlined interface for generating images with AI in Krita. Inpaint and outpaint with optional text prompt, no tweaking required. 项目地址: https://gitcod…...
3步搞定专业歌词制作:LRC Maker终极指南
3步搞定专业歌词制作:LRC Maker终极指南 【免费下载链接】lrc-maker 歌词滚动姬|可能是你所能见到的最好用的歌词制作工具 项目地址: https://gitcode.com/gh_mirrors/lr/lrc-maker 还在为制作歌词时间轴而烦恼吗?想要让歌词与音乐完美…...
tao-8k嵌入模型实战:如何用WebUI轻松实现文本语义相似度计算
tao-8k嵌入模型实战:如何用WebUI轻松实现文本语义相似度计算 1. 引言:从文本到向量的魔法 你有没有想过,计算机是如何“理解”两句话意思差不多的?比如,“今天天气真好”和“阳光明媚的一天”,我们人类一…...
nli-distilroberta-base保姆级教学:NLI结果集成至Elasticsearch脚本评分器
nli-distilroberta-base保姆级教学:NLI结果集成至Elasticsearch脚本评分器 1. 项目介绍 nli-distilroberta-base是一个基于DistilRoBERTa模型的自然语言推理(NLI)Web服务。它能帮你判断两个句子之间的关系,就像一个有逻辑思维能力的AI助手。想象一下&a…...
