Media Source Api non funziona per un file webm personalizzato (Chrome versione 23.0.1271.97 m)

Mi riferisco a una fonte multimediale api demo fornita su questo link

Sta funzionando bene per il dato file webm di test, ma quando ho provato a cambiare il nome del file in un file webm personalizzato il codice ha smesso di funzionare.

Sta generando il seguente errore: Uncaught Error: INVALID_STATE_ERR: DOM Exception 11 al seguente codice: sourceBuffer.append(new Uint8Array(e.target.result));

Per verificare se il file webm personalizzato sta funzionando ho creato una pagina di test in cui ho definito un tag video che ha l’origine di quel file webm personalizzato. Quando ho eseguito il codice funziona correttamente.

Non riesco a capire la ragione di questo strano comportamento.

Il problema più probabile è che il tuo file WebM abbia Cluster che non iniziano con un keyframe.

Nelle versioni di sviluppo di Chrome-Chrome (ad es. Chrome 25 o versioni successive), puoi verificarlo con i seguenti passaggi.

  1. Apri chrome: media-interni in un’altra scheda.
  2. Tornare alla scheda con la pagina di prova e ricaricarla.
  3. Quando l’errore si ripresenta, torna alla scheda chrome: media-internals e cerca la voce in basso sotto l’intestazione “Lettori multimediali attivi:”. Dovrebbe avere lo stesso blob: URL che hai passato all’attributo src dell’elemento video.
  4. Fare clic sul blob: URL per espandere i dati del giocatore.
  5. Fare clic sulla voce “Registro:” per esporre i dati di registrazione del lettore.
  6. Cerca le voci che hanno “MEDIA_SOURCE_ERROR” nella colonna “Evento:”. Queste voci dovrebbero fornire informazioni su ciò che non va con il contenuto passato al browser.

Se vedi un messaggio che dice qualcosa come “Il segmento dei media non inizia con il fotogramma chiave”. quindi significa che il tuo file ha Cluster che non iniziano con un keyframe. Questo è comune con il contenuto generato da FFmpeg. Puoi correggere il tuo file in uno dei seguenti modi:

  1. Esegui il programma sample_muxer menzionato nella sezione 2.2.5 della guida allo streaming adattativo WebM
  2. Esegui il programma mse_webm_remuxer che ho scritto come parte del mio progetto mse-tools .

AGGIORNAMENTO: nessun errore interno mostrato nel mio caso (la risposta accettata suggerisce di verificare) ma sempre lo stesso problema

Ho incontrato lo stesso problema quando ho provato a riprodurre il file .webm registrato da MediaRecorder API usando Media Source Extensions (MSE). Le registrazioni di Chrome (51) non sono corrette, Firefox (46) sembra OK.

Per farlo funzionare devi correggere i segnali nel file .webm:

  1. clone https://github.com/webmproject/libwebm
  2. assicurati di avere la versione cmake> = 3.2 ( https://askubuntu.com/questions/610291/how-to-install-cmake-3-2-on-ubuntu-14-04 )
  3. cmake .
  4. make
  5. ./sample_muxer -i original.webm -o fixed.webm
  6. carica fixed.webm in DASH / il tuo giocatore!

Spero che abbia aiutato qualcuno. È stato abbastanza difficile trovare informazioni su Google senza la parola chiave DASH (non sto utilizzando DASH, solo la stessa tecnologia di base – MSE) 🙂