2015-12-21 3 views
0

Я пытаюсь сохранить несколько файлов в формате RAW (PGM) из источника видео с помощью Gstreaamer. Благодаря чтению благодаря инструменту gst-inspect различные источники и раковины, доступные для разных плагинов, которые я использую, я не могу найти правильный путь для достижения своей цели. Я использую mfw_v4lsrc для исходного видео, ffenc_pgm для кодирования и fileink для сохранения файла.Gstreamer video to pgm files

это моя командная строка: gst-launch mfw_v4lsrc device =/dev/video0 name = source! video/x-raw-yuv, width = 250, height = 250! ffenc_pgm! filesink location = test.pgm

Я остаюсь застрявшим, не могу связать источник с ffenc_pgm.

Я могу получить живое и сохранить в jpeg. Но для моей цели мне нужна ваша помощь.

Благодаря

ответ

0

Это может быть либо потому, что ваш исходный элемент не может производить такой формат, который ffenc_pgm ожидает (это только кажется, хотят градации серых форматов) или из-за ограничения в разрешении 250x250 вы ввели, что, опять-таки, ваш источник элемент, возможно, не сможет произвести.

Вы можете попробовать добавить конвертеры, чтобы помочь там:

gst-launch mfw_v4lsrc device=/dev/video0 name=source ! videoscale ! video/x-raw-yuv, width=250, height=250 ! ffmpegcolorspace ! ffenc_pgm ! filesink location=test.pgm 

также, вы можете заменить filesink с multifilesink если то, что вы хотите, один файл в буфер, filesink создаст один файл. Я не знаю, как работают файлы pgm, поэтому я не могу это посоветовать.

Последний совет: пожалуйста, перейдите к gstreamer 1.x series, 0.10 устаревший и невозможен для 3+ лет.

+0

Привет, тиагосс, извините, что опоздал. Я попробую как можно скорее ваше решение. Спасибо – deletMe

0

Хорошо,

С помощью этого:

GST-Launch -v mfw_v4lsrc устройств =/Dev/video0 число-буферов = 9! ffmpegcolorspace! video/x-raw-gray, width = 248, height = 248, format = (fourcc) I420! ffenc_pgm! multifilesink location = "frame% d.pgm"

У меня есть 9 pgm-файлов, проверенных с помощью xnview. Однако эти файлы закодированы с оттенками серого, равными 255, но мне нужно кодировать 1024 (2 байта на пиксель) с магическим числом P5. Я не могу найти в ffmpegcolorspace или с ffenc_pgm, как это сделать ...

+0

ffenc_pgm не учитывает максимальное значение серого на своей раковине. Для этого я собираюсь перейти на gstreamer-1.x, как сказал @thiagoss. Фактически avenc_pgm (который заменяет ffenc_pgm в версии 1.x gstreamer) заботится о bpp на его приемнике. Так оно и работает. – deletMe