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.
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. –