سؤال

أريد إنشاء عنصر واجهة مستخدم كيو تي يمكن أن تلعب تدفقات RTP الواردة حيث يتم ترميز الفيديو ك H264 ولا يحتوي على أي صوت.

خطتي الأساسية للتنفيذ هي:

  • إنشاء فونون مصدر إعلامي كائن (نوع الدفق).
  • ربطها مع Qiodevice. Subclass التي توفر البيانات
  • الحصول على بيانات الفيديو باستخدام إما:
    • ال jrtplib. مكتبة العميل
    • ال gstreamer gstrtpbin. توصيل في. هذا البرنامج المساعد يأخذ Depay تحميل الحزم وفك تشفير الفيديو. ربما يحسن هذا الفرص التي ستعترف بها فونون بالبيانات.

بيئتي:

  • أوبونتو 9.10.
  • QT 4.6.

أسئلتي:

  • هل نهجتي جيدة؟ ربما أنا أطل على حل أكثر وضوحا أو بسيطة؟
  • أنا أعاني حاليا من هذه المشكلة: عند محاولة تشغيل دفق الفيديو، تتحول حالة MediaObject إلى ErressState باستخدام FatalError. هل يمكن لأحد أن يقول لي ما أفعله خطأ؟

تعديل
حل واحد وجدته يستخدم libvlc بالاشتراك مع كيو تي، الذي تعلمته في هذا مسلك. وبعد هنا نموذج الكود من أجل المهتمين. ما زلت أبحث عن حل مقرها فونون.
من الناحية المثالية، أود فقط أن أقدم ملف SDP ويتم القيام بهما.

هل كانت مفيدة؟

المحلول

كنت قادرا على العمل باستخدام حل LIBVLC. لا أستطيع garantuee أن هذا هو أفضل حل رغم أنه توقفت ببساطة عن الاعتناء بذلك.

هنا رابط لعينة libvlc.

نصائح أخرى

الطريقة التي أفهمها أن تعمل فونون على الأقل في نظام التشغيل Windows هو أن كيو تي يوفر مكون إضافي فونون Backend ل DirectShow ( Plugins Phonon_backend phonon_ds94.dll) و GSTreamer في قضيتك. ثم سوف تحصل إما أو اكتب مرشح DirectShow الخاص بك والتي يمكن أن تقبل تدفقات RTP كمصدر. DirectShow يعتني بفك التشفير، وسوف تهتم فونون بالعرض.

لذلك إذا كانت الأعمال الخلفية، فإن رمز التطبيق بسيط مثل:

        Phonon::MediaObject *media = new Phonon::MediaObject();
        Phonon::VideoWidget *video = new Phonon::VideoWidget();
        Phonon::createPath(media, video);
        media->setCurrentSource(source);
        media->play();

يبدو أن المشكلة تكمن في الخلفية gstreamer قبول rtp كمصدر. هل يمكنك تشغيل هذا المصدر في Gerstreamer المستقل دون أي مشاكل؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top