import streamlit as st from app.models.schema import VideoClipParams, VideoAspect def render_video_panel(tr): """渲染视频配置面板""" with st.container(border=True): st.write(tr("Video Settings")) params = VideoClipParams() render_video_config(tr, params) def render_video_config(tr, params): """渲染视频配置""" # 视频比例 video_aspect_ratios = [ (tr("Portrait"), VideoAspect.portrait.value), (tr("Landscape"), VideoAspect.landscape.value), ] selected_index = st.selectbox( tr("Video Ratio"), options=range(len(video_aspect_ratios)), format_func=lambda x: video_aspect_ratios[x][0], ) params.video_aspect = VideoAspect(video_aspect_ratios[selected_index][1]) st.session_state['video_aspect'] = params.video_aspect.value # 视频画质 video_qualities = [ ("4K (2160p)", "2160p"), ("2K (1440p)", "1440p"), ("Full HD (1080p)", "1080p"), ("HD (720p)", "720p"), ("SD (480p)", "480p"), ] quality_index = st.selectbox( tr("Video Quality"), options=range(len(video_qualities)), format_func=lambda x: video_qualities[x][0], index=2 # 默认选择 1080p ) st.session_state['video_quality'] = video_qualities[quality_index][1] # 原声音量 params.original_volume = st.slider( tr("Original Volume"), min_value=0.0, max_value=1.0, value=0.7, step=0.01, help=tr("Adjust the volume of the original audio") ) st.session_state['original_volume'] = params.original_volume def get_video_params(): """获取视频参数""" return { 'video_aspect': st.session_state.get('video_aspect', VideoAspect.portrait.value), 'video_quality': st.session_state.get('video_quality', '1080p'), 'original_volume': st.session_state.get('original_volume', 0.7) }