2017-09-18 8 views
0

나는 정말로 내 문제를 해결할 수있는 아무것도 검색하지 않고 검색하지 않았다.MP3 스트리밍은 오디오의 마지막 1-2 초를 자른다.

내 서버에 내 최종 사용자에게 제공해야하는 녹음 파일을 듣고 올바른지 확인하는 mp3 파일이 있습니다. 문제는 청취 할 때 브라우저 (Safari 및 Chrome 이상)가 기록의 마지막 1-2 초를 차단한다는 것입니다. (이는

  • 서버에서 파일을 직접 다운로드.

    물건은 이미 시도했습니다. 매우 도움이되지 않습니다, 그것은 제대로 을 재생한다. 검증

  • 브라우저 mp3 파일의 MIME 타입 file을 사용하여 파일 이름은
  • 내 서버 파일은 정확히 동일한 바이트이며 브라우저를 통해 파일을 다운로드 한 파일은 ( 인스턴스의 경우) 길이가 9 초이며, 하지만 내가 t에서 그것을 할 때 그는 브라우저 파일이 단지 7 초 길이임을 보여줍니다.
  • 운이없는 파일의 헤더가 있습니다.

    header("Content-Type: audio/mpeg; charset=binary"); 
    header("Content-Disposition: inline; filename=\"{$filename}\""); 
    header('Pragma: no-cache'); 
    header("Content-Length: ". filesize($file_path)); 
    readfile($file_path); 
    

나는 거의 내 브라우저로 데려 내 서버에있는 파일을 호출하는 일이 무엇인가에 대한 문제를 좁혀했습니다. 내가 시도한 것들은 실제로 도움이되지 못했다. 내 요구 사항 중 하나는 공개 디렉토리에서이 파일을 보호해야한다는 것입니다. 따라서 파일을 재생하려면 사용자가 인증을 받아야하므로 PHP를 통해 파일을 제공해야합니다. 어떤 생각이라도 대단히 감사하겠습니다.

도움이 될만한 몇 가지 버전이 있습니다.

CentOS 7.4.1708 
Apache 2.4.6 
PHP 5.6.30 
Chrome Version 60.0.3112.113 
Safari Version 10.1.2 (12603.3.8) 

업데이트

The data from the main wav file I'm receiving is the following 
Duration: 00:09 
Audio Channels: 1 
Sample Rate: 8,000 
Bits Per Sample: 16 
+1

녹음 할 때 사용하는 MP3 인코더는 무엇입니까? 엔코더가 잘못했을 가능성이 있습니까? ** constant ** bitrate를 사용하고 있습니까? 분석을 위해 짧은 파일 (9 초?)을 만들 수 있습니까?샘플 파일은 주변 소음 또는 비가 청 콘텐츠 일 수 있습니다. 우리는 지속 시간 문제와 바이트 내용을 비교하기를 원하기 때문에 ... –

+0

실제로 파일을 wav로받은 다음 ffmpeg를 사용하여 MP3로 변환합니다. 변환 할 때 다음 명령을 사용합니다 :'ffmpeg -i input.wav -vn -ac 2 -ar 8000 -ab 32k -f mp3 output.mp3' 변환 후 scp를 사용하여 서버에서 파일을 직접 다운로드하면, wav와 mp3는 완벽하게 일치합니다. 문제는 내 서버에서 파일을 제공하는 것과 브라우저에서 파일을받는 것 사이의 문제입니다. – n0nag0n

+0

@ n0nag0n 서버와 브라우저간에 문제가 발생한다고 생각합니까? 로컬 파일을 브라우저로 드래그하면 현재 가지고있는 문제가 재현 될 가능성이 큽니다. – Brad

답변

1

오디오 플레이어의 많은, 특히 MP3 주위에 매우 버그가 있습니다. 그들은 고정 크기 버퍼 같은 것을 사용할 것입니다. 또한 MP3를 사용하면 전체 파일을 디코딩하지 않고도 검색 지점을 정확하게 설정할 수 없다는 것을 알아야합니다. 파일 길이, 바이트 오프셋 및 추측에 관한 많은 해킹/트릭이 있지만 그게 전부입니다. 기본적으로 컨테이너 또는 비트 스트림 형식이없는 손실이 많은 인코딩 된 오디오로 시간이 올바른지 예상 할 수 없습니다. 나는 당신의 파일을 완벽하게 재생하는 것이 합리적이라고 생각합니다.

또한 특히 스테레오 오디오를 사용하는 경우 샘플 속도가 으로 매우 낮고으로 낮아야합니다.

어딘가에 8KB의 데이터가있을 것으로 예상되는 고정 크기 버퍼가 있으며 낮은 샘플 속도와 비트 전송률로 인해 그 중 일부가 발생합니다. 이것은 플레이어 버그 일 것이고, 버그 보고서를 작성하기에는 부족합니다. 직접 할 수있는 방법은 없습니다.

Opus? 훨씬 높은 품질을 얻을 수 있으며 호환이 가능합니다. 그렇게하지 못하면 PCM을 똑바로 사용하는 것을 고려하십시오.

+0

샘플링 속도가 느린 이유는 전화 통화에서 응답을 녹음하기 때문에 돌아 오는 wav 파일은 같은 비트율로만 제공됩니다. 나는 이미받은 것을 흉내 내고있다. 시도해 볼만한 아이디어, 다른 것으로 인코딩 해 볼 수 있습니다. – n0nag0n

+0

@ n0nag0n 오푸스는 목소리에 아주 좋습니다. 하지만 그래, 주어진 크기와 안돼, 난 그냥 일반 WAV 파일을 보내 겠어! – Brad

+0

그래, 그것은 139kb 대 31kb 파일 크기의 차이입니다. 그것을 얻기 위해 클라이언트 측에서 훨씬 덜 기다립니다. – n0nag0n