Spaces:
Running
Running
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) | |
} | |