Capture e visualize o som ALSA estéreo de vídeo e estéreo PAL-B do EasyCAP STK1160 com ffmpeg e codifique para x264

1

Eu gostaria de digitalizar antigos cassetes VHS com EasyCAP STK1160 no linux. A entrada de vídeo composto é /dev/video1 e hw:2,0 é o áudio composto de dois canais USB ALSA.

Para capturar os fluxos em formato raw, eu uso:

ffmpeg -f alsa -ac 2 -i hw:2,0 -f rawvideo -r 25 -s 720x576 -i /dev/video1 -codec:a pcm_s16le -codec:v rawvideo -f rawvideo raw_streams.raw

Para codificar o arquivo raw para h264 em duas etapas, eu uso:

time ffmpeg -f rawvideo -codec:v rawvideo -s:v 720x576 -r 25 -pix_fmt yuyv422 -deinterlace -i raw_streams.raw -pass 1 -codec:v libx264 -codec:a libfdk_aac -b:a 128k -preset ultrafast -y -b:v 6100k -f mp4 /dev/null
time ffmpeg -f rawvideo -codec:v rawvideo -s:v 720x576 -r 25 -pix_fmt yuyv422 -deinterlace -i raw_streams.raw -pass 2 -codec:v libx264 -codec:a libfdk_aac -b:a 128k -preset ultrafast -y -b:v 6100k -f mp4 "final.mp4"

Pergunta 1: O arquivo .mp4 codificado resultante tem um bom vídeo, mas nenhum som. Como eu adiciono o canal de som ao arquivo raw e depois ao mp4? Capturar com sucesso apenas o som com o seguinte comando mostra que há som na linha.

ffmpeg -f alsa -i hw:2,0 output.wav

Pergunta # 2: Como eu especifico PAL-B para ser o formato de captura de vídeo para o vídeo bruto? man ffmpeg parece não ter nenhuma informação sobre este assunto.

Pergunta 3: Como nem todas as caixas têm gravações em toda a sua extensão, eu também gostaria de ver a transmissão ao vivo durante a captura para que eu saiba quando parar. Eu faço isso com:

mplayer -fps 25 tv:// -tv driver=v4l2:device=/dev/video1

Eu visualizo o fluxo ou a captura. Tentar fazer as duas coisas produz o seguinte erro: /dev/video1: Device or resource busy Como posso fazer essas coisas simultaneamente?

    
por Gábor Dani 13.09.2016 / 22:18

1 resposta

1

# 1 Você está salvando em um fluxo de vídeo bruto e, portanto, o áudio não será salvo. Você precisa salvar em um contêiner, como NUT:

ffmpeg -f rawvideo -framerate 25 -s 720x576 -i /dev/video1 -f alsa -ac 2 -i hw:2,0
       -c:a pcm_s16le -c:v rawvideo raw.nut

# 2 Isso precisa ser definido no driver / config do dispositivo de captura. O FFmpeg está recebendo um fluxo de vídeo bruto digitalizado pelo dispositivo USB. Qual propriedade especificamente você precisa definir? Todas as variantes do PAL compartilham o tamanho e a taxa do quadro.

# 3 Você pode usar o tee muxer para canalizar a captura para o ffplay

ffmpeg -f rawvideo -framerate 25 -s 720x576 -i /dev/video1 -f alsa -ac 2 -i hw:2,0
       -c:a pcm_s16le -c:v rawvideo -f tee "raw.nut|[f=nut]pipe:" | ffplay -f nut -
    
por 14.09.2016 / 07:20