GStreamer: играть в mpeg2

Я пытаюсь воспроизвести локальный файл TS MPEG2 с gstreamer с этим:

gst-launch  filesrc location=open_season.mpg ! mpeg2dec ! xvimagesink

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

Вот журнал:

$ gst-launch  filesrc location=open_season.mpg ! mpeg2dec ! xvimagesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ....
WARNING: from element /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0: Internal data flow problem..
Additional debug info:.
gstbasesink.c(3492): gst_base_sink_chain_unlocked (): /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0:
Received buffer without a new-segment. Assuming timestamps start from 0.
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Got EOS from element "pipeline0".
Execution ended after 6866757291 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ..

1 ответ

Решение

Я думаю, что сначала вы должны сначала попытаться воспроизвести файл с помощью playbin2. Если вы можете воспроизвести его, то вам следует использовать decodebin2, отладить его вывод и соответственно построить свой конвейер.

Синтаксис для playbin2 выглядит следующим образом:

gst-launch playbin2 uri = file:///home/user1031040/Desktop/file.mpg

Синтаксис для decodebin2 следующий:

gst-launch filesrc location = file.mpg ! decodebin2 ! autovideosink
Другие вопросы по тегам