当前位置: 首页 > news >正文

real_time_camera_audio_display_with_animation

视频录制
 

import cv2
import pyaudio
import wave
import threading
import os
import tkinter as tk
from PIL import Image, ImageTk

# 视频录制设置
VIDEO_WIDTH = 640
VIDEO_HEIGHT = 480
FPS = 20.0
VIDEO_FILENAME = '_video.mp4'
AUDIO_FILENAME = '_audio.wav'
OUTPUT_FILENAME = 'output.mp4'

# 全局变量
recording = False
cap = None
out = None
p = None
stream = None
frames = []
audio_thread = None
root = None
label = None
status_label = None
# 将音频录制设置的变量定义为全局变量
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100


def start_recording():
    global recording, cap, out, p, stream, audio_thread, status_label
    recording = True
    status_label.config(text="ing...")

    try:
        # 打开摄像头
        cap = cv2.VideoCapture(0)
        if not cap.isOpened():
            print("Camera Open Fail")
            return

        cap.set(3, VIDEO_WIDTH)
        cap.set(4, VIDEO_HEIGHT)

        # 定义视频编码器并创建 VideoWriter 对象,尝试使用 avc1 编码器
        fourcc = cv2.VideoWriter_fourcc(*'avc1')
        out = cv2.VideoWriter(VIDEO_FILENAME, fourcc, FPS, (VIDEO_WIDTH, VIDEO_HEIGHT))
        if not out.isOpened():
            #print("无法创建视频写入对象")
            cap.release()
            return

        p = pyaudio.PyAudio()

        stream 

相关文章:

  • 华为OD机试2025A卷 - 正整数到excel编号之间的转换(Java Python JS C++ C )
  • 分布式微服务系统架构第97集:JVM底层原理
  • P1006 [NOIP 2008 提高组] 传纸条 题解
  • HTML5 浏览器兼容性:让旧浏览器也能拥抱 HTML5
  • 如何使用Audacity快速拆分整轨音频文件
  • 在 Ubuntu 下通过 Docker 部署 Misskey 服务器
  • 用AI来了解用户都在关注的品牌问题是什么?
  • linux 下du 和 ls-alh 的区别
  • 【JavaScript】十五、事件对象与环境对象
  • 跳跃游戏的最优解法——贪心算法的智慧与实践
  • 关于动态卷积
  • windows下GCC编译器使用FFTW预编译版共享库使用
  • 优秀的python可视化案例
  • Unity ViewportConstraint
  • 蓝桥杯 web 新鲜的蔬菜(css3)
  • javaweb自用笔记:Maven分模块设计与开发、Maven继承与聚合、Maven私服
  • 什么是数据
  • LogicFlow-前端流程图开发
  • 使用成员函数指针数组简化C++类中的操作
  • WebGL数学手记:矩阵基础
  • 驻马店做网站哪家好/百度seo关键词排名优化软件
  • 建立一个网站的费用/腾讯广告
  • 南县建设局网站/精准营销案例
  • 网站开发学费/泰州seo平台
  • 百度提交网站收录/百度知道问答首页
  • 在国外做盗版电影网站吗/百度站长工具排名