Как сформировать конвейер gstreamer для кодирования видео mp4 из файлов tiff? - PullRequest
0 голосов
/ 11 марта 2020

Я новичок в gstreamer и застрял, пытаясь сформировать конвейер gstreamer для кодирования mp4-видео из tiff-файлов на платформе nvidia Jetson. Вот конвейер, который я придумал:

gst-launch-1.0 multifilesrc location=%03d.tiff index=0 start-index=0 stop-index=899     blocksize=720000 num-buffers=900 do-timestamp=true typefind=true ! 'video/x-raw,format=(string)RGB,width=(int)1280,height=(int)720,framerate=(fraction)30/1' !     videoconvert ! 'video/x-raw,format=(string)I420,framerate=(fraction)30/1' !     omxh264enc ! 'video/x-h264,stream-format=(string)byte-stream,framerate=(fraction)30/1' ! h264parse ! filesink sync=true location=test.mp4 -e

При этом файл mp4 успешно создается и воспроизводится, но весь фактический видеоконтент искажается. Есть идеи, что я делаю не так? Спасибо

1 Ответ

0 голосов
/ 11 марта 2020

Вы не выполняете демультиплексирование / декодирование своих данных TIFF, поэтому вы выбрасываете случайные байты в кодировщик.

Также вы делаете много вещей с заглавными буквами, не имея надлежащих элементов между ними, которые могли бы изменить форматирует правильно.

Вы должны использовать decodebin, чтобы GStreamer автоматически обрабатывал большинство вещей. Например, что-то вроде этого:

multifilesrc ! decodebin ! videoconvert ! omxh264enc ! h264parse ! filesink

В зависимости от вашего кодировщика вы хотите, чтобы формат цвета был 4: 2: 0, чтобы он случайно не кодировался в 4: 4: 4 (что не является очень часто встречается и не поддерживается многими кодировщиками):

multifilesrc ! decodebin ! videoconvert ! video/x-raw, format=I420 ! omxh264enc ! h264parse ! filesink
...