基于streamlitk开发一款视频播放器/音乐播放器

import os

import streamlit as st
from pydub import AudioSegment
import pyaudio

def play_audio(audio_data):
    # 创建音频流
    p = pyaudio.PyAudio()
    stream = p.open(format=p.get_format_from_width(2),
                    channels=2,
                    rate=44100,
                    output=True)

    # 播放音频流
    stream.write(audio_data)

    # 关闭音频流
    stream.stop_stream()
    stream.close()
    p.terminate()


import streamlit as st
import cv2
from moviepy.editor import VideoFileClip


def main():
    st.title("视频播放器")

    # 上传视频文件
    video_file = st.file_uploader("选择视频文件", type=["mp4"])

    if video_file is not None:
        # 读取视频文件
        video_data = video_file.read()
        st.video(video_data)

        # 播放视频
        play_video(video_data)

    st.title("音乐播放器")

    # 上传音频文件
    audio_file = st.file_uploader("选择音频文件", type=["mp3"])

    if audio_file is not None:
        # 读取音频文件
        audio_data = audio_file.read()
        st.audio(audio_data, format='audio/mp3')

        # 播放音频
        play_audio(audio_data)


def play_video(video_data):
    # 将视频数据保存为临时文件
    temp_file = "temp_video.mp4"
    with open(temp_file, "wb") as file:
        file.write(video_data)

    # 使用OpenCV读取视频
    video = cv2.VideoCapture(temp_file)

    # 播放视频
    while video.isOpened():
        ret, frame = video.read()
        if not ret:
            break

        # # 在Streamlit界面上显示帧
        # st.image(frame, channels="BGR")

    # 关闭视频流和删除临时文件
    video.release()
    cv2.destroyAllWindows()
    if st.button("删除临时文件"):
        os.remove(temp_file)


if __name__ == "__main__":
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值