/
skylucky
/
process_video
Обзор
Документация
Войти
/
skylucky
/
process_video
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
video_processor.py
60 строк
3 KB
skylucky
Create: video_processor.py, process_video.bat, debug_video.bat, find_ffmpeg.bat
15 июл 2026, 17:54
Верифицирован
15 июл 2026, 17:54
a35008b
Код
Авторство
О чём код?
import os import subprocess import whisper import argparse def mute_video(input_path, output_path): """Удаляет аудиодорожку из видео без перекодирования (мгновенно и без потери качества).""" print(f"🎬 Удаление аудио из {input_path}...") # -i: входной файл, -c:v copy: копировать видеопоток, -an: убрать аудио command = [ 'ffmpeg', '-i', input_path, '-c:v', 'copy', '-an', output_path ] try: subprocess.run(command, check=True, capture_output=True, text=True) print(f" Видео без аудио сохранено: {output_path}") except subprocess.CalledProcessError as e: print(f" Ошибка при обработке видео FFmpeg: {e.stderr}") raise def transcribe_audio(input_path, output_path, model_size="base", language="ru"): """Распознает речь в видео и сохраняет её в текстовый файл.""" print(f" Загрузка модели Whisper ({model_size})... Это может занять время при первом запуске.") model = whisper.load_model(model_size) print(f" Транскрибация аудио из {input_path}...") # Whisper умеет напрямую извлекать аудио из видеофайлов result = model.transcribe( input_path, language=language, # Можно указать ru для русского или оставить None для автоопределения fp16=True # Установите True, если видеокарта NVIDIA для ускорения ) with open(output_path, "w", encoding="utf-8") as f: f.write(result["text"]) print(f" Текст успешно сохранен в: {output_path}") def main(): input_video = "input.mp4" # Имя вашего исходного видеофайла if not os.path.exists(input_video): print(f" Файл '{input_video}' не найден! Положите его в папку со скриптом или укажите правильный путь.") return # Формируем имена выходных файлов base_name = os.path.splitext(input_video)[0] muted_video_output = f"{base_name}_no_audio.mp4" text_output = f"{base_name}_transcript.txt" # 1. Создает видео без аудио mute_video(input_video, muted_video_output) # 2. Распознает текст (используем исходное видео, Whisper сам извлечет звук) transcribe_audio(input_video, text_output, model_size="base", language="ru") print("\nПроцесс полностью завершен!") if __name__ == "__main__": main()