1

Я использую ffmpeg (и все еще новичок с ним), чтобы извлечь каждый кадр из видео, которое идет от DeckLink SDI 4K. И я вызываю ffmpeg из программного обеспечения, которое создаю через конвейер, вот команда:

ffmpeg -hide_banner -y -format_code Hp50 -raw_format yuv422p10 -video_input sdi -f decklink -vsync 0 -draw_bars true -i 'DeckLink SDI 4K' -f segment -segment_time 0.020000 -f rawvideo -

Он генерирует каждый кадр, но я не могу извлечь данные yuv. Я прочитал из Интернета, что он закодирован как 10-битный плоский несжатый кадр yuv (fourcc: p210?). К сожалению, я не могу сгенерировать какие-либо действительные данные, так как я не знаю, где именно находятся 'y', 'u' и 'v'. Просто упомянуть, что я декодирую каждый кадр сам.

Мне нужны эти данные, чтобы сделать некоторые вычисления для каждого кадра в цветовом пространстве yuv 10 бит.

Любая помощь по декодированию yuv422p10 очень приветствуется.

1 ответ1

0

использование

ffmpeg -hide_banner -y -format_code Hp50 -raw_format yuv422p10 -video_input sdi -f decklink -draw_bars true -i 'DeckLink SDI 4K' -pix_fmt yuv422p10be -f rawvideo -

yuv422p10 обозначает, что три компонента расположены в виде плоскостей, которые отправляются один за другим.

Для каждого кадра первый массив размером 2 x W x H является вашей плоскостью Y. Затем следующие 2 x (W / 2 + W % 2) x H байтов, это плоскость U. Наконец, следующие 2 x (W / 2 + W % 2) x H байта являются V-плоскостью. Затем следует следующий кадр.

Множитель 2 выше обозначает размер дополненной выборки в байтах. В каждой 2-байтовой выборке компонента пикселя младшие 10 бит кодируют данные.

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