ffmpeg in: h264 out: yuv to stdout - формат данных? - PullRequest
0 голосов
/ 27 февраля 2019

Я (как и многие) пытаюсь получить непрерывную серию неподвижных изображений из камеры, прикрепленной к малиновому пи.Я хочу сделать это в Java по всем обычным причинам, и я использую команду Runtime exec для передачи вывода raspivid в следующую команду ffmpeg, а затем собираю результат с помощью stdout --- note xxx.h264 - тестовый файлгенерируется камерой, которая не воспроизводится из-за отсутствия контейнера, но я получаю изображения настолько наполовину хорошо.

ffmpeg -i xxx.h264 -vcodec rawvideo -r 2 -pix_fmt yuv420p -f nut -

У меня есть некоторый код, отображающий кадры, но они "маршируют" по всей области отображенияслева направо, и, кажется, растущее количество мусора в верхней части изображений.Я посмотрел на байты, которые он выводит, выполнив ту же команду и перенаправив ее в файл, затем используя vi / xxd, и обнаружил, что там есть материал заголовка ("гайка / контейнер мультимедиа ...").

Я предполагаю, что в моей команде ffmpeg добавлено больше метаданных, которые я не могу удалить при обработке необработанных данных yuv420p, как описано здесь: https://en.wikipedia.org/wiki/YUV#Y%E2%80%B2UV420sp_%28NV21%29_to_RGB_conversion_%28Android%29

Насколько я знаю, я не могу найти документацию по орехамгде-нибудь в удобочитаемом формате и в любом случае, кажется, что это не то, что я должен искать.Какие-нибудь указатели относительно того, как я могу распознать границы кадра в моем потоке байтов?

1 Ответ

0 голосов
/ 27 февраля 2019

-f nut представляет контейнер NUT.Похоже, вам не нужна инкапсуляция, поэтому используйте -f rawvideo.Кроме того, код вики-ссылки предназначен для nv21, что является другим форматом для данных 4: 2: 0.yuv420p - все Y выборок, за которыми следуют все U выборки, а затем все V выборки.U / V имеют половинную ширину и половинную высоту.Если ширина или высота Y нечетные, соответствующий размер U / V равен int (Y / 2) + 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...