I am following this tutorial to stream a WebM. I have no issues running the ffmpeg commands to generate the videos/audio/manifest files but when I try to run it locally, there's no video or audio at all and dashjs floods the console with:
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
Writing that to console until I stop the server. I have tried using other mpd files such as this, which is used on the dashjs quickstart and it plays the video without any problems.
I used this guide to install the latest version of ffmpeg on 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
When running on 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
It generates the following 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>
The index.html has a few changes because dash.js changed the way the player gets initialized.
<!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>
And here is Chromium's log file. I'm converting this webm from this site.
If I missed out any other relevant information or if anyone can guide me into the right direction, please let me know.
Edit:
Like Will Law mentioned, using the Shaka Player worked without any issues with my current manifest. Hope this helps anyone else.