mirror of
https://github.com/linyqh/NarratoAI.git
synced 2025-12-12 19:52:48 +00:00
剩余最后一步,合成所有素材
This commit is contained in:
parent
e75157a7ac
commit
67d6f353eb
@ -7,6 +7,7 @@ from typing import List
|
||||
from loguru import logger
|
||||
from openai import OpenAI
|
||||
from openai import AzureOpenAI
|
||||
from moviepy.editor import VideoFileClip
|
||||
from openai.types.chat import ChatCompletion
|
||||
import google.generativeai as gemini
|
||||
from googleapiclient.errors import ResumableUploadError
|
||||
@ -406,17 +407,19 @@ def compress_video(input_path: str, output_path: str):
|
||||
return
|
||||
|
||||
try:
|
||||
command = [
|
||||
ffmpeg_path,
|
||||
"-i", input_path,
|
||||
"-c:v", "h264",
|
||||
"-b:v", "500k",
|
||||
"-c:a", "aac",
|
||||
"-b:a", "128k",
|
||||
output_path
|
||||
]
|
||||
logger.info(f"执行命令: {' '.join(command)}")
|
||||
subprocess.run(command, check=True)
|
||||
clip = VideoFileClip(input_path)
|
||||
clip.write_videofile(output_path, codec='libx264', audio_codec='aac', bitrate="500k", audio_bitrate="128k")
|
||||
# command = [
|
||||
# ffmpeg_path,
|
||||
# "-i", input_path,
|
||||
# "-c:v", "h264",
|
||||
# "-b:v", "500k",
|
||||
# "-c:a", "aac",
|
||||
# "-b:a", "128k",
|
||||
# output_path
|
||||
# ]
|
||||
# logger.info(f"执行命令: {' '.join(command)}")
|
||||
# subprocess.run(command, check=True)
|
||||
except subprocess.CalledProcessError as e:
|
||||
logger.error(f"视频压缩失败: {e}")
|
||||
raise
|
||||
@ -814,7 +817,8 @@ if __name__ == "__main__":
|
||||
# gemini_video_transcription(video_subject, video_path, language)
|
||||
|
||||
# 2. 解说文案
|
||||
video_path = "/Users/apple/Desktop/home/NarratoAI/resource/videos/1.mp4"
|
||||
# video_path = "/Users/apple/Desktop/home/NarratoAI/resource/videos/1.mp4"
|
||||
video_path = "E:\\projects\\NarratoAI\\resource\\videos\\1.mp4"
|
||||
video_plot = """
|
||||
李自忠拿着儿子李牧名下的存折,去银行取钱给儿子救命,却被要求证明"你儿子是你儿子"。
|
||||
走投无路时碰到银行被抢劫,劫匪给了他两沓钱救命,李自忠却因此被银行以抢劫罪起诉,并顶格判处20年有期徒刑。
|
||||
|
||||
@ -476,24 +476,17 @@ def start_subclip(task_id: str, params: VideoClipParams, subclip_path_videos):
|
||||
|
||||
if __name__ == "__main__":
|
||||
task_id = "test123456"
|
||||
subclip_path_videos = {'01:17-01:37': './storage/cache_videos/vid-01_17-01_37.mp4',
|
||||
'00:00-00:06': './storage/cache_videos/vid-00_00-00_06.mp4',
|
||||
'00:06-00:09': './storage/cache_videos/vid-00_06-00_09.mp4',
|
||||
'01:03-01:10': './storage/cache_videos/vid-01_03-01_10.mp4',
|
||||
'01:10-01:17': './storage/cache_videos/vid-01_10-01_17.mp4',
|
||||
'00:24-00:27': './storage/cache_videos/vid-00_24-00_27.mp4',
|
||||
'01:28-01:36': './storage/cache_videos/vid-01_28-01_36.mp4',
|
||||
'00:32-00:41': './storage/cache_videos/vid-00_32-00_41.mp4',
|
||||
'01:36-01:58': './storage/cache_videos/vid-01_36-01_58.mp4',
|
||||
'00:12-00:15': './storage/cache_videos/vid-00_12-00_15.mp4',
|
||||
'00:09-00:12': './storage/cache_videos/vid-00_09-00_12.mp4',
|
||||
'02:12-02:25': './storage/cache_videos/vid-02_12-02_25.mp4',
|
||||
'02:03-02:12': './storage/cache_videos/vid-02_03-02_12.mp4',
|
||||
'01:58-02:03': './storage/cache_videos/vid-01_58-02_03.mp4',
|
||||
'03:14-03:18': './storage/cache_videos/vid-03_14-03_18.mp4',
|
||||
'03:18-03:20': './storage/cache_videos/vid-03_18-03_20.mp4'}
|
||||
subclip_path_videos = {'00:41-01:58': 'E:\\projects\\NarratoAI\\storage\\cache_videos/vid-00_41-01_58.mp4',
|
||||
'00:06-00:15': 'E:\\projects\\NarratoAI\\storage\\cache_videos/vid-00_06-00_15.mp4',
|
||||
'01:10-01:17': 'E:\\projects\\NarratoAI\\storage\\cache_videos/vid-01_10-01_17.mp4',
|
||||
'00:47-01:03': 'E:\\projects\\NarratoAI\\storage\\cache_videos/vid-00_47-01_03.mp4',
|
||||
'01:03-01:10': 'E:\\projects\\NarratoAI\\storage\\cache_videos/vid-01_03-01_10.mp4',
|
||||
'02:40-03:08': 'E:\\projects\\NarratoAI\\storage\\cache_videos/vid-02_40-03_08.mp4',
|
||||
'03:02-03:20': 'E:\\projects\\NarratoAI\\storage\\cache_videos/vid-03_02-03_20.mp4',
|
||||
'03:18-03:20': 'E:\\projects\\NarratoAI\\storage\\cache_videos/vid-03_18-03_20.mp4'}
|
||||
|
||||
params = VideoClipParams(
|
||||
video_clip_json_path="/Users/apple/Desktop/home/NarratoAI/resource/scripts/test003.json",
|
||||
video_origin_path="/Users/apple/Desktop/home/NarratoAI/resource/videos/1.mp4",
|
||||
video_clip_json_path="E:\\projects\\NarratoAI\\resource/scripts/test003.json",
|
||||
video_origin_path="E:\\projects\\NarratoAI\\resource/videos/1.mp4",
|
||||
)
|
||||
start_subclip(task_id, params, subclip_path_videos=subclip_path_videos)
|
||||
|
||||
@ -300,7 +300,8 @@ def generate_video(
|
||||
)
|
||||
video_clip.close()
|
||||
del video_clip
|
||||
logger.success("completed")
|
||||
logger.success(""
|
||||
"completed")
|
||||
|
||||
|
||||
def generate_video_v2(
|
||||
@ -310,6 +311,18 @@ def generate_video_v2(
|
||||
output_file: str,
|
||||
params: Union[VideoParams, VideoClipParams],
|
||||
):
|
||||
"""
|
||||
合并所有素材
|
||||
Args:
|
||||
video_path:
|
||||
audio_paths:
|
||||
subtitle_path:
|
||||
output_file:
|
||||
params:
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
aspect = VideoAspect(params.video_aspect)
|
||||
video_width, video_height = aspect.to_resolution()
|
||||
|
||||
@ -546,13 +559,11 @@ def combine_clip_videos(combined_video_path: str,
|
||||
# 一遍又一遍地添加下载的剪辑,直到达到音频的持续时间 (max_duration)
|
||||
# while video_duration < audio_duration:
|
||||
for video_path, video_ost in zip(video_paths, video_ost_list):
|
||||
print(video_path)
|
||||
print(video_ost)
|
||||
cache_video_path = utils.root_dir()
|
||||
clip = VideoFileClip(os.path.join(cache_video_path, video_path))
|
||||
# # 通过 ost 字段判断是否播放原声
|
||||
# if not video_ost:
|
||||
# clip = clip.without_audio()
|
||||
# 通过 ost 字段判断是否播放原声
|
||||
if not video_ost:
|
||||
clip = clip.without_audio()
|
||||
# # 检查剪辑是否比剩余音频长
|
||||
# if (audio_duration - video_duration) < clip.duration:
|
||||
# clip = clip.subclip(0, (audio_duration - video_duration))
|
||||
|
||||
@ -3,6 +3,12 @@ set CURRENT_DIR=%CD%
|
||||
echo ***** Current directory: %CURRENT_DIR% *****
|
||||
set PYTHONPATH=%CURRENT_DIR%
|
||||
|
||||
set "vpn_proxy_url=%http://127.0.0.1:7890%"
|
||||
|
||||
:: 使用VPN代理进行一些操作,例如通过代理下载文件
|
||||
set "http_proxy=%vpn_proxy_url%"
|
||||
set "https_proxy=%vpn_proxy_url%"
|
||||
|
||||
@echo off
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
@ -40,4 +46,4 @@ pause
|
||||
|
||||
|
||||
rem set HF_ENDPOINT=https://hf-mirror.com
|
||||
streamlit run webui.py --browser.gatherUsageStats=False --server.enableCORS=True
|
||||
streamlit run webui.py --browser.serverAddress="127.0.0.1" --server.enableCORS=True --server.maxUploadSize=2048 --browser.gatherUsageStats=False
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user