1

Я хотел бы оцифровать старые кассеты 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

# 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 -

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .