2013-05-17 13 views
7

Zaledwie dzień po opublikowaniu przez Google All Access dla Google Music, ale tablica adresów URL w odpowiedzi JSON dla przesyłanych strumieniowo mediów (nie jest własnością) zawiera adresy URL, które nie będą przesyłane strumieniowo. Czy ktoś się tym zajrzał? Grają przez ułamek sekundy, a następnie kończą.Android Google Music API - All Access

Odpowiedz

2

Szukałem do niego i choć nie znalazłem rozwiązanie wierzę to może być pomocne w ustaleniu, co należy zrobić:

Zauważ, że adresy mają param zasięgu, ale zauważ, że pierwszy jeden może być tak:

range=0-39706 

Ale następny będzie:

range=37615-119118 

co wydaje się dziwne, że następny odcinek rozpocznie się o wartości mniejszej niż gdzie pre zakończony segment vious. Domyślam się, że będziemy musieli napisać do pliku przy użyciu tego zakresu i odpowiednio dołączyć bajty, aby były one w porządku.

Ale to tylko moje przypuszczenie, nie próbowałem tego robić, ale pracuję nad tym.

UPDATE

I zostały pomyślnie zrealizowane powyżej, ale w C++ przy użyciu ramy Qt tak nie Android. Ale wydaje mi się, że w moim wdrożeniu jest jakiś problem, ponieważ każdy segment ma dziwny, piskliwy odgłos, więc być może będę musiał nieco zmienić pozycję bajtu, ale mogę teraz przejść całą piosenkę.

Nie dokładnie pewien, jak to przekłada się to Android, ale myślę, że będzie to coś jak:

File file = new File("tempFile"); 
file.open(WRITE_ONLY); 
file.write(startingByte, data); 

a jak pętli tylko analizować na bajt wyjścia dla każdego segmentu.

EDIT

Okazało się moim problemem było to, że zamykając plik po każdym segmencie. Jeśli pozostawiam plik otwarty, dopóki nie zakończę pisania wszystkich segmentów, utwór będzie idealnie odtwarzany.

+0

Jak sobie poradziłeś z zachodzącymi na siebie zakresami bajtów? Czy zwinąłeś pozycję bajtu dla każdego kolejnego pliku? W mojej pierwszej próbie zostawiłem strumień wyjściowy pliku otwarty, jak zauważyłeś, ale właśnie napisałem wszystkie bajty po kolei, ignorując nakładanie się i dostaję ten pisk. – Baron

+0

Rozumiem ... Tak, musisz cofnąć pozycję bajtową w końcowym pliku wyjściowym, dodając dane z każdej części, używając wartości początkowej zakresu podanej w adresie URL dla każdej części. – Baron