python+playwright+ffmpeg实现自动打开网页录制视频声音为mp4文件代码

代码语言:python

所属分类:其他

代码描述:python+playwright+ffmpeg实现自动打开网页录制视频声音为mp4文件代码,一定要设置好AUDIO_DEVICE_NAME声音输出设备名称,可通过命令:ffmpeg -list_devices true -f dshow -i dummy来查找音频全名,在windows10测试运行通过。

代码标签: python playwright ffmpeg 自动 打开 网页 录制 视频 声音 mp4 文件

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

#!/usr/local/python3/bin/python3
# -*- coding: utf-8 -*
import time
import subprocess
import platform
import os # 用于检查文件大小
import threading # 用于处理ffmpeg输出(可选)
from playwright.sync_api import sync_playwright
import pygetwindow as gw

# --- 配置参数 ---
TARGET_URL = "https://www.bing.com"
RECORD_DURATION_SECONDS = 15  # 录制时长(秒)
OUTPUT_FILENAME = "recorded_video.mp4"
FFMPEG_EXE = "ffmpeg" # 如果ffmpeg不在PATH中,请指定完整路径

# FFmpeg 音频设备名称 (Windows dshow)
# 你需要通过 `ffmpeg -list_devices true -f dshow -i dummy` 确认你系统上的确切名称
AUDIO_DEVICE_NAME = "立体声混音 (Realtek(R) Audio)" # 直接指定,或留空表示不录音
# AUDIO_DEVICE_NAME = "" # 如果不想录制音频,设置为空字符串

# --- 辅助函数 ---
def print_ffmpeg_output(pipe, pipe_name):
    """持续读取并打印ffmpeg的输出流,防止阻塞"""
    try:
        for line in iter(pipe.readline, b''):
            print(f"FFmpeg {pipe_name}: {line.decode(errors='ignore').strip()}")
    except Exception as e:
        print(f"Error reading FFmpeg {pipe_name}: {e}")
    finally:
        pipe.close()

# --- 主逻辑 ---
def record_screen_with_playwright_and_ffmpeg():
    ffmpeg_process = None
    browser = None
    page = None # 将page移到这里,确保finally中可以访问

    try:
        with sync_playwright() as p:
            browser = p.chromium.launch(headless=False)
            context = browser.new_context()
            page = context.new_page()
            print(f"正在打开网页: {TARGET_URL}")
            page.goto(TARGET_URL, wait_until="domcontentloaded") # domcontentloaded 通常更快

            time.sleep(3) # 给窗口渲染和标题设置时间

            window_title_substring = page.title()
            if not window_title_substring:
                print("警告: 未能获取到页面标题,尝试使用浏览器窗口标题的一部分")
                # 备用方案,可能不精确
                all_browser_windows = gw.getWindowsWithTitle(browser.chromium.name) # "Chromium" or "Google Chrome" etc.
                if all_browser_windows:
                    target_window = all_browser_windows[-1] # 通常是最新打开的
                e.........完整代码请登录后点击上方下载按钮下载查看

网友评论0