2014-05-18 3 views
3

웹 기반 오디오 스트리밍 사이트에서 재생을 위해 웹 오디오 API를 사용하는지 아니면 오디오 요소 나 다른 것에 의존하는지 파악하려고합니다.웹 기반 라디오 및 오디오 스트리밍 서비스가 재생 용으로 Web Audio API를 사용합니까?

오디오 스트리밍 서비스 사용자는 일반적으로 오디오 시작 및 정지보다 더 많은 기능이 필요하지 않으므로 오디오 요소로 충분합니다. VU 미터가 필요한 경우 분석기 노드가 내장되어 있기 때문에 Web Audio API를 사용할 것으로 추측됩니다. 그러나 IE가 API를 지원하지 않기 때문에 VU 미터와 같은 고급 기능을 사용하는 것보다는 오디오 요소를 사용하고 IE 사용자에게 접근하는 것이 좋습니다.

저는 Spotifys 웹 플레이어, Grooveshark, BBC 라디오 및 폴란드 공용 라디오의 소스 코드를보고 있었지만 오디오 요소 나 Web Audio API를 사용하지 않았습니다. 나는 스웨덴의 공공 라디오 (sr.se)가 오디오 요소를 사용하고 있음을 발견했다.

나를 위해 자바 스크립트 소스 코드를 살펴 보는 것이 아니라 피사체에 익숙한 사람이 올바른 방향으로 나를 가리킬 수 있는지 묻는 것입니다.

답변

4

현재 웹 오디오 API를 사용하여 스트림을 재생하는 인터넷 라디오 서비스에 대해 알지 못합니다. 그러나 나는 그것을 찾지 않을 것입니다. 나는 Audiocog's excellent Aurora.js library을 사용하여 혼자서 작업을 해왔다. JavaScript를 사용하여 오디오를 디코딩함으로써 일반적으로 사용할 수없는 브라우저에서 코덱을 사용할 수있다. 그러나, 당신이 지적한 바와 같이 호환성의 이유로, 이것은 오늘날 실험적인 것으로 간주 될 것입니다.

대부분의 인터넷 라디오 방송국은 <audio> 요소 또는 Flash 내에서 재생할 수있는 프로그레시브 HTTP 스트리밍 (SHOUTcast/Icecast 스타일)을 사용합니다. 이것은 잘 작동하지만, 특히 SHOUTcast 서버를 not quite 100% compatible with HTTP처럼 사용하면 Firefox의 일부 버전과 많은 모바일 브라우저에서 브라우저 지원을 아프게하는 경우 특히 어려울 수 있습니다. HTTP 프로그레시브로 더 나은 브라우저 및 모바일 브라우저 지원을 얻으려면 AudioPump Server이라는 자체 서버를 작성해야합니다.

사용 가능한 플래시 코드 및 ActionScript 버전에 따라 기본적으로 Flash는 HTTP를 통해 스트리밍하도록 빌드되지 않았으므로 기본적으로 모든 스트림 데이터를 무기한으로 유지하므로 deal with memory leaks in creative ways이어야합니다. 많은 사람들이 플래시 (Wowza 또는 이와 유사한 서버에서)와 RTMP를 사용합니다.이 문제를 해결하기 위해 플래시 이었습니다.

iOS는 기본적으로 HTTP 서버에서 제공하는 정적 파일의 모음 인 HLS을 지원합니다. 인코더는 인코딩이 발생할 때 스트림의 덩어리를 각 파일에 쓰고 클라이언트는 파일을 다운로드하고 원활하게 재생합니다. 여기서 이점은 클라이언트가 스트리밍 할 비트 전송률을 선택하고 네트워크 조건이 변경되면 품질을 높이거나 낮출 수 있다는 것입니다. 이는 청크가 독립적으로 상태에 관계없이 다운로드되기 때문에 네트워크를 완전히 전환 (WiFi에서 3G로 전환) 할 수 있다는 것을 의미합니다. Android는 "HLS"를 지원하지만 버그가 있습니다. 사파리는 현재 HLS를 지원하는 유일한 브라우저입니다.

호환성 검색은 스스로 해결해야 할 필요가 없습니다. jPlayerJW Player과 같은 많은 플레이어가 HTML5 오디오 지원 감지, 코덱 지원 감지를 다루며 HTML5 오디오 및 Flash 재생을위한 공통 API를 제공합니다. 또한 신속하게 실행 및 실행하려는 경우 선택적 UI를 제공합니다.

마지막으로 대부분의 스테이션에서는 자신의 미디어 플레이어에서 스트림을 재생할 수있는 링크를 제공합니다. 이것은 다운로드되고 종종 (사용자와 브라우저에 의해 설정된대로) 즉시 열리는 재생 목록 파일 (일반적으로 M3U 또는 PLS)에 링크하여 수행됩니다.플레이어 소프트웨어는이 재생 목록을로드 한 다음 스트리밍 서버에 직접 연결하여 재생을 시작합니다. Android의 경우 간단하게 link to the stream URL입니다. Content-Type 응답 헤더를 감지하고 연결을 끊고 재생을 위해 구성된 미디어 플레이어를 엽니 다. 요즘에는 직접 링크를 찾아야하지만 거기에 있습니다.

역이 컴파일되고 축소 된 소스 코드에서 파고 들지 않고 무엇을 사용하고 있는지 알고 싶다면 Fiddler 또는 과 같은 도구를 사용하여 트래픽을 감시하면됩니다. 당신은 그것이 두건의 밑에 아주 간단하다는 것을 것을을 발견 할 것이다.

1

우리는 HTTP 라이브 스트리밍과 매우 유사한 프로토콜을 사용하여 Aurora.js를 통한 스트리밍을 위해 웹 오디오를 사용합니다. 우리는 동일한 스트리밍 백엔드가 iPhone, Android 및 웹 서비스를 제공하기를 원했기 때문에이 작업을 수행했습니다.

6 개월 이상의 노력을 기울인 것은 매우 길고 고통스런 과정 이었지만 이제는 모두 끝났습니다.

http://radioflote.com을 보시고 무엇이든 질문이나 설명을 자유롭게 촬영하십시오. 원한다면 코드를 분해하십시오. 문제가 아니다.

+0

매우 좋습니다. 휴대 기기의 성능은 어떻습니까? – Brad

+0

우리는 소프트웨어 디코딩으로 모바일 프로세서에 세금을 부과하는 것이 좋은지 잘 모르기 때문에 모바일 용 앱을 만들었습니다. 그러나 최신 Android 휴대 전화에서 작동하지만 iPhone은 오랫동안 HTML Audio를 지원하지 않았지만 최신 장치에서 작동하는 것으로 들었습니다. 나는 아직 이것을 확인하지 못했다. – Bitonator