8
votes

Support MP3 sur Firefox MediaSourceExtension

Je cherche à mettre en œuvre la diffusion audio adaptative et progressive dans le navigateur, sans plug-ins. MSE est l'API HTML5 que j'attendais, disponible dans FF 42, mais il semble que le support au format audio dans Firefox ne soit pas là? ... Le audio MP3 ne fonctionne pas lorsque vous utilisez l'API MSE.

Voici un code de code: P>

var mediaSource = new window.MediaSource();
var audioSourceBuffer;

mediaSource.addEventListener('sourceopen', function (e) {
    try {
        var mimeType = "audio/mpeg";
        audioSourceBuffer = mediaSource.addSourceBuffer(mimeType);
    } catch (e) {
        log('Exception calling addSourceBuffer', e);
        return;
    }
}


0 commentaires

3 Réponses :


0
votes

J'utilise FF42 sur Linux et, contrairement à ce que je croirais lire le Documentation sur MDN , l'API MediaSource n'est pas activée par défaut.

Avez-vous essayé d'entrer à propos de: config et modifier les paramètres traitant des codecs pris en charge par l'API MediaSource? J'ai des commutateurs pour MP4 et WebM. Pas sûr que cela aiderait pour mp3, mais cela vaut peut-être la peine d'essayer.


6 commentaires

Il semble donc que MSE soit activé par défaut de FF 42 et prend en charge MP4 et WebM. Voir Firefox à propos de: config et filtre par MediaSource. Cependant, j'ai essayé avec MIMETYPE = "AUDIO / MP4" et que je ne reçois pas une notaupportedexception (comme je l'ai eu avec MIMETYLE = "AUDIO / MPEG") - toujours Firefox ne joue pas même lorsque je le nourrissez de fichiers M4A (AUDIO MP4 ). Des pensées?


Juste pour être sûr, si vous tapez le chemin complet du fichier M4A dans le champ URL, FF joue-t-il le son?


Après la mise à jour de Firefox 43 sur Linux, l'API MediaSource est désormais activée par défaut. Cependant, j'ai la même erreur que la vôtre, avec MIMETYPE = "AUDIO / MPEG" ou "AUDIO / MP3". Thing drôle, c'est que je puisse toujours lire directement le MP3 lorsque je tape l'URL dans l'URLBAR.


Même erreur avec un fichier OGG. Donc, le problème n'est pas due à des restrictions de licence. C'est peut-être la syntaxe de Mimetype qui a tort.


Les deux types de deux médias pris en charge pour les médias Source sur Firefox sont MP4 (par défaut) et WebM (OFF par défaut).


BTW - Le type MIME pour MP4 sur Firefox est le suivant: "Audio / MP4" et pour la plupart du FMP4 (fragmenté MP4), le codec est "MP4A.40.2" qui rendra la chaîne de type MIME globale introduite dans l'objet MediaSource "Audio / MP4; codecs = "mp4a.40.2" ".



9
votes

OK, j'ai donc été capable de le comprendre avec l'aide aimable des ingénieurs Mozilla travaillant sur une extension de source multimédia.

La première chose clé à noter sur MSE (EXTENSION SOURCE Media) est qu'elle ne prend pas nécessairement en charge tous les formats multimédia pris en charge par l'élément audio du navigateur. Pour illustrer cela, bien que Firefox joue au fichier MP3 lorsqu'il soit dirigé directement sur le navigateur ou directement à un élément audio, il sera pas jouer au même fichier MP3 si vous le nourrissez dans un tampon de source multimédia.

Maintenant, quel format multimédia est effectivement pris en charge par Firefox 'Mse Mise en œuvre? La réponse est que, à partir de Firefox 42, seul FMP4 (fragmenté MP4) est pris en charge par défaut. Webm est également pris en charge, mais pas par défaut et vos utilisateurs devront l'activer manuellement via Firefox 'à propos de: configuration. Le mimeType FMP4 pour alimenter l'objet source de support lors de la création d'un nouveau tampon est: Audio / MP4; codecs = "mp4a.40.2"

Et si vous vous demandez ce que le diable est FMP4, il s'agit d'une norme qui fait partie de la norme MPEG-4, plus spécifiquement de la partie 12: "Format de fichier de support de base ISO (ISOBMFF) à l'aide de l'audio / vidéo non multiplexé. ". Regardez-le si vous êtes intéressé par plus de détails.

de mon expérience FMP4 est pris en charge sur tous les grands navigateurs et systèmes d'exploitation - ce qui rend FMP4 un bon format candidat au streaming adaptatif et progressif.

hth!


2 commentaires

Si vous avez la mémoire tampon entière, vous pouvez définir la source de votre élément audio sur une URL BLOB: player.src = url.createobjecturl (nouveau blob ([tampon], {type: 'Audio / mpeg'}))


Avez-vous été capable de mettre en œuvre cela avec FMP4? J'ai du mal à me mettre la tête autour de ce format. Voir Stackoverflow.com/Questtions/64433422/...



0
votes

J'ai écrit quelque chose à encapsuler mp3 à l'intérieur d'un MP4 à la volée en JavaScript, spécialement pour obtenir cette chose même de travailler dans Firefox. Je n'en avais qu'un seul flux de 128 kbps. Cela ne fonctionne donc que pour ce débit spécifique, sans art de l'album. Au cas où quelqu'un d'autre pourrait trouver cela utile: https://gist.github.com/fanfare/0fa525AF28B275FD6623942D7E9D70DD42/ a>


0 commentaires