Streamlit视频展示简单吗

wen python案例 7

本文目录导读:

Streamlit视频展示简单吗

  1. 显示本地视频文件(最简单)
  2. 显示网络视频
  3. 显示摄像头实时画面(需要额外库)
  4. 使用侧边栏或列布局控制视频
  5. 核心参数说明
  6. 注意事项

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:从第几秒开始播放(单位:秒)

注意事项

  1. 文件大小:Streamlit 默认限制上传文件大小为 200MB(可调整),处理大视频时建议用 URL 而非本地文件
  2. 兼容性:确保视频编码为 H.264,浏览器兼容性最好
  3. 实时画面:上面的实时摄像头示例使用了 while 循环,这会让页面一直加载,适合监控场景,但不适合长时间无人值守的演示
  4. 网络视频:部分平台(如 B 站)的视频直链有防盗链,可能需要使用特殊方式获取真实播放地址
  • 简单展示本地或网络视频:1-2行代码,非常容易
  • 实时摄像头:需要额外写 OpenCV 代码,但也不复杂
  • 核心函数st.video()

所以答案是:如果你只是展示一个已有的视频文件或链接,Streamlit 做得非常简单直接

抱歉,评论功能暂时关闭!