猫史档案馆


【Python作品分享】录屏软件【作品秀】

用户:MathinChinaMathinChina查看:4 回复:6 评论:4 创建时间:2020-08-20T15:25:19


【作品展示】

center_image

 

【作品介绍】

可能有Bug

 

【作品源代码】

import time
import datetime

# 音频的录制
def record_audio(self):
    recordAudio = pyaudio.PyAudio()  # 创建一个PyAudio()对象
    stream = recordAudio.open(format=pyaudio.paInt16,   # 创建一个音频输入流
                              channels=2,  # 通道的数量 
                              rate=48000,  # 采样频率
                              input=True,  # 确定是输入流
                              frames_per_buffer = 124  # 指定每个缓冲区的帧数
                             )
    waveFile = wave.open(self.audio_filename,"wb")
    waveFile.setnchannels(2)  # 设置音频通道数
    waveFile.setsampwidth(recordAudio.get_sample_size(pyaudio.paInt16))  # 设置每个音频样本的字节数
    waveFile.setframerate(48000)  # 设置采样频率

    # 将音频数据不断写入到本地的音频文件中
    while self.recording:  # 参数设置完毕,开始录制音频
        data = stream.read(124)  # 从输入流中读取124帧的样本数据
        waveFile.writeframes(data)  # 将数据写入到文件内
    waveFile.close()
    stream.stop_stream()  # 停止输入
    stream.close()        # 关闭输入流
    recordAudio.terminate()



# 视频的记录
def video_record(self):
    screen = ImageGrab.grab()  # 获取当前屏幕,创建一个视频写入对象
    video = cv2.VideoWriter(self.video_record_filename,cv2.VideoWriter_fourcc(*'XVID'),20,screen.size)   # 输出视频
    while self.recording:
        screen = ImageGrab.grab()  # 截取屏幕的内容
        screen = cv2.cvtColor(np.array(screen),cv2.COLOR_RGB2BRG)  # 转化为BGR格式
        video.write(screen)  # 写入到视频文件中
    video.release()



# 主要的运行函数
def run(self):
    print("3秒后开始录制屏幕,输入Quit结束...")
    time.sleep(3)
    self.now = str(datetime.now())[:19].replace(':', '_').replace('-', "_").replace(' ','-')
    self.audio_filename = "{}.mp3".format(self.now)
    self.video_record_filename = "{}_video.avi".format(self.now)
    self.video_filename = "{}.avi".format(self.now)

    # 开始两个线程,同时进行录音和屏幕录制
    t1 = threading.Thread(target=self.record_audio)
    t2 = threading.Thread(target=self.video_record)
    for t in [t1,t2]:
        t.start()
    while True:
        if(input() == 'Quit'):
            break
    self.recording = False
    for t in [t1,t2]:
        t.join()
    
    audio = AudioFileClip(self.audio_filename)
    video = VideoFileClip(self.video_record_filename)
    totalVideo = video.set_audio(audio)
    totalVideo.write_videofile("result.mp4",codec="libx2喵",fps=25)


run(1)

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
几何空间几何空间

厉害!

点赞0


评论


帅狮_帅狮_

NB!

点赞0


评论


Vicent轩Vicent轩

nnnnnnnnb!

点赞0


评论


Vicent轩Vicent轩

话说那个“喵”是啥

点赞0


评论


天真的阿米巴YFtt天真的阿米巴YFtt

不是我说,该导入的库没导入,运了一次有bug

点赞0


评论


Bamshine竹潇Bamshine竹潇

6👍

点赞0


评论