Ich folge this tutorial, um ein WebM zu streamen. Ich habe keine Probleme, die ffmpeg-Befehle ausführen, die Videos/Audio/Manifest-Dateien zu erzeugen, aber wenn ich versuche, es lokal zu laufen, gibt es kein Video oder Audio überhaupt und dashjs flutet die Konsole mit:dashjs kann das Initialisierungssegment in manifest.mpd nicht finden
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
Schreiben, das zu Konsole, bis ich den Server stoppe. Ich habe versucht, mit anderen mpd-Dateien wie this, die auf der dashjs quickstart verwendet wird und es spielt das Video ohne Probleme.
verwendete ich this guide die neueste Version von ffmpeg auf Ubuntu 14.04 LTS zu installieren:
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
Beim Laufen auf 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
Es erzeugt die folgende 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>
Die index.html hat ein paar Änderungen, weil dash.js die Art und Weise geändert hat, wie der Player initialisiert wird.
<!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>
Und hier ist Chromiums log file. Ich wandeln this webm von this site.
Wenn ich andere relevante Informationen verpasst habe oder wenn jemand mich in die richtige Richtung führen kann, lass es mich wissen.
Edit:
Wie Will Gesetz erwähnt, mit dem Shaka-Player ohne Probleme mit meinem aktuellen Manifest gearbeitet. Hoffe das hilft anderen.
Danke für Ihre Antwort @ Willensrecht. Ich hatte keine Ahnung von dem Zustand der Webm-Bibliothek im Projekt dash.js. Ich habe dem Shaka-Spieler keinen Versuch gegeben, aber ich werde es tun. Ich würde auch gerne zu der dash.web.js lib beitragen, aber da ich gerade in das Video-Streaming-Thema komme, würde es eine Weile dauern, alles zu verstehen, um meine Hände mit dem Code schmutzig zu machen. –