====== OBS ====== Texto dinámico que lo coge de un fichero de texto \\ https://www.youtube.com/watch?v=78CcCbUYwgg Rótulo con animación. Hacer un grupo con texto y caja, botón derecho y "Show transaction" y "hide transaction" y se puede hacer que aparezca de derecha a izquierda\\ https://www.youtube.com/watch?v=1KhTqnv1SWE ====== Configurar tecla con voz ====== import pyaudio from vosk import Model, KaldiRecognizer import json import subprocess from gtts import gTTS import os # Cargar el modelo de Vosk model = Model("vosk-model-es-0.42") recognizer = KaldiRecognizer(model, 16000) p = pyaudio.PyAudio() # Configurar PyAudio para usar PulseAudio (índice 15) stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=8000, input_device_index=15) stream.start_stream() print("Esperando el comando de voz 'abracadabra rótulo uno'...") while True: data = stream.read(4000, exception_on_overflow=False) if recognizer.AcceptWaveform(data): result = recognizer.Result() result_json = json.loads(result) # Convertir a JSON para extraer el texto text = result_json.get("text", "") # Obtener el texto reconocido # Imprimir el texto detectado print(f"Texto detectado: {text}") # Comparar el texto detectado con el comando esperado if "abracadabra rótulo uno" in text.lower(): print("Comando detectado: Lanzando teclas 'ctrl + super + 1'") # Activar la ventana de OBS subprocess.run(["xdotool", "search", "--name", "^OBS.*Profile: Youtube Jose", "windowactivate"]) # Usa xdotool para simular la pulsación de teclas subprocess.run(["xdotool", "key", "ctrl+super+1"]) # Generar y reproducir el mensaje de audio en los auriculares Bluetooth tts = gTTS("rótulo uno ok", lang='es') tts.save("mensaje.mp3") # Reproducir el archivo de audio con mpv subprocess.run(["mpv", "--audio-device=pipewire", "mensaje.mp3"]) # subprocess.run(["mpv", "--audio-device=pipewire/bluez_output.6F_32_EA_6B_C2_86.1", "mensaje.mp3"]) os.remove("mensaje.mp3") # Elimina el archivo después de reproducirlo ====== Configurar cámara SRT ====== Para añadir una cámara por SRT tenemos que añadir "Media Source" Desmarcar "Restart playback when source becomes active" porque si no se para la transmisión SRT {{:fotografia:camaras:streaming:osb_01.png?600|}} {{:fotografia:camaras:streaming:osb_02.png?300|}} {{:fotografia:camaras:streaming:osb_03.png?600|}} Con linux en la version 30 por temas de buffer se corta cada 5 segundos. He actualizado a la 31 y sin problema. Pero por si acaso esta es la solución:\\ Ponemos un servidor proxy con ffmpeg en medio que haga de proxy a UDP: fmpeg -fflags nobuffer -i "srt://192.168.2.11:4201" -f mpegts udp://127.0.0.1:5001 Y configuramos OBS con: udp://127.0.0.1:5001 ====== Configuración OBS instagram ====== Configuración en vertical 1280x720 ====== Texto con Curva ====== Creamos el siguente fichero html: Colla Castellera de Madrid Añadimos el fichero como Source/Browser ====== Instalación Plugin ====== Plugin para programar cambios de sources con tiempo: flatpak install com.obsproject.Studio.Plugin.SceneSwitcher ====== Grabar todas las cámaras y emitir para poder hacer repetición ====== Para poder grabar todas las cámaras se puede instalar el plugin "Source Record". Con Linux y flaypak no he sido capaz. Otra forma que creo que es mas egiciente es con el proxy con ffmprg. Lanzamos el proxy con ffmpeg con comando reuse para poder conectar OBS y grabar para las 3 cámaras: ffmpeg -fflags nobuffer -i "srt://192.168.2.11:4201" -f mpegts udp://127.0.0.1:5001 ffmpeg -fflags nobuffer -i "srt://192.168.2.12:4201" -f mpegts udp://127.0.0.1:5002 ffmpeg -fflags nobuffer -i "srt://192.168.2.13:4201" -f mpegts udp://127.0.0.1:5003 Grabamos cada cámara en un fichero: ffmpeg -i "udp://127.0.0.1:5001?reuse=1" -c copy CAM_1.mkv Y configuramos OBS para cada cámara udp://127.0.0.1:5001?reuse=1 Ahora podemos añadir un "Source Media" de vídeo normal y añadir los vídeos CAM_1.mkv, CAM_2.mkv y CAM_3.mkv para ver la repetición También podemos hacer la grabación cada 10 minutos para que haga vídeos mas pequeños: ffmpeg -i udp://127.0.0.1:5001 -c copy -f segment -segment_time 600 -reset_timestamps 1 cam1_%03d.mkv Otra opción es grabar 1 fichero grande y luego sacar uno pequeño con el cmoando: Con duración ffmpeg -ss INICIO -i CAM_1.mkv -t DURACION -c copy CAM_1_001.mkv O con tiempo: ffmpeg -ss INICIO -to DURACION -i CAM_1.mkv -c copy CAM_1_001.mkv