Hace uso de ffmpeg y de un script que realmente son los encargados de grabar el video, con gambas he hecho la parte gráfica.
La parte más interesante del programa es lo que hago al pulsar el boton de grabar:
Public Sub ToolButton1_Click()
If grabando = False Then
'iniciar la grabacion
ToolButton1.Picture = Picture["icon:/32/stop"]
Timer1.Enabled = True
grabando = True
Me.w = 196
Me.h = 63
Label1.text = "00:00:00"
Me.caption = Label1.text
Labelestado.Text = "grabando..."
Try Copy "screencapturesound.sh" To "/tmp/screencapturesound.sh" 'copio del interior del programa, el script, a la carpeta /tmp
Try Chmod "/tmp/screencapturesound.sh" To "rwx------" 'doy permisos de ejecución
Exec ["/tmp/screencapturesound.sh"] For Read 'para que no salga ningun valor en la terminal
Else
'estoy grabando... tengo que parar
tiempo = 0
Labelestado.Text = "estado: sin grabar"
Me.w = 252
Me.h = 133
Timer1.Enabled = False
Label1.text = "Duración"
Me.caption = "Capturadora"
Shell "killall -SIGTERM ffmpeg"
Endif
End
If grabando = False Then
'iniciar la grabacion
ToolButton1.Picture = Picture["icon:/32/stop"]
Timer1.Enabled = True
grabando = True
Me.w = 196
Me.h = 63
Label1.text = "00:00:00"
Me.caption = Label1.text
Labelestado.Text = "grabando..."
Try Copy "screencapturesound.sh" To "/tmp/screencapturesound.sh" 'copio del interior del programa, el script, a la carpeta /tmp
Try Chmod "/tmp/screencapturesound.sh" To "rwx------" 'doy permisos de ejecución
Exec ["/tmp/screencapturesound.sh"] For Read 'para que no salga ningun valor en la terminal
Else
'estoy grabando... tengo que parar
tiempo = 0
Labelestado.Text = "estado: sin grabar"
Me.w = 252
Me.h = 133
Timer1.Enabled = False
Label1.text = "Duración"
Me.caption = "Capturadora"
Shell "killall -SIGTERM ffmpeg"
Endif
End
En el caso que de no este grabando (esto lo controlo con la variable "grabando"), modifica el formulario (cambiando la forma del formulario, el icono del boton, activa el timer que controla la cuenta del tiempo y empieza a ejecutar el script), si esta grabando, para la grabación (mata el proceso ffmpeg) y modifica las dimensiones del formulario.
Enlace: Enlace de descarga
Saludos