2011-01-27 4 views
5

NetConnection 및 NetStream을 사용하여 오디오를 스트리밍하고 있습니다. Sound 객체로 샘플 데이터를 실시간으로 수정할 수는 있지만 NetStream 객체로 재생되는 오디오의 SampleDataEvent는 찾을 수 없습니다. NetStream 객체의 오디오를 Sound 객체에 전달하고 대신 해당 객체의 사운드를 수정하는 방법이 있습니까?NetStream 내 오디오의 SampleDataEvent로 실시간 사운드 수정

편집 : 나는 모든 종류의 미친 해킹을 기꺼이 수행하므로 어떤 해결책이라도 괜찮습니다!

+0

오디오 데이터가 서버 측에있는 이유는 예제 URL을 보여줄 수 있습니까? 새로운 트랙마다 새로운 URL이 있습니까? 아니면 항상 동일합니까? 서버가 재생 속도보다 훨씬 빠르게 다운로드 할 수 있으며 전체 파일을 가져올 수 있습니까? – www0z0k

+0

내가 방법을 알고 있다고 생각, 그냥 더 많은 정보가 필요 – www0z0k

+0

데이터는 표준 RTMP와 MP3를 통해 스트리밍됩니다. URL의 예는 http : // host : 1935/mp3playback/mp3 : hello.mp3과 같습니다. 각 트랙마다 새로운 URL이 있습니다. 물론 Sound() 객체를 통해 점진적 다운로드를 수행하여 원하는 것을 얻을 수도 있지만 NetStream()을 사용하여이를 수행하려고합니다. – Johan

답변

2

당신은 가능 NetStream을를 사용하는 경우에만 스트리밍되는 데이터뿐만 아니라에 NetStream.send()/NetConnection.call()(하여 요청)에 전달하여 소리의 바이트 코드에 접근 할 필요가있다. 그렇지 않다면 Sound 또는 URLStream

2

에 대한 직접 URL과 같은 것이 필요할 것입니다. 원하는 품질에 따라 낮은 비트 전송률의 모노 신호로 희생 할 수 있습니다. 스트림 할 수 있습니다. 그것을 클라이언트 측에서 URLStream으로 얻은 다음 런타임시 점진적으로 빈 Sound 객체의 SampleDataEvent에 해당 URLStream의 데이터를 공급할 수 있습니다.

추가 작업은 주로 서버 측에서 부동 소수점 형식의 웨이브 폼 스트림 (단일 채널 [모노] 신호의 스트림 또는 모노와 결합 된 두 개의 혼합)으로 압축을 푸는 것입니다. 클라이언트 측 응용 프로그램으로 푸시합니다.

URLStream이로드되면 다운로드 한 바이트를 Sound의 SampleDataEvent에서 사용할 수있는 ByteArray에 추가합니다. 또한 충분한 파형 데이터를로드하는 데 약간의 버퍼 "시간"을 지정합니다. URLStream에서 읽은 각 모노 샘플에 대해 동일한 값을 SampleDataEvent.data 객체에 두 번 기록해야합니다 (한 번은 왼쪽 채널로, 한 번은 오른쪽으로).

이 모든 것이 WAV와 유사한 사운드 스트림을 모노로 다운 그레이드하는 것은 대역폭을 줄이고 광범위한 대상층에 도달하는 데 충분하지 않을 수 있습니다. 아마도 AS3 용 OGG 라이브러리 (존재해야만 함)가 더 나은 대안 일 수 있으며 부분적으로 다운로드 된 스트림의 디코딩을 확실히 지원해야합니다.

관련 문제