Как создать видео файл mp4 из изображений PNG с помощью Gstreamer - PullRequest
0 голосов
/ 29 апреля 2019

Я играю с интерфейсом командной строки gstreamer и застрял при создании видео файла mp4 из изображений PNG.Ребята, помогите, пожалуйста, решить эту проблему.

Используя приведенную ниже команду, я создал изображения PNG с видеокамеры:

gst-launch-1.0.exe -v ksvideosrc!очередь !расшифровка!видеоконвертер!pngenc!multifilesink location = "frame% 05d.png"

Мне удалось воспроизвести изображения pPNG с помощью следующей команды:

gst-launch-1.0 -v multifilesrc location ="frame% 05d.png" index = 0!pngdec!glimagesink

Но во время создания mp4-видео из изображений PNG я получил EOS из конвейера:

Установка конвейера на PAUSED ... конвейер ОБОРОТАЕТСЯ ... / GstPipeline:pipe0 / GstDecodeBin: decodebin0 / GstTypeFindElement: typefind.GstPad: src: caps = image / png /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstPngParse:pngparse0.GstPad:st /GstPngDec: pngdec0.GstPad: раковина: caps = изображение / png, ширина = (целое) 640, высота = (int) 480width = (int) 640, height = (int) 480 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstPngDec:pngdec0.GstPad:src: caps = video / x-raw, формат = (строка) RGB, ширина = (int)640, высота = (int) 480, режим чересстрочной развертки = (строка) прогрессивный, режим монофонического просмотра = (строка) моно, флаги multiview-flags = (GstVideoMultiviewFlagsSet) 0: ffffffff: / right-view-first / left-flipped / left-flopped / правый переворачивается / правый плюхнулся / половинной аспект /смешанный моно, соотношение сторон в пикселях = (фракция) 1/1, колориметрия = (строка) sRGB, частота кадров = (фракция) 0/1 /GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video / x-raw, ширина = (int) 640, высота = (int) 480, частота кадров = (фракция) 0/1, формат = (строка) Y444, режим чересстрочной развертки = (строка) прогрессивный, режим мультивью просмотра = (строка) моно, multiview-flags = (GstVideoMultiviewFlagsSet) 0: ffffffff: / right-view-first / left-flipped / left-flpped / right-flpped / right-flop / half-aspect / mixed-mono, pixel-aspect-ratio = (фракция) 1/1 /GstPipeline:pipeline0/GstVideoRate:videorate0.GstPad:src: caps = video / x-raw, ширина = (int) 640, высота = (int) 480, частота кадров = (фракция) 0/1, формат= (строка) Y444, режим чересстрочной развертки = (строка) прогрессивный, монофонический режим = (строка) монофонический, флаги многовидового просмотра = (GstVideoMultiviewFlagsSet) 0: ffffffff: / / right-view-first / left-flipped / left-flopped /перевернутый вправо / перевернутый вправо / половинный / смешанный моно, соотношение сторон в пикселях = (фракция) 1/1 задержка перераспределения ... /GstPipeline:pipeline0/GstX264Enc:x264enc0.GstPad:sink: caps =video / x-raw, ширина = (int) 640, высота = (int) 480, частота кадров = (дробная часть) 0/1, format = (строка) Y444, режим чересстрочной развертки = (строка) прогрессивный, режим многовидового просмотра = (строка) mono, multiview-flags = (GstVideoMultiviewFlagsSet) 0: ffffffff: / right-view-first / left-flipped / left-flopped / right-flippped / right-flop / half-aspect / mixed-mono, pixel-aspect-ratio = (фракция) 1/1 /GstPipeline:pipeline0/GstVideoRate:videorate0.GstPad:sink: caps = video / x-raw, ширина = (int) 640, высота = (int) 480, частота кадров = (фракция) 0 /1, формат = (строка) Y444, режим чересстрочной развертки = (строка) прогрессивный, монофонический режим = (строка) монофонический, флаги многовидового просмотра = (GstVideoMultiviewFlagsSet) 0: ffffffff: / правый-первый-просмотр / левый-щелчок левой кнопкой-flopped / вправо-влево / вправо-влево / половинный аспект / смешанный моно, соотношение сторон в пикселях = (фракция) 1/1 /GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video / x-raw, format = (строка) RGB, ширина = (int) 640, высота = (int) 480, режим чересстрочной развертки = (строка) прогрессивный, режим multiview-mode = (string) mono, флаги multiview-flags = (GstVideoMultiviewFlagsSet) 0:FFFfffff: / право-первый-первый / перевернутый влево / перевернутый влево / перевернутый вправо / перевернутый вправо / полу-аспект / смешанный-моно, соотношение сторон-пикселей = (фракция) 1/1, колориметрия = (строка) sRGB, частота кадров = (фракция) 0/1/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstDecodePad:src_0.GstProxyPad:proxypad1: caps = video / x-raw, format = (string) RGB, ширина = (int) 640, высота = (int) 480, чересстрочный режим = (строка) прогрессивная, multiview-mode = (строка) моно, multiview-flags = (GstVideoMultiviewFlagsSet) 0: ffffffff: / right-view-first / left-flipped / left-flops / left-flpped / right-flpped / right-flopped / half- аспект / смешанный моно, соотношение сторон в пикселях = (фракция) 1/1, колориметрия = (строка) sRGB, частота кадров = (фракция) 0/1 /GstPipeline:pipeline0/GstX264Enc:x264enc0.GstPad:src: caps = video / x-h264, codec_data = (буфер) , profile = (string) high-4: 4: 4, width = (int) 640, height = (int) 480, пропорции пикселя = (фракция) 1/1, частота кадров = (фракция) 0/1, interlace-mode = (строка) прогрессивный, colorimetry = (строка) bt601, chroma-site = (строка) jpeg, multiview-mode = (string) mono, multiview-flags = (GstVideoMultiviewFlagsSet) 0: ffffffff: / right-view- первый / левый переворачивается / левый плюхнулся / правый переворачивается / правый плюхнулся / половинной аспект / смешанный-моно /GstPipeline:pipeline0/GstMP4Mux:mp4mux0.GstQTMuxPad:video_0: caps = video / x-h264, codec_data = (буфер) , profile = (string) high-4: 4: 4, width = (int) 640, height = (int) 480, пропорции пикселя = (фракция) 1/1, частота кадров = (фракция) 0/1, interlace-mode = (строка) прогрессивный, colorimetry = (строка) bt601, chroma-site = (строка) jpeg, multiview-mode = (string) mono, multiview-flags = (GstVideoMultiviewFlagsSet) 0: ffffffff: / right-view- первый / левый переворачивается / левый плюхнулся / правый переворачивается / правый плюхнулся / половинной аспект / смешанный-моно /GstPipeline:pipeline0/GstMP4Mux:mp4mux0.GstPad:src: caps = видео / quicktime, вариант = (строка) iso /GstPipeline:pipeline0/GstFileSink:filesink0.GstPad:sink: caps = видео / quicktime, вариант = (строка) iso Трубопровод ПРЕРОБЛЕН ... Настройка конвейера на PLAYING ... Новые часы: GstSystemClock /GstPipeline:pipeline0/GstMP4Mux:mp4mux0.GstPad:src: колпачки = видео / QuickTime, вариант = (строка) изо, streamheader = (буфер) <000003796d6f6f760000006c6d76686400000000d8ec7eeed8ec7eef00002710000000000001000001000000000000000000000000010000000000000000000000000000000100000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002000002c87472616b0000005c746b686400000007d8ec7eeed8ec7eef000000010000000000000000000000000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000400000000280000001e0000000000024656474730000001c656c73740000000000000001000000000000000000010000000001e76d646961000000206d64686400000000d8ec7eeed8ec7eef000027100000000055c400000000002d68646c72000000000000000076696465000000000000000000000000566964656f48616e646c657200000001926d696e6600000014766d68640000000100000000000000000000002464696e660000001c6472656600000000000000010000000c75726c2000000001000001527374626c000000d2737473640000000000000001000000c2617663310000000000000 00100000000000000000000000000000000028001e0004800000048000000000000000100000000000000000000000000000000000000000000000000000000000000000018ffff000000356176634301f4001effe1001c67f4001e919b281407b602d41804150000030001773594000f162d9601000668ebec448440000000146274727400000000002000000000000000000013636f6c726e636c78000600010006000000001070617370000000010000000100000018737474730000000000000001000000020000000000000014737473730000000000000001000000010000001c7374736300000000000000010000000100000002000000010000001c7374737a00000000000000000000000200002fc000000037000000147374636f0000000000000001000000300000005975647461000000516d657461000000000000002168646c72000000006d686c726d6469720000000000000000000000000000000024696c73740000001ca9746f6f00000014646174610000000100000000783236340000003d75647461000000356d657461000000000000002168646c72000000006d686c726d6469720000000000000000000000000000000008696c7374>/GstPipeline:pipeline0/GstFileSink:filesink0.GstPad:sink: caps = video / quicktime, option = (string) iso, streamheader = (buffer) <> Получил EOS из элемента "pipe0".Выполнение завершилось после 0: 00: 00.814042926 Установка конвейера на PAUSED ... Установка конвейера на READY ... Установка конвейера на NULL ... Освобождение конвейера ...

1 Ответ

1 голос
/ 29 апреля 2019

Для создания mp4 из ваших png вы можете использовать следующий конвейер:

gst-launch-1.0 -e multifilesrc location = "frame% 05d.png"
caps = "image / png, framerate = 30/1"! pngdec! видеоконвертер! очередь ! x264enc! очередь ! mp4mux! расположение файловой папки = image.mp4

Примечание:

  1. Вышеуказанное создаст MPF 30 кадров в секунду, если вам просто нужно видео 60 кадров в секунду измените caps в multifilesrc на caps = "image / png, framerate = 60/1" для видео 60 кадров в секунду.
  2. Также вы можете изменить кодировщик, если у вас есть какие-либо аппаратные средства кодировщик.
...