Захватывайте и просматривайте необработанное видео PAL-B и стереозвук ALSA из EasyCAP STK1160 с помощью ffmpeg и кодируйте в x264

598
Gábor Dani

Я хотел бы оцифровать старые кассеты VHS с EasyCAP STK1160 под Linux. Композитный видеовход /dev/video1, и hw:2,0для его USB - ALSA композитных два канала аудио.

Для захвата потоков в необработанном формате я использую:

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 

Для кодирования необработанного файла в h264 в два прохода я использую:

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" 

Вопрос № 1: Полученный закодированный .mp4 имеет хорошее видео, но без звука. Как добавить звуковой канал в необработанный файл, а затем в mp4? Успешная запись только звука с помощью следующей команды показывает, что в линии есть звук.

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

Вопрос № 2: Как мне указать PAL-B в качестве формата захвата видео для необработанного видео? man ffmpegПохоже, не имеет никакой информации по этому вопросу.

Вопрос № 3: Поскольку не во всех кассетах есть записи по всей длине, я также хотел бы просматривать потоковую передачу во время захвата, чтобы знать, когда следует остановиться. Я делаю это с:

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

Я либо просматривать поток или захват. Попытка сделать оба из них приводит к следующей ошибке: /dev/video1: Device or resource busyКак я могу сделать эти вещи одновременно?

1

1 ответ на вопрос

1
Gyan

# 1 Вы сохраняете в видеопоток, поэтому звук не будет сохранен. Вам нужно сохранить в контейнер, например, 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 Это должно быть установлено в драйвере / конфигурации устройства захвата. FFmpeg получает необработанный видеопоток, оцифрованный USB-устройством. Какое свойство конкретно вам нужно установить? Все варианты PAL разделяют размер кадра и скорость.

# 3 Вы можете использовать тройник, чтобы передать захват в 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 -