python调用ffmpeg命令行实现多个儿童绘本连环画漫画及文字旁白字幕配音合并故事短片代码

代码语言:python

所属分类:其他

代码描述:python调用ffmpeg命令行实现多个儿童绘本连环画漫画及文字旁白字幕配音合并故事短片代码,使用pyttsx3,可以改成阿里或火山或coze等第三方tts,画面自带缩放及字幕内嵌视频显示,每个图片就是一个视频片段,片段之间有fade过渡动画,最终生成一个带字幕及声音旁白的完整故事视频,可以设置背景音乐。

代码标签: python 调用 ffmpeg 命令行 多个 儿童 绘本 连环画 漫画 文字 旁白 字幕 配音

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

import os
import subprocess
import pyttsx3
from mutagen.mp3 import MP3
from mutagen.wave import WAVE
import random

# --- 配置参数 ---
IMAGE_FOLDER = "images"
NARRATION_FILE = "narrations.txt"
OUTPUT_VIDEO_FILE = "story_video_linux_transitions.mp4"
TEMP_FOLDER = ""

VIDEO_WIDTH = 720
VIDEO_HEIGHT = 1280
VIDEO_FPS = 25

# --- pyttsx3 TTS 配置 ---
TTS_VOICE_ID = None
TTS_RATE = 150
TTS_VOLUME = 1.0

# --- 字幕配置 ---
# Windows用户使用 simhei.ttf,Linux用户需修改为系统字体路径(如 /usr/share/fonts/truetype/wqy/wenquanyi_microhei.ttc)
FONT_FILE = "simhei.ttf"  # Linux用户修改为系统字体路径
if not os.path.exists(FONT_FILE):
    raise FileNotFoundError(f"字体文件未找到: {FONT_FILE}")

FONT_SIZE = 32
FONT_COLOR = "white"
SUBTITLE_Y_OFFSET = 80  # 增加偏移量确保字幕可见
SUBTITLE_BOX = True
BOX_COLOR = "0x00000099"
BOX_BORDER_W = 15

# --- 转场效果配置 ---
TRANSITION_DURATION = 0.4
XFADE_EFFECTS = ["fade"]
#XFADE_EFFECTS = ["fade", "wipeleft", "wiperight", "slideleft", "slideright","dissolve", "distance", "radial", "circleopen", "circleclose"]
def run_ffmpeg_command(command):
    print(f"执行 FFmpeg: {' '.join(command)}")
    process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = process.communicate()
    if process.returncode != 0:
        print("FFmpeg Stdout:")
        print(stdout.decode('utf-8', errors='ignore'))
        print("FFmpeg Stderr:")
        print(stderr.decode('utf-8', errors='ignore'))
        raise Exception(f"FFmpeg 命令失败 (retcode {process.returncode}): {' '.join(command)}")

def get_audio_duration(audio_path):
    try:
        if audio_path.lower().endswith((".mp3", ".........完整代码请登录后点击上方下载按钮下载查看

网友评论0