Erreur d'élément vidéo: MEDIA_ERR_SRC_NOT_SUPPORTED

J'essaie de jouer un fichier mpd de tirelire avec dash.js.J'ai utilisé un didacticiel axinom pour des conseils qui ont suggéré la commande ci-dessous pour générer le fichier mpd.

mkdir dash_unprotected MP4Box -dash 4000 -rap -frag-rap -sample-groups-traf -profile dashavc264:live -bs-switching no -segment-name dash_$RepresentationID$_$Number$ -url-template video-700k.mp4 video-1000k.mp4 video-1500k.mp4 video-2000k.mp4 audio.mp4 -out "dash_unprotected/manifest.mpd" 

Le fichier mpd résultant

  <?xml version="1.0"?> <!-- MPD file Generated with GPAC version 0.5.1-DEV-rev5619 on 2017-06-29T06:08:26Z--> <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H1M55.01S" profiles="urn:mpeg:dash:profile:isoff-live:2011, http://dashif.org/guildelines/dash264"> <ProgramInformation moreInformationURL="http://gpac.sourceforge.net"> <Title>dash_unprotected/manifest.mpd generated by GPAC</Title> </ProgramInformation> <Period duration="PT0H1M55.01S"> <AdaptationSet segmentAlignment="true" maxWidth="316" maxHeight="576" maxFrameRate="30" par="316:576" lang="und"> <SegmentTemplate timescale="15360" media="dash_dash_unprotected$$Number$.m4s" startNumber="1" duration="49009" initialization="dash_dash_unprotected$init.mp4"/> <Representation id="1" mimeType="video/mp4" codecs="avc1.64002a" width="158" height="288" frameRate="30" sar="396:395" startWithSAP="1" bandwidth="699969"> </Representation> <Representation id="2" mimeType="video/mp4" codecs="avc1.64002a" width="198" height="360" frameRate="30" sar="1:1" startWithSAP="1" bandwidth="996926"> </Representation> <Representation id="3" mimeType="video/mp4" codecs="avc1.64002a" width="264" height="480" frameRate="30" sar="1:1" startWithSAP="1" bandwidth="1496279"> </Representation> <Representation id="4" mimeType="video/mp4" codecs="avc1.64002a" width="316" height="576" frameRate="30" sar="396:395" startWithSAP="1" bandwidth="1993448"> </Representation> </AdaptationSet> <AdaptationSet segmentAlignment="true" lang="und"> <SegmentTemplate timescale="44100" media="dash_dash_unprotected$$Number$.m4s" startNumber="1" duration="174856" initialization="dash_dash_unprotected$init.mp4"/> <Representation id="5" mimeType="audio/mp4" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="97798"> <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/> </Representation> </AdaptationSet> </Period> </MPD> 

J'essaie ensuite de le jouer dans dash.js en utilisant le code JavaScript ci-dessous

  var url = "drm/dash_unprotected/manifest.mpd"; var player = dashjs.MediaPlayer().create(); $(function() { player.initialize(document.querySelector("#videoPlayer"),null, true); player.attachVideoContainer(document.getElementById("videoContainer")); $('#playButton').click(function() { player.attachSource(url); }); }); 

Mais dash.js lance une erreur

 [42585] Video Element Error: MEDIA_ERR_SRC_NOT_SUPPORTED (CHUNK_DEMUXER_ERROR_APPEND_FAILED: audio object type 0x40 does not match what is specified in the mimetype.) dash.all.debug.js:14793 [42586] [object MediaError] dash.all.debug.js:14793 [42588] Schedule controller stopping for video dash.all.debug.js:14793 [42589] Schedule controller stopping for audio dash.all.debug.js:14793 [42591] Caught pending play exception - continuing (NotSupportedError: Failed to load because no supported source was found.) 

Comment puis-je résoudre cette erreur? Je suis nouveau chez dash.js et mpeg-dash

J'ai pu résoudre l'erreur en supprimant simplement l'option -segment-name et sa valeur. Donc, ma commande ressemble à ça

  mkdir dash_unprotected MP4Box -dash 4000 -rap -frag-rap -sample-groups-traf -profile dashavc264:live -bs-switching no -url-template video-700k.mp4 video-1000k.mp4 video-1500k.mp4 video-2000k.mp4 audio.mp4 -out "dash_unprotected/manifest.mpd" 

-segment-name option -segment-name été de faire écraser mes segments. P.ex. segments vidéo à écraser par des segments audio. L'écrasement se produisait parce que les segments vidéo et audio recevaient les mêmes noms même si j'utilise des valeurs uniques dans l'option -segment-name .

-segment-name $RepresentationID$$ ou -segment-name $Time$$

En éliminant cette option, MP4Box utilise la valeur par défaut %s_dash pour -segment-name . Ainsi, les segments audio seront nommés comme ceci

  audio_dash1.m4s 

Et des segments vidéo comme celui-ci

  `video_dash1.m4s`