2016-04-29 7 views
2

Je suis this tutorial pour diffuser un WebM. Je n'ai pas les problèmes en cours d'exécution ffmpeg commandes pour générer les vidéos/audio/fichiers manifestes, mais lorsque je tente de l'exécuter localement, là du tout et dashjs n'y a pas de vidéo ou audio inonde la console avec:dashjs ne peut pas trouver le segment d'initialisation sur manifest.mpd

Searching for initialization.  
Start searching for initialization.  
Perform init search: http://localhost:8080/video_1280x720_500k.webm  
Perform SIDX load: http://localhost:8080/video_640x360_750k.webm  
Perform SIDX load: http://localhost:8080/video_1280x720_500k.webm 

Une écriture à console jusqu'à ce que j'arrête le serveur. J'ai essayé d'utiliser d'autres fichiers mpd tels que this, qui est utilisé sur le dashjs quickstart et il lit la vidéo sans aucun problème.

J'utilisé this guide installer la dernière version de ffmpeg sur Ubuntu 14.04 LTS:

ffmpeg version N-79688-g3cb3ddd Copyright (c) 2000-2016 the FFmpeg developers 
built with gcc 5.3.0 (Ubuntu 5.3.0-3ubuntu1~14.04) 20151204 
configuration: --prefix=/home/ab/cpp/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/ab/cpp/ffmpeg_build/include --extra-ldflags=-L/home/ab/cpp/ffmpeg/lib --bindir=/home/ab/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree 
libavutil  55. 23.100/55. 23.100 
libavcodec  57. 38.100/57. 38.100 
libavformat 57. 34.103/57. 34.103 
libavdevice 57. 0.101/57. 0.101 
libavfilter  6. 44.100/6. 44.100 
libswscale  4. 1.100/4. 1.100 
libswresample 2. 0.101/2. 0.101 
libpostproc 54. 0.100/54. 0.100 

Lors de l'exécution sur ffmpeg:

ffmpeg \ 
-f webm_dash_manifest -i video_160x90_250k.webm \ 
-f webm_dash_manifest -i video_320x180_500k.webm \ 
-f webm_dash_manifest -i video_640x360_750k.webm \ 
-f webm_dash_manifest -i video_640x360_1000k.webm \ 
-f webm_dash_manifest -i video_1280x720_500k.webm \ 
-f webm_dash_manifest -i audio_128k.webm \ 
-c copy -map 0 -map 1 -map 2 -map 3 -map 4 -map 5 \ 
-f webm_dash_manifest \ 
-adaptation_sets "id=0,streams=0,1,2,3,4 id=1,streams=5" \ 
manifest.mpd 

Il génère les éléments suivants manifest.mpd:

<?xml version="1.0" encoding="UTF-8"?> 
<MPD 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="urn:mpeg:DASH:schema:MPD:2011" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011" type="static" mediaPresentationDuration="PT117.726S" minBufferTime="PT1S" profiles="urn:webm:dash:profile:webm-on-demand:2012"> 
    <Period id="0" start="PT0S" duration="PT117.726S"> 
    <AdaptationSet id="0" mimeType="video/webm" codecs="vp9" lang="eng" bitstreamSwitching="true" subsegmentAlignment="true" subsegmentStartsWithSAP="1"> 
     <Representation id="0" bandwidth="198155" width="160" height="90"> 
     <BaseURL>video_160x90_250k.webm</BaseURL> 
     <SegmentBase indexRange="2007834-2008211"> 
      <Initialization range="0-437" /> 
     </SegmentBase> 
     </Representation> 
     <Representation id="1" bandwidth="459264" width="320" height="180"> 
     <BaseURL>video_320x180_500k.webm</BaseURL> 
     <SegmentBase indexRange="4459996-4460374"> 
      <Initialization range="0-439" /> 
     </SegmentBase> 
     </Representation> 
     <Representation id="2" bandwidth="718495" width="640" height="360"> 
     <BaseURL>video_640x360_750k.webm</BaseURL> 
     <SegmentBase indexRange="6614036-6614414"> 
      <Initialization range="0-441" /> 
     </SegmentBase> 
     </Representation> 
     <Representation id="3" bandwidth="931445" width="640" height="360"> 
     <BaseURL>video_640x360_1000k.webm</BaseURL> 
     <SegmentBase indexRange="8309082-8309460"> 
      <Initialization range="0-441" /> 
     </SegmentBase> 
     </Representation> 
     <Representation id="4" bandwidth="821274" width="1280" height="720"> 
     <BaseURL>video_1280x720_500k.webm</BaseURL> 
     <SegmentBase indexRange="8728812-8729190"> 
      <Initialization range="0-441" /> 
     </SegmentBase> 
     </Representation> 
    </AdaptationSet> 
    <AdaptationSet id="1" mimeType="audio/webm" codecs="vorbis" lang="eng" audioSamplingRate="44100" bitstreamSwitching="true" subsegmentAlignment="true" subsegmentStartsWithSAP="1"> 
     <Representation id="5" bandwidth="107104"> 
     <BaseURL>audio_128k.webm</BaseURL> 
     <SegmentBase indexRange="1538710-1539184"> 
      <Initialization range="0-4112" /> 
     </SegmentBase> 
     </Representation> 
    </AdaptationSet> 
    </Period> 
</MPD> 

Le index.html a quelques modifications car dash.js a changé la façon dont le lecteur est initialisé.

<!doctype html> 
<html> 
    <head> 
     <title>Video Streaming</title> 
     <style> 
      video { 
       width: 640px; 
       height: 360px; 
      } 
     </style> 
     <script src="http://cdn.dashjs.org/latest/dash.all.debug.js"></script> 
    </head> 
    <body> 
     <div> 
      <video data-dashjs-player src="manifest.mpd" controls></video> 
     </div> 
    </body> 
</html> 

Et voici le log file de Chromium. Je convertis this webm de this site.

Si j'ai manqué toute autre information pertinente ou si quelqu'un peut me guider dans la bonne direction, s'il vous plaît faites le moi savoir.

Edit:

LIKE loi mentionné, en utilisant le lecteur Shaka a travaillé sans aucun problème avec mon manifeste actuel. J'espère que cela aide quelqu'un d'autre.

Répondre

3

@Abelardo - cet article a été écrit contre les versions 1.x du lecteur dash.js. Avec les versions 2.x, la page incorporée et dans les instructions d'initialisation ont changé (comme vous l'avez souligné). De plus, la bibliothèque dash.webm.min.js n'a pas été mise à jour depuis 2.x. La plupart des participants au projet dash.js se sont concentrés sur AVC avec ISOBMFF. Bien que nous aimerions que dash.webm.min.js soit mis à jour et maintenu, ce n'est pas le cas et je ne voudrais pas que vous vous cogniez la tête en espérant que cela fonctionne. Je m'attendrais à ce que le joueur de Shaka, étant une initiative de Google, soit à jour en ce qui concerne WebM - est-ce que cela fonctionne pour vous? Si vous voulez vous mettre au courant des mauvaises herbes et apporter dash.webm.min à jour, ce serait bon pour la communauté.

+1

Merci pour votre réponse @ loi-loi. Je n'avais aucune idée de l'état de la bibliothèque webm sur le projet dash.js. Je n'ai pas essayé le joueur de Shaka mais je le ferai. J'adorerais aussi contribuer à la librairie dash.web.js, mais comme je viens d'entrer dans le sujet du streaming vidéo, il me faudrait un peu de temps pour tout comprendre pour me salir les mains avec le code. –