2011-10-14 4 views
-1

사내 플래시 플레이어가있는 Wowza 미디어 서버에서 미리 녹화 된 rtmp 스트림을 완전히 버퍼링하는 데 문제가 있습니다. 비디오를 완전히 프리 버퍼링해야한다는 요구 사항은 관리 부서에서 가져옵니다. 전체 비디오를 오프라인으로 볼 수 있어야합니다.Wowza에서 rtmp 스트림을 완전히 버퍼링하는 플렉스/플래시

netConnection 객체가 연결되면 NetStream 객체를 만들고 NetStream.maxBufferTime을 비디오의 전체 길이로 설정하는 메타 데이터 이벤트 핸들러를 설정합니다. 또한 NetStream을 만들 때 비디오 구성 요소에 Event.ENTER_FRAME 수신기를 추가하여 비디오가로드되었을 때 (너비가 있는지) 확인하여 첫 번째 프레임에서 일시 중지되도록합니다.

그런 다음 netstream에서 비디오를 재생하기 시작합니다. 메타 데이터 이벤트가 수신되면 버퍼가 설정됩니다. 첫 번째 프레임이 다운로드되어 비디오 객체에 표시되면 플레이어는 첫 번째 프레임에서 일시 중지하지만 비디오는 계속 버퍼에로드됩니다. 이제 버퍼를 추적하면 (NetStream.bufferLength) 다음과 같은 현상이 나타납니다.

NetStream.maxBufferTime이 비디오 길이의 100 %로 설정된 경우 비디오는 다음과 같습니다. 완전히 버퍼링되고 약 4 초 후에 재생 헤드 (NetStream.time)가 비디오의 끝으로 이동합니다. 그러나 Linux 시스템에서 재생을 다시 시작하면 비디오는 정상적으로 표시되지만 재생 헤드는 100 %로 유지됩니다 (사용자 지정 큐 포인트 처리에 큰 영향을줍니다). Windows 시스템에서도 재생 헤드는 100 %로 유지되지만 비디오는 일반 속도의 100 배 속도로 재생됩니다.

버퍼가 100 %에 도달하면 이벤트 NetStream.buffer.flush 및 NetStream.play.stop (?!?!)이 트리거되지만 플레이어가 어느쪽에도 반응하지 않으므로 나에게 이것이 보이는 것입니다. 플래시 NetStream 또는 Wowza의 버그.

NetStream.maxBufferTime을 (비디오의 길이 - 0.4)로 설정하면 버퍼링이 스트림의 끝 직전에 중단되고 NetStream.Play.stop이 트리거되지 않고 재생 헤드가 첫 번째 위치에 유지됩니다 프레임,하지만 이것은 너무 해킹 해결책을 느낀다.

프로그레시브 다운로드는 해결책 중 하나로 느껴지지 않습니다. 적어도 일부는 비디오의 전부는 아니지만 적어도 일부는 복사로부터 보호되어야합니다.

모든 포인터?

Wowza는 플래시 10.1을 지원하기 위해 flex가 4.1이며, 스트림은 플렉스/플래시 레코더로 기록되거나 서버에 업로드되어 h.264로 변환됩니다 (둘 다이 동작을 나타냄). 그리고 플래시 버전 범위는 10.1에서 11.0까지입니다.

편집 :이 문제에 대해 궁극적으로 해결해야 할 경로는 최소한의 버퍼링만으로 rtmp 스트림으로 제공되며 공개 비디오는 점진적 다운로드로 서버가 될 것입니다. 코멘트에서 언급했듯이 rtmp는 버퍼링을하지 않기 때문에 우리가하는 일은 기본적으로 잘못되었습니다. 나중에 참조 할 수 있도록 : 몇 초 동안 rtmp 스트림을 버퍼링하지 마십시오.

답변

1

답변에 대한 확신이 너무 많습니다. 그러나 첫 번째 질문은 분명히 스트리밍 된 비디오의 전체 길이를 버퍼링하려는 이유는 무엇입니까? 나는 대답을 이해하지 못한다. 단지 더 많은 정보를 얻으려고 노력한다.

+0

50 명의 담당자가 ****을 (를) 사용하기 전까지는 댓글을 달 수 없으므로 추가 정보를 요청할 수있는 장벽이 있습니다. – JNissi

+0

어쨌든 유효한 질문입니다. 전체 비디오를 버퍼에로드하는 요구 사항은 관리에서 비롯됩니다. 오프라인으로 시청할 수 있어야합니다. – JNissi

+0

흥미 롭습니다. 나는이 경우에 스트리밍 루트를 전혀 신경 쓰지 않을 것이라고 생각합니다. – netrowillh

관련 문제