문제

비디오가 H264로 인코딩되고 오디오가 포함되지 않은 수신 RTP 스트림을 재생할 수 있는 Qt 위젯을 만들고 싶습니다.

나의 기본 구현 계획은 다음과 같습니다.

  • 포논 생성 미디어 소스 객체(스트림 유형).
  • 그것을 연결하십시오 QIO장치 데이터를 제공하는 하위 클래스
  • 다음 중 하나를 사용하여 비디오 데이터를 얻습니다.
    • 그만큼 JRTPLIB 클라이언트 라이브러리
    • 그만큼 G스트리머 gstrtpbin 플러그인.이 플러그인은 패키지 디페이로드 및 비디오 디코딩을 담당합니다.어쩌면 이렇게 하면 Phonon이 데이터를 인식할 가능성이 높아질 수도 있습니다.

내 환경:

  • 우분투 9.10
  • Qt 4.6

내 질문:

  • 내 접근 방식이 좋은가요?아마도 내가 더 분명하거나 간단한 해결책을 간과하고 있는 것 아닐까요?
  • 현재 다음 문제가 발생했습니다.비디오 스트림을 재생하려고 하면 MediaObject의 상태가 errorType FatalError를 사용하여 ErrorState로 전환됩니다.누구든지 내가 뭘 잘못하고 있는지 말해 줄 수 있나요?

편집하다
내가 찾은 한 가지 해결책은 Qt와 함께 libVLC를 사용하는 것입니다. .여기 코드 샘플 관심있는 사람을 위해.저는 여전히 Phonon 기반 솔루션을 찾고 있습니다.
이상적으로는 SDP 파일만 제공하면 작업이 완료됩니다.

도움이 되었습니까?

해결책

LIBVLC 솔루션을 사용하여 작업 할 수있었습니다. 나는 이것이 바로 그라 란 테에게 할 수 없다 베스트 솔루션은 단순히 그것을 돌보는 것을 멈추었습니다.

여기에 있습니다 LIBVLC 샘플에 링크.

다른 팁

내가 Phonon이 적어도 Windows에서 작동한다는 것을 이해하는 방법은 QT가 귀하의 경우 DirectShow(\plugins\phonon_backend\phonon_ds94.dll) 및 GStreamer용 포논 백엔드 플러그인을 제공한다는 것입니다.그런 다음 RTP 스트림을 소스로 받아들일 수 있는 DirectShow 필터를 직접 얻거나 작성합니다.DirectShow는 디코딩을 담당하고 Phonon은 렌더링을 담당합니다.

따라서 백엔드가 작동하면 애플리케이션 코드는 다음과 같이 간단합니다.

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

문제는 RTP를 소스로 받아들이는 GStreamer 백엔드에 있는 것 같습니다.아무런 문제 없이 독립형 GStreamer에서 해당 소스를 재생할 수 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top