2012-05-18 4 views
2

SoundCloud API를 사용하여 아티스트 트랙을 스트리밍하는 웹 응용 프로그램을 만들고 있습니다. 나는 파형 PNG 이미지 (예를 들어 http://w1.sndcdn.com/fxguEjG4ax6B_m.png)를 얻을 수있는 방법을 알고 있지만 실제로는 일종의 웨이브 데이터가 필요하다. (노래가 높으면 낮을 때가 언제인가?).원시 SoundCloud API 파형 데이터를 검색하거나 가져 오는 방법이 있습니까?

내 웹 호스팅에서 허용하지 않기 때문에 LAME 등과 같은 오디오 라이브러리에 액세스 할 수 없습니다. 가능합니다

  1. 어떤 식 으로든이 데이터를 SoundCloud API에서 직접 가져옵니다.
  2. PHP 또는 JavaScript로 파형 PNG 이미지를 처리하여 필요한 데이터를 검색 하시겠습니까? (그리고 이런 종류의 처리에 사용할 수있는 일종의 라이브러리가 있습니까?)

답변

4

파형 PNG 이미지를 구문 분석하여 포인트 배열로 변환 할 수 있습니다. 이미지는 수직 대칭이며 피크를 찾기 위해 알파 값을 검사하여 이미지의 위쪽에서 얼마나 많은 불투명 픽셀이 있는지 계산하면됩니다. 이것이 파형이 widgetNext SoundCloud에 렌더링되는 방법입니다.

PHP에서는 ImageMagick 또는 GD Graphics Library을 사용하여이 값을 읽을 수 있으며 자바 스크립트에서는 캔바스 객체에 이미지를 놓은 다음 이미지 데이터를 검사하여이 값을 읽을 수 있습니다. 나는 이것들의 세부 사항에 너무 많이 가지 않을 것이다. 그러나 만일 당신이 붙이면 확실히 다른 질문을 할 수있다.

-1

죄송합니다.하지만 그런 종류의 API에는 API가 없습니다. 사운드 클 라우드에서 업로드시 파형이 생성되고 데이터가 버려집니다.

0

낡은 스레드를 부딪쳐서 미안합니다.이 게시물을 통해 비슷한 것을 찾고 넘어 질 수도 있습니다.이 링크 당 이제 가능합니다 : Waveforms, Let's Talk About Them.

이 스레드가 발행 된 직후에 발행되었으므로 이전 버전에도 적용됩니다.

6

Soundcloud에서 부동 소수점을 제공하기 시작했지만 아직 공식화되지 않았습니다. 그냥 약간의 트릭, 당신은 당신의 PNG 때 :

https://w1.sndcdn.com/XwA2iPEIVF8z_m.png 

"JSON"에 의해 "PNG" "을 지혜"와에 의해 변경 "W1"

https://wis.sndcdn.com/XwA2iPEIVF8z_m.json 

을 그리고 당신은 그것을 얻습니다!

1

SoundCloud API 요청에서 직접 원 웨이브 폼 데이터를 가져 오는 공식적인 방법은 없지만이를 사용하여 PHP에서 비공식 엔드 포인트 (일명 : https://wis.sndcdn.com/XwA2iPEIVF8z_m.json 등)의 정확한 데이터를 파생시키는 방법이 있습니다. 이 같은 코드. 그 https://wis.sndcdn.com/ URL이 유용하지만

$source_width = 1800; 
$source_height = 140; 
$image_file = 'https://w1.sndcdn.com/XwA2iPEIVF8z_m.png'; 
$image_processed = imagecreatefrompng($image_file); 
imagealphablending($image_processed, true); 
imagesavealpha($image_processed, true); 

$waveform_data = array(); 

for ($width = 0; $width < $source_width; $width++) { 

    for ($height = 0; $height < $source_height; $height++) { 

    $color_index = @imagecolorat($image_processed, $width, $height); 

    // Determine the colors—and alpha—of the pixels like this. 
    $rgb_array = imagecolorsforindex($image_processed, $color_index); 

    // Peak detection is based on matching a transparent PNG value. 
    $match_color_index = array(0, 0, 0, 127); 
    $diff_value = array_diff($match_color_index, array_values($rgb_array)); 
    if (empty($diff_value)) { 
     break; 
    } 

    } // $height loop. 

    // Value is based on the delta between the actual height versus detected height. 
    $waveform_data[] = $source_height - $height; 

} // $width loop. 

// Dump the waveform data array to check the values. 
echo '<pre>'; 
print_r($waveform_data); 
echo '</pre>'; 

이 방법의 장점은, 어떤 이야기가 없습니다 : 단순히 당신이 있고 당신이 가고 좋은 280 높은 PNG 이미지 너비 어떤 사운드 클라우드 1800에 맞게 $image_file의 값을 변경 SoundCloud가 데이터 구조를 변경하는 경우/때.공식 파형에서 데이터를 파생하는 것은 PNG 이미지를 SoundCloud API 최종 사용자에게 공평한 경고없이 변경하려는 것이기 때문에 장기간 안정성을 제공합니다.

또한 $source_width은 1800이지만은 140입니다. SoundCloud PNG 파일의 높이가 280 픽셀 인 반면, 아래쪽 절반은 기본적으로 뒤집기/뒤집힌 복사본입니다. 0에서 150까지의 값을 측정하면 필요한 파형 데이터 값을 얻을 수 있습니다.

관련 문제