2013-09-02 4 views
0

Flash Media Server 4.5를 사용하여 스트리밍 중입니다. 나는 2 개의 신청에 창조했다 -FMS에서 스트리밍하는 동안 비디오가 비정상적으로 빨리 재생됩니다 (iPad에서는 문제가 나타남).

1) 발행인 : FMS를 사용하여 영상을 간행하십시오. 2) 수신자 : 게시 된 스트림을 재생합니다.

모든 것이 웹 또는 데스크톱 브라우저에서 매우 간단하므로 잘 작동합니다.

그러나 iPad, 비디오로 리시버 앱을 포트하면 잘 재생되지만 빠른 속도로 재생됩니다 (예 : VCR 또는 DVD 플레이어에서 빠른 forwading). 몇 밀리 초 후 다시 정상으로 돌아옵니다.

참고 : FMS 대신 Wowza 서버를 사용해 보았지만 행운은 없습니다.

이 문제를 해결하기 위해 카메라 fps를 10으로 낮추고 품질을 50으로 낮추고 false로 설정하는 등의 일부 설정으로 재생했습니다. 그것은 lil bit 개선을 가져 오지만 내 클라이언트는 iPad에서도 저품질 비디오를 타협 할 수 없습니다.

미리 감사드립니다.

답변

0

이것은 실제로 라이브 스트리밍의 의도 된 동작입니다. 이 질문에 대한 답은 "한 가지 크기"입니다.

RTMP (TCP 프로토콜)를 사용하는 경우 네트워크 계층은 모든 패킷이 전달되는지 확인합니다. 이것은 라이브 스트리밍에 반드시 필요한 것은 아닙니다. 일반적으로 RTMFP (UDP 프로토콜)를 사용하는 것이 좋습니다.

이전에 어디에서 읽었는지 찾을 수 없습니다 (NetStream 설명서). 그러나 Flash Player는 실시간 스트림을 유지하는 것이 가장 좋습니다. 동영상 재생 속도가 약간 빨라지거나 동영상 프레임이 드롭 될 수 있습니다.

이 문제는 일반적으로 네트워크 문제로 인해 발생하므로 비디오 피드의 품질을 낮추는 것이 좋습니다. 그러나 가장 좋은 방법은 카메라의 캡처 해상도 (Camera.setMode() 사용)입니다.

캡처 해상도를 낮추면 비디오를 전송하는 데 필요한 대역폭이 줄어 듭니다. 더 작은 캡처 해상도 (예 : 320x240)를 사용하여 더 큰 크기로 Video 개체 (480x360)에 표시 할 수 있습니다. 분명히, 당신은해야 할 거래가 있습니다. 사용자에게 네트워크 조건에 따라 품질을 설정할 수있는 옵션을 제공 할 수 있습니다.

기타 유용한 방법은 Camera.setQuality()입니다. 대역폭에 문제가있는 경우 Flash에서 대역폭을 기반으로 품질을 관리 할 수 ​​있도록 대역폭 대상을 지정할 수 있습니다. 사용자에게이 옵션을 구성하는 옵션을 제공하십시오.

마지막으로, 문제가 IPad에서만 발생하고 대역폭이 문제가 아니라고 확신하는 경우 하드웨어 관련 문제 일 수 있습니다. 다시 말하면 Flash는 실시간 스트리밍을 가능한 한 최신 상태로 유지하기 위해 할 수있는 일을합니다 (이 시나리오에서는 더 빨리 플레이하지 않으면 프레임이 떨어지는 느낌입니다).

+0

감사 Sunil. 라이브 비디오가 RTMP를 통해 스트리밍됩니다. Flash Player가 스트리밍 된 비디오를 따라 잡는 것이 가장 좋지만, 떨어 뜨린 프레임이라고 불릴 수 있는지 확실하지 않은 프레임을 버리면 앱의 성능이 크게 떨어집니다. 대역폭이나 품질을 낮추는 것은 앱에서 허용되지 않습니다. 나는 그것이 장치의 대역폭 + 하드웨어 기능 때문이라고 생각하지만이를 극복 할 단서가 없다. 필자는 Wowza (트랜스 코더)의 Adaptive bitrate 기능 또는 FMS의 Dynamic Streaming 기능을 사용하여 다양한 장치에 대해 가능한 최상의 비트율로 스트림을 전달하려고 노력할 것입니다. 손가락이 엇갈 렸다! –

+0

RTMFP 사용을 진지하게 고려해야합니다. 그런데 비디오 프레임을 떨어 뜨리고 비디오를 더 빨리 재생하는 것은 Flash Player가 비디오를 포착하기 위해 사용하는 두 가지 기술입니다. RTMP는 TCP 프로토콜이기 때문에 프레임을 떨어 뜨릴 가능성이 적으므로 빠르게 재생할 수 있습니다. 문제가있을 때 스트림의 bufferLenghth 속성을 검사하십시오. 실시간 스트림의 경우 가능한 한 작게 설정해야합니다 (값이 크다는 것은 라이브 스트림이 네트워크로 인해 지연됨을 의미합니다). –

+0

RTMFP는 UDP 프로토콜이기 때문에 bufferLength를 작게 유지하면서 네트워크 패킷을 삭제할 수 있습니다. TCP와 UDP의 차이점은 ... –