Запись с ТВ-тюнера / веб-камеры с gstreamer и синхронизацией аудио / видео - PullRequest
1 голос
/ 12 января 2012

У меня есть карта ТВ-тюнера, которая отображается как /dev/video1. Я пытаюсь оцифровать некоторые старые кассеты VHS. ТВ-тюнер не воспроизводит звук, к моему микрофону подключен провод.

Это конвейер gstreamer, который я использую для захвата видео и аудио и сохранения его в файл. Я использую motion jpeg, потому что я не хочу, чтобы он отбрасывал кадры и терял контент. Я закодирую это лучше позже.

gst-launch-0.10 v4l2src device=/dev/video1 ! \
    queue ! \
    video/x-raw-yuv,width=640,height=480 ! \
    ffmpegcolorspace ! \
    jpegenc ! \
    avimux name=mux ! \
    filesink location=output.avi \
   pulsesrc ! \
    queue ! \
    audioconvert ! \
    audio/x-raw-int,rate=44100,channels=2 ! \
    mux.

Это все работает хорошо и хорошо. У меня есть файлы, которые воспроизводят видео и аудио. Однако иногда при воспроизведении выходных файлов аудио и видео не синхронизируются. Это происходит в одном и том же месте на видео, на разных медиапроигрывателях (totem, mplayer). Поэтому я думаю, что это проблема в том, как я сохраняю и записываю файл.

Могу ли я что-нибудь сделать с конвейером, чтобы уменьшить вероятность возникновения проблем с синхронизацией аудио / видео? Я немного новичок в gstreamer и видео / аудио кодеках, так что я мог бы сделать что-то глупое здесь (пожалуйста, укажите!). Есть ли какой-нибудь видео / аудио / muxer кодек, который был бы лучше?

1 Ответ

3 голосов
/ 12 января 2012

Попробуйте добавить элемент audiorate в ветвь audio и элемент videorate в ветвь video, чтобы увидеть, имеет ли это значение, или попробуйте другой мультиплексор, такой как qtmux или matroskamux.

...