2017-04-17 11 views
6

Budowanie odtwarzacza MPEG-DASH w JavaScript. Mam jednak problem z zaimplementowaniem funkcji wyszukiwania i nie wydaje się, aby istniało wiele materiałów referencyjnych dotyczących sposobu obsługi tego programu z MSE i odpowiednim obiektem bufora źródłowego.Załaduj segmenty MPEG-DASH niesekwencyjnie w celu wyszukiwania

O ile mi wiadomo, pod warunkiem, że segmenty są poprawnie zakodowane (używam indywidualnych plików m4s za pośrednictwem segmentu SegmentTemplate, a nie bajtów), należy po prostu dodać segment dla pożądanego, dowolnego punktu (np. 10 sekundowy znacznik), a następnie ustaw parametr currentTime VideoElement również na znak. Wszystko to działa, mogę potwierdzić bufory segmentów bez błędu, a pierwsza klatka segmentu będzie nawet wizualnie ładować w ramach VideoElement. Jednak nie będzie on odtwarzany, a szorowanie nie jest możliwe. Bez błędów. Działa tylko tak, jakby oczekiwał na więcej danych.

Jest to naprawiane przez dodanie wszystkich poprzednich segmentów, aż do dowolnego punktu, ale to po prostu nie jest praktyczne. Na przykład dash.js tego nie robi (ale nie mogę dokładnie określić, co robi inaczej, aby umożliwić prawidłowe wyszukiwanie). Zgaduję, że muszę jakoś dynamicznie modyfikować pola sidx, mfhd i/lub tfdt, aby oszukać przeglądarkę, aby uwierzyła, że ​​ładuję segmenty sekwencyjnie - ale wydaje się to zbyt wysokie dla takiego standardu.

Ktoś wie, jak przeskoczyć do dowolnego punktu i kontynuować odtwarzanie, w przypadku podawania podzielonych segmentów MP4 do bufora źródłowego MSE?

Odpowiedz

0

Rozwiązany.

Okazuje się, że to będzie działać automatycznie, tak długo, jak:

A) I-ramki są ustawione prawidłowo. (Były, ale czasami trudno jest powiedzieć, w tym przypadku, czy błąd został wprowadzony z powodu kodowania lub implementacji.)

B) Segmenty są ładowane w punkcie wyszukiwania (i następnych). Tak więc, jeśli poszukujesz znaku 10s, ładowanie segmentu powinno rozpocząć się od znaku 10s i kontynuować dalej.

Co dziwne, kilka razy miałem już tę (dość oczywistą) konfigurację, ale nie udało się jej poprawnie odtworzyć lub wprowadzono pewną liczbę zakłóceń renderowania. O ile wiem, były one spowodowane niewielkim błędem implementacji w procedurach importowania/buforowania segmentów.

Powiązane problemy