2013-07-07 6 views
1

RTP를 통해 VP8/VP9 스트림을 쉽게 전송할 수있는 기존 라이브러리가 있습니까?VP8/VP9 RTP 라이브러리

VP8 (http://tools.ietf.org/html/draft-ietf-payload-vp8-08)에 대한 RFC 초안을 찾았지만 VP9 코덱은 언급하지 않았습니다 (너무 최근입니까?). libavformat가이 초안을 구현 한 것 같습니다. 누구든지 다른 대안이 있습니까?

+0

http://www.webmproject.org/code/를 찾으십니까? 참고 tat RTP는 전송 프로토콜 일 뿐이며 원하는 RTP 라이브러리를 찾습니다. – nos

+0

RTP 라이브러리가 의미하는 것은 자체적으로 RTP보다는 VP8/9 페이로드의 구현입니다 (예 : 프레임 분할/조각화) – 3XX0

+0

코덱이라고하며 공식/원본 vp8/9 코덱은 링크에 있습니다. – nos

답변

3

Mediastreamer2이 작업을 수행 할 수 있습니다. VP8을 지원하는 Linphone에서 사용됩니다.

0

GStreamer 1.8.2부터 (더 오래되었지만 1.8.2 이상이면 훨씬 쉬울 것입니다.)이 모든 작업은 GStreamer 자체를 사용하여 수행 할 수 있습니다. 당신은 ffmpeg와 libav를 무시해야한다. (똑같은 일 - 프로젝트는 분열을 가지고있다.) cross-plugs.

gstreamer, gst-plugins-base, gst-plugins-good 및 gst-plugins-bad 소스를 원할 것입니다. gst-plugins-ffmpeg, libav 등을 사용하지 마십시오.이 시점에서 모든 조언은 오래되었습니다. (당신은 여전히 ​​h.264/h.265를 위해 그것을 필요로 할지도 모르지만 그것은 또 다른 혼란입니다.) libvpx에 대한 소스도 있어야합니다. automake에서 이러한 프로젝트를 구축하는 데 익숙하고 익숙해집니다. 특히 GStreamer는 매우 깨끗한 configure 스크립트를 가지고 있습니다. 효과적으로 사용하는 방법을 배우십시오.

0.10 시리즈와 1.8.2 시리즈 코드를 섞어서 사용하지 않는 것이 중요합니다. 그러나 VP8에 대한 RFC가 승인 된대로 중요합니다 (오푸스의 경우와 마찬가지로 오디오 용으로 사용하는 경우).), 그리고 SDP 파일에서 사용되는 일부 마법 문자열이 변경되었습니다.

그러나 약간의 느슨한 부분이 있음을 유의해야합니다.

특히 SDP 파일을 사용하여이 모든 것을 구동하는 경우 "sdpdemux"를 사용하는 자동 그래프 생성에는 여전히 몇 가지 제한 사항이 있습니다. 우선 sdpdemux는 "순위"가 없으므로 "application/sdp"유형을 자동으로 처리하지 않습니다. 그래프를 작성하기 위해 사용자 정의 응용 프로그램을 빌드해야합니다.이 프로세스에는 약간의 학습 곡선이 있습니다.

플러그인의 분기 복사본을 열고 조정할 수 있어야합니다. 많은 노력을 기울이지 않는 경우가 많기 때문에 복사 된 플러그인에는 많은 수의 토큰 이름 변경이 필요합니다. 기존 플러그인과 충돌하기 때문에 플러그인이 작동하는지주의 깊게 확인해야합니다.

vp8parse vp8enc vp8dec :

난 당신이 철저하게 아래있는 GStreamer 구성 요소를 숙지하는 것이 좋습니다 : rtpjitterbuffer sdpdemux udpsink udpsrc videoconvert

rtpbin matroskamux matroskademux 큐 을 (주 아래 참조)

... 적어도 하나의 현대 오디오 코드와 일치하는 자료 c (나는 Opus를 추천한다. 그래서 "opusdec"와 "opusenc").

메모 "vp8parse" 이것은 "kotaku"프로젝트에서 사용할 수 있으며 필요하지 않을 수도 있습니다. 가상 레벨에서 vp8 비디오를 처리하고 싶다면 실제로 그것을 디코딩하지 않고 건너 뛰기 만하면됩니다. 특정 유형의 비선형 편집 응용 프로그램은 이 분명히이 필요합니다. GST 1.8.2부터는 아직 GStreamer 메인 라인 코드베이스에 병합되지 않았습니다.

위생적 인 보존의 특별한 포인트로서, 당신이 들어오는 것을 이해하지 않고 RTP를 통해 오디오 스트리밍을 할 때 VORBIS를 사용하지 마십시오. 보비스 (Vorbis)와 테오 라 (Theora)는 "동적 코드북"- 압축되는 자료에 따라 내용 의존 압축 사전을 사용합니다. 이것은 디코더가 마술 적으로 엔코더가 코드북으로 제공 한 것을 알아야하지만 스트리밍 중이기 때문에 파일 헤더가 없다는 것을 의미합니다. 이 문제를 해결할 수있는 방법이 있지만 즐겁지는 않습니다. 원격지의 복구를 위해 SDP 파일에이 파일을 저장하려고 시도하는 경우, 양을 허용 할 수있는 저비용 스카치 위스키를 찾아내는 것이 좋습니다.

주의 할 점이 몇 가지 있습니다.

당신이 처분 할 수있는 매우 완전한 QA 리소스를 가지고 있지 않으면 하드웨어 가속 임베디드 시스템에서 디코딩 될 것으로 예상되는 경우 "화려한"압축 설정을 사용하지 마십시오. 기술적으로 유효한 모든 스트림이 모든 하드웨어 가속 디코더에서 디코딩되지는 않습니다. 특히, "탄력성"옵션은 유혹적이고 매우 효과적이지만 IMX6 타겟에 대한 가속화 된 디코딩을 중단합니다.

VP8 인코딩은 매우 중요한 절충없이 실시간으로 처리 할 수 ​​없습니다. 이들이 무엇이며 어떻게 작동하는지 알기까지 시간이 걸릴 수 있습니다. 이 질문의 범위를 벗어나는 것은 사실입니다. 단, 실제로 데이터를 udpsinks에 충분히 빠르게 전달하지 않으면 송신기가 고장 났다고 쉽게 생각할 수 있습니다. 걱정하지 마라, 할 수있다. 그러나 당신은 당신의 연구를 할 필요가있다. 먼저 libvpx의 "deadline"옵션을 살펴보십시오.

마지막으로 특별히 SDP의 RTP, RTCP (R-T-C-P, RTP, TCP가 아님), SDP, VP8 스트림의 VP8, RTP, VP8 페이로드에 대한 RFC를 자세히 살펴 보시기 바랍니다. 각 특정 문제점에는 여러 RFC가 있습니다. 너는 조심해야한다. 현재 조심해야한다. 몇 가지 중요한 변화가있었습니다. 당신이 할 수있는 경우

  1. 당신은 GST-출시로 모든 것을 할 수는 없지만 :

    당신이 당신의 사양과 도구에 익숙해으로

    , 당신은 지금 당신을 위해 요약됩니다 세 점을 알게 될 것이다 , 엄청난 시간을 절약 할 수 있습니다.

  2. 사용자 지정 응용 프로그램으로 모든 것을 할 수 있지만 학습 곡선이 중요하며 개발 시간도 중요합니다.

  3. 공식적으로 RFC를 작성하는 사람들은 놀랍게도 그들이 쓰고있는 자료의 좁은 사용 사례를 테스트 한 사람이 많습니다. 특히 멀티미디어에 관한 것입니다.

행운을 빈다!