streamlit学习-如何播放HLS视频(streamlit嵌入html)

streamlit学习-如何播放HLS视频

本文演示了streamlit如何实现hls直播[streamlit中嵌入html]

一.效果

二.直播环境搭建(仅供演示)

1.生成m3u8

bash 复制代码
ffmpeg.exe -i abc.mp4 -c:v libx264 -an -vbsf h264_mp4toannexb -f hls playlist.m3u8

2.搭建http服务器(支持跨域)

python 复制代码
import os
import sys
import http.server
import socketserver
class HTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
    def end_headers(self):
        self.send_header('Access-Control-Allow-Origin', '*')
        self.send_header('Access-Control-Allow-Methods', 'GET,POST')
        self.send_header('Access-Control-Allow-Headers', 'x-requested-with,content-type')
        http.server.SimpleHTTPRequestHandler.end_headers(self)
def server(port):
    httpd = socketserver.TCPServer(('', port), HTTPRequestHandler)
    return httpd
srv=server(8000)
srv.serve_forever()

3.验证hls(VLC播放 http://localhost:8000/playlist.m3u8)

三.streamlit demo

python 复制代码
import streamlit as st  #1.31.1
import os
import sys
import time
import streamlit.components.v1 as components

def main():
    # 设置标题,图标等
    st.set_page_config(layout="centered",page_title="HLS播放",page_icon=":shark:")
    
    st.write("演示HLS播放")
    html_content='''
<html> 
<head>
    <meta charset="utf-8">
    <style>
        .video-js {
            width: 100%;
            height: 100%;
        }
    </style>
    <script src="https://unpkg.com/hls.js@0.14.17/dist/hls.js"></script>
    <body>
        <video id="videoPlayer" controls class="video-js"></video>
    </body>
    <script>
    var video = document.getElementById('videoPlayer');
    var hls = new Hls();
    if (Hls.isSupported()) {
      hls.loadSource('http://localhost:8000/playlist.m3u8');
      hls.attachMedia(video);
      hls.on(Hls.Events.MANIFEST_PARSED, function() {
        video.play();
      });
    }
    </script>
</html>
    '''
    components.html(html_content,height=400)
    st.button("按钮")
if __name__ == "__main__":
    main()
相关推荐
Mephisto.java14 分钟前
【大数据学习 | kafka高级部分】kafka中的选举机制
大数据·学习·kafka
南宫生43 分钟前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法
冷凝女子1 小时前
【QT】海康视频及openCv抓拍正脸接口
qt·opencv·音视频·海康
武子康2 小时前
大数据-212 数据挖掘 机器学习理论 - 无监督学习算法 KMeans 基本原理 簇内误差平方和
大数据·人工智能·学习·算法·机器学习·数据挖掘
使者大牙2 小时前
【大语言模型学习笔记】第一篇:LLM大规模语言模型介绍
笔记·学习·语言模型
As977_2 小时前
前端学习Day12 CSS盒子的定位(相对定位篇“附练习”)
前端·css·学习
ajsbxi2 小时前
苍穹外卖学习记录
java·笔记·后端·学习·nginx·spring·servlet
Ocean☾2 小时前
前端基础-html-注册界面
前端·算法·html
Rattenking2 小时前
React 源码学习01 ---- React.Children.map 的实现与应用
javascript·学习·react.js
安步当歌2 小时前
【WebRTC】视频编码链路中各个类的简单分析——VideoStreamEncoder
音视频·webrtc·视频编解码·video-codec