2011-08-19 2 views
0

URL에서 스트림을 재생할 버퍼링 엔진을 구축 중입니다. MediaPlayer에 URL을 직접 전달할 수 없기 때문에 mp3와 aac (지원할 수있는 장치에서) 버퍼링이 필요합니다. 나는이 방법을 시도했다. 나는 2 개의 동기화 된 스레드를 가지고 있는데, 하나는 실행중인 데이터가있는 버퍼와 생성 된 두 번째 파일로 생성된다. 문제는 mediaplayer가 파일을 다른 것으로 전환 할 때 약간의 차이가 있다는 것이다. 어떻게 제거 할 수 있습니까 ?? 매우 성가신 ...안드로이드 장치에서 갭 버퍼

어쩌면 내 방법이 잘못 되었습니까? 그렇다면 아무도 소리를 자르지 않고 작업 방법을 제공 할 수 있습니까?

답변

0

당신이 끊김없는 재생을 구현하려고하는 것 같다 .. 사전에 대단히 감사드립니다. (맞습니까?) 이러한 목표를 달성하려면 원하는 게 놀스 재생 레벨을 정의해야합니다. 파일 형식/코덱간에, 샘플 속도, 채널 수 등과 같은 오디오 속성이 있어야합니다.

사용자의 접근 방식을 사용하면 서로 다른 스트림에서 틈을 볼 수 있습니다. (Fileformats, 압축, 오디오 속성).

는 응용 프로그램 수준에서 진정한 끊김없는 재생을 실현하려 (내 접근이) 당신이

  1. 사용자 정의 스택을 구현 다음을 수행해야합니다, 입력 파일을을 디코딩하고 PCM 샘플을 생산할 것이라고.

  2. 동일한 샘플 속도를 갖는 pcm 샘플을 생성하기 위해 리샘플링을 통해 pcm 샘플을 전달하십시오.이 스택에는 파서 (MP3, AAC) 및 디코더 (MP3, AAC ..)가 있습니다.

  3. 버퍼링 모듈을 입력 (파일) 및 출력 (리샘플링 된 pcm 데이터)에 추가하십시오.

  4. playout을 위해 Android SDK의 AudioTrack 클래스를 사용하십시오. 하나 개 화일 형식, 코덱 및 오디오 속성에 충실하면

, 다음 응용 프로그램 수준에서, 당신은 재생 목록에있는 모든 파일을 연결할 수 있으며, 재생 MediaPlayer를에 제공한다. (오디오 스트림이 적은 크기를 가지고 있기 때문에,이 솔루션은 실제가 될 수 있습니다. 단 장애물은 속성 스트림이 될 것입니다. 안드로이드 멀티미디어 스택 지원 동적 재구성 내에서 오디오 OMX 구성 요소, 다음이 더 문제가 전혀 없어야합니다 경우)

Shash

+0

감사합니다 작동해야합니다 ... 일부 코드를 제공 할 수 있습니까? 도움이 될 것입니다 ^^ – Erenwoid

+0

또는 안드로이드에서 스트림이 어떻게 더 좋은지에 대한 조언을 받아 들일 것입니다. 내 방법이 좋은지 모르겠지만 ^^ 인터넷에서 찾지 못했습니다 ... 다시 한 번 감사드립니다. – Erenwoid

관련 문제