Erfassen und Anzeigen von PAL-B-Rohvideo und Stereo-ALSA-Sound von EasyCAP STK1160 mit ffmpeg und Encoding nach x264

680
Gábor Dani

Ich möchte alte VHS-Kassetten mit EasyCAP STK1160 unter Linux digitalisieren . Der Composite-Videoeingang ist /dev/video1und hw:2,0ist für den USB ALSA-Composite-Zweikanal-Audio.

Um die Streams im Rohformat zu erfassen, verwende ich:

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 

Um die Rohdatei in zwei Durchläufen in h264 zu codieren, verwende ich:

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" 

Frage # 1: Das resultierende .mp4 hat ein gutes Video, aber keinen Ton. Wie füge ich den Soundkanal zur Rohdatei und dann zum mp4 hinzu? Wenn Sie mit dem folgenden Befehl nur den Sound erfassen, zeigt dies an, dass in der Leitung ein Sound vorhanden ist.

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

Frage 2: Wie kann ich PAL-B als Videoaufnahmeformat für das Rohvideo festlegen? man ffmpegscheint keine Informationen zu diesem Thema zu haben.

Frage 3: Da nicht alle Kassetten Aufnahmen auf ihrer gesamten Länge haben, möchte ich auch den Livestream während der Aufnahme sehen, damit ich weiß, wann ich aufhören muss. Ich mache das mit:

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

Ich sehe entweder den Stream oder Capture. Der Versuch, beide /dev/video1: Device or resource busyauszuführen, führt zu dem folgenden Fehler: Wie kann ich diese Dinge gleichzeitig tun?

1

1 Antwort auf die Frage

1
Gyan

# 1 Sie speichern in einem Raw-Videostream und daher wird kein Audio gespeichert. Sie müssen in einem Container wie NUT speichern:

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 Dies muss im Treiber / in der Konfiguration des Capture-Geräts festgelegt werden. FFmpeg empfängt einen rohen Videostrom, der vom USB-Gerät digitalisiert wurde. Welche Eigenschaft müssen Sie speziell einstellen? Alle PAL-Varianten teilen die Bildgröße und -rate.

# 3 Sie können den Tee-Muxer verwenden, um die Aufnahme an das ffplay weiterzuleiten

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 -