本文目录导读:

Streamlit 显示视频非常简单,你只需要几行代码就能完成,非常适合快速搭建演示或原型。
以下是几种常见的实现方式:
显示本地视频文件(最简单)
前提:你有一个本地视频文件(如 demo.mp4)放在项目目录下。
import streamlit as st
from pathlib import Path
# 方法一:直接使用 st.video(推荐)
video_file = open('demo.mp4', 'rb') # 以二进制读模式打开
video_bytes = video_file.read()
st.video(video_bytes)
# 或者更简洁的写法:
# st.video(Path('demo.mp4').read_bytes())
显示网络视频
如果视频已经托管在网络上(如 YouTube、B站或视频CDN链接):
import streamlit as st
# 直接传入 URL 字符串
st.video("https://www.youtube.com/watch?v=your_video_id")
# 或
st.video("https://example.com/sample.mp4")
显示摄像头实时画面(需要额外库)
如果想实现类似视频监控的实时画面,需要结合 OpenCV:
import streamlit as st
import cv2
# 开启摄像头
cap = cv2.VideoCapture(0)
# 创建一个占位符,用于不断刷新画面
frame_placeholder = st.empty()
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
# 将 OpenCV 的 BGR 格式转为 RGB
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# 显示在 Streamlit 中
frame_placeholder.image(frame, channels="RGB")
# 控制帧率(可选)
import time
time.sleep(0.03)
使用侧边栏或列布局控制视频
import streamlit as st
# 在侧边栏加一个视频
with st.sidebar:
st.video("intro.mp4", format="video/mp4")
# 在列中显示
col1, col2 = st.columns(2)
with col1:
st.video("left_clip.mp4")
with col2:
st.video("right_clip.mp4")
核心参数说明
st.video(data, format="video/mp4", start_time=0) 支持几个参数:
- data:可以是字节、文件对象、URL 字符串或 numpy 数组(需要搭配
st.image) - format:指定视频格式(MIME类型),如
video/mp4,video/webm等 - start_time:从第几秒开始播放(单位:秒)
注意事项
- 文件大小:Streamlit 默认限制上传文件大小为 200MB(可调整),处理大视频时建议用 URL 而非本地文件
- 兼容性:确保视频编码为 H.264,浏览器兼容性最好
- 实时画面:上面的实时摄像头示例使用了
while循环,这会让页面一直加载,适合监控场景,但不适合长时间无人值守的演示 - 网络视频:部分平台(如 B 站)的视频直链有防盗链,可能需要使用特殊方式获取真实播放地址
- 简单展示本地或网络视频:1-2行代码,非常容易
- 实时摄像头:需要额外写 OpenCV 代码,但也不复杂
- 核心函数:
st.video()
所以答案是:如果你只是展示一个已有的视频文件或链接,Streamlit 做得非常简单直接。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播