2013-10-13 3 views
2

Пробовал ли кто-нибудь использовать Gstreamer SDK Tutorials в http://docs.gstreamer.com/display/GstSDK/Tutorials to gstreamer 1.0?Порты Gstreamer SDK Tutorials (gstreamer 0.1) to gstreamer 1.0

Я попытался передать basic-tutorial-8.c из GstSDK в gstreamer 1.0. Конечный результат не работает и во время выполнения с ошибкой.

Вот что я сделал до сих пор. Мой главный источник помощи была следующая страница: http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/chapter-porting-1.0.html#section-porting-objects-1.0

  1. Заменены аудио/х-сырец-ИНТ с аудио/х-сырца

  2. Заменены data.app_sink, «новый-буфер» с данными .app_sink, "нового образца"

  3. Заменено

    tee_src_pad_template = gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS (data.tee), "src%d"); 
    

    с

    tee_src_pad_template = gst_element_class_get_pad_template(GST_ELEMENT_GET_CLASS(data.tee), "src_%u"); 
    
  4. Заменено

    raw = (gint16 *)GST_BUFFER_DATA (buffer); 
    

с

GstMapInfo stGstMapInfo1; 
gst_buffer_map(buffer, &stGstMapInfo1, (GstMapFlags)(GST_MAP_READ | GST_MAP_WRITE)); 
raw = (gint16 *)stGstMapInfo1.data; 

. . .

/* Free the buffer now that we are done with it */ 
gst_buffer_unmap(buffer, &stGstMapInfo1); 
  • 5- Заменен «ffmpegcolorspace» с «videoconvert»

После вышеуказанных изменений можно построить и запустить программу, но она дает следующее сообщение об ошибке после нескольких моментов: Ошибки полученных от элемента audio_source: Ошибка внутреннего потока данных. Debugging информации: gstbasesrc.c (2865): gst_base_src_loop():/GstPipeline: тест-конвейерный/GstAppSrc: audio_source: потоковая задача приостановлена, причина не-переговоры (-4)

Я думаю, что я должен работать больше на функциях new_buffer и push_data этого урока.

Заранее благодарю вас за помощь.

ответ

1

Трудно догадаться, не глядя на ваш окончательный код. Но ошибка исходит от appsrc и «не согласована». Одно существенное изменение от 0.10 до 1.0 заключается в том, что у буферов больше нет колпачков.

В 0.10, когда вы отправляете GstBuffer в appsrc, он будет нести GstCaps, и это будет установлено и согласовано при нажатии первого буфера. В 1.0 вы должны явно установить ограничения на appsrc, прежде чем нажимать на него буферы.

Кроме того, audio/x-raw-int не совсем эквивалентен аудио/x-raw, так как аудио/х-raw также может означать, что представленный звук плавает. Возможно, вы захотите проверить http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstaudio.html#GstAudioFormat, чтобы узнать, хотите ли вы установить более строгие звуковые колпачки.

И еще одно, что GstSample (http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstSample.html) - это небольшой объект, содержащий GstBuffer и GstCaps, может быть полезно дважды проверить правильность его использования.

+0

Tx, я буду смотреть на эти части, чтобы увидеть, если я могу заставить его работать. Исходный код доступен по адресу http://docs.gstreamer.com/display/GstSDK/Basic+tutorial+8%3A+Short-cutting+the+pipeline , и я просто изменил 5 частей, описанных в моем вопросе. – Yashil

+0

На данный момент я нашел следующие справочные ссылки очень полезными и портировал другие функции один за другим: http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/chapter-dataaccess.html http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-appsink.html#gst-app-sink-pull-sample – Yashil

9

В SDK учебники уже портирована здесь (один из разработчиков GStreamer):

http://cgit.freedesktop.org/~slomo/gst-sdk-tutorials/

+0

У меня возникли проблемы с запуском на OSX - http://stackoverflow.com/questions/23777031/gstreamer-gst-video-videooverlay-h-file-not-found/23851995#23851995 - есть ли в SDK 1.0 SDK? – ThatGuy

+0

Автор портированных учебников имеет [блог] (https://coaxion.net/blog/2013/10/gstreamer-1-0-examples-for-ios-android-and-in-general/) со многими комментарии/вопросы/ответы. – cybersam

Смежные вопросы