Tenho seguinte problema: gravar vídeos com tempo variável. O meu objetivo é fazer um programa que grave um vídeo, que tenha como um limite um valor como 3min e possa ser parado antes por um usuário que esteja usando o terminal (não o terminal do linux, um computador com touch-screen com um programa que grave o vídeo para posterior transmissão via TV na minha universidade).
A ideia é que o programa seja feito em gtk, programado em c e o mais que for necessário.
Meu problema é na gravação do vídeo, justamente...
Eu tentei no ffmpeg:
ffmpeg tralala -t (tempo em segundos ) bla bla
Eu tive problemas com a limitação do vídeo, no meu notebook o vídeo chegou a ficar verde várias verdes e ainda sem áudio.
Eu também tentei limitar o vídeo com -r (frames por segundo) e depois -vframes (total de frames) mas no final os frames ainda estavam variando e o tempo limite acabaria ficando variável, ...
Daí pensei em executar o programa, no programa escrito em C ele chamaria um shell script que chamaria o ffmpeg. O shell script seria de fácil edição sem precisar compilar sempre, aí fica melhor ficar fora do binário. Eu tentei fazer algo como:
ffmpeg -f alsa -ac 2 -i pulse -f video4linux2 -s vga -r 30 -i /dev/video0 -vcodec mpeg4 -acodec -vframes 375 libmp3lame -ab 328k -sameq -y out.avi &
Aí ele gravava o vídeo, e ainda ia para o background. Mas... eu tentei dar um comando, para trazer para o foreground e depois um [q] para tentar parar a gravação.
fg 1 && q
Mas não finalizou o ffmpeg, e ainda deu comando não reconhecido "q". Enfim, quero parar a gravação do vídeo do ffmpeg via um comando com shell, sem uma pessoa, sem teclados. Só haverá um botão no touch-screen, se for apertado, a gravação deve ser parada. Caso contrário, parada quando chegar num tempo limite que for definido. Como fazer isso?