Desarrollo
Abrimos Pycharm y creamos un proyecto nuevo y lo nombramos ScreenVideo
Instalamos las dependencias siguientes:
- pyaudio
- keyboard
- screen-recorder-sdk
- setuptools

Una vez instalados los paquetes creamos el archivo ScreenVideo.py y escribimos el siguiente código
import sys, time, pyaudio, wave, keyboard
from screen_recorder_sdk import screen_recorder
import shlex
import subprocess
import numpy
now = time.strftime("%Y-%m-%d-%H-%M-%S")
audio = format(now) + ".mp3"
video = format(now) + ".mp4"
salida = "salida"+format(now) + ".mp4"
screen_recorder.enable_dev_log()
params = screen_recorder.RecorderParams()
screen_recorder.init_resources(params)
print('Video Started')
filename = audio
chunk = 1024
FORMAT = pyaudio.paInt16
channels = 1
sample_rate = 44100
# record_seconds = (hours*3600+seconds)+1
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=channels,
rate=sample_rate,
input=True,
output=True,
frames_per_buffer=chunk)
frames = []
print("Audio Recording...")
screen_recorder.start_video_recording(video, 60, 9000000, True)
while True:
data = stream.read(chunk)
frames.append(data)
if keyboard.is_pressed('ctrl+q'):
break
while True:
try:
if keyboard.is_pressed('ctrl+q'):
p.terminate()
wf = wave.open(filename, "wb")
wf.setnchannels(channels)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(sample_rate)
wf.writeframes(b"".join(frames))
wf.close()
screen_recorder.stop_video_recording()
stream.stop_stream()
stream.close()
print("Audio finished recording.")
print('Video Stopped')
break
except KeyboardInterrupt:
break
comando=f'ffmpeg -i {video} -i {audio} -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 {salida}'
resultado=shlex.split(comando)
subprocess.run(resultado)
Probando aplicación
Después de parar la aplicación estos fueron los archivos generados
