用户:
MathinChina查看:4 回复:6 评论:4 创建时间:2020-08-20T15:25:19
【作品展示】

【作品介绍】
可能有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