FFMPEG Mpeg-DASH 我们需要哪些属性选项和标志才能使 H264 可播放 .mpd 普遍可播放
FFMPEG Mpeg-DASH what attributes options and flags do we need to make H264 playable .mpd universally playable
我想使用 h264 编解码器从任何来源编码为可普遍播放的 .mpd。
这是我的命令
/usr/bin/ffmpeg -re -i 1.webm -c:v libx264 -preset ultrafast
-tune zerolatency -c:a aac -ac 2 -strict -2 -crf 18 -profile:v baseline
-maxrate 1000k -pix_fmt yuv420p -flags -global_header -streaming 1
-use_template 1 -use_timeline 0 -seg_duration 2 -remove_at_exit 1
-f dash index.mpd
但是 dash.js 日志显示
dash.js videoCodec (video/mp4;codecs="avc1") is not supported.
**额外注意:当使用 -c:v libx264 并在 HLS .m3u8 中输出时 --> 它在所有浏览器中都有效
HTML 与 dash.js
<script src="http://cdn.dashjs.org/latest/dash.all.min.js"></script>
<center><video width="90%" height="600" id="videoPlayer" controls=""
src="" playsinline="true" preload="metadata" ></video></center>
<script>
(function(){
var url = "https://www.---domain--path-to.mpd";
var player = dashjs.MediaPlayer().create();
player.initialize(document.querySelector("#videoPlayer"), url, true);
player.updateSettings({
streaming: {
lowLatencyEnabled: true,
liveDelay: 4,
liveCatchup: {
minDrift: 0.02,
maxDrift: 0,
playbackRate: 0.5,
latencyThreshold: 60
}
}
});
})();
video = document.getElementById("videoPlayer");
video.addEventListener("loadedmetadata", function(){ video.muted = true; video.play(); }, false);
</script>
我有“-c:v libx264”,但为什么 dash.js 看到 avc1...我知道 h264 有 avc1,但如何解决这个问题。是修复 ffmpeg 命令还是更改 javascript
中的 player.initialize
video/mp4;codecs="avc1"
不是有效的编解码器字符串 - 它缺少 SourceBuffer 对此比特流类型所需的配置文件、约束和级别。
这是因为您设置了 -flags -global_header
。这导致编解码器额外数据被取消设置,这反过来意味着 ffmpeg DASH 清单生成器无法生成正确的编解码器字符串。
删除 -flags -global_header
它应该可以正常工作。
我想使用 h264 编解码器从任何来源编码为可普遍播放的 .mpd。
这是我的命令
/usr/bin/ffmpeg -re -i 1.webm -c:v libx264 -preset ultrafast
-tune zerolatency -c:a aac -ac 2 -strict -2 -crf 18 -profile:v baseline
-maxrate 1000k -pix_fmt yuv420p -flags -global_header -streaming 1
-use_template 1 -use_timeline 0 -seg_duration 2 -remove_at_exit 1
-f dash index.mpd
但是 dash.js 日志显示
dash.js videoCodec (video/mp4;codecs="avc1") is not supported.
**额外注意:当使用 -c:v libx264 并在 HLS .m3u8 中输出时 --> 它在所有浏览器中都有效
HTML 与 dash.js
<script src="http://cdn.dashjs.org/latest/dash.all.min.js"></script>
<center><video width="90%" height="600" id="videoPlayer" controls=""
src="" playsinline="true" preload="metadata" ></video></center>
<script>
(function(){
var url = "https://www.---domain--path-to.mpd";
var player = dashjs.MediaPlayer().create();
player.initialize(document.querySelector("#videoPlayer"), url, true);
player.updateSettings({
streaming: {
lowLatencyEnabled: true,
liveDelay: 4,
liveCatchup: {
minDrift: 0.02,
maxDrift: 0,
playbackRate: 0.5,
latencyThreshold: 60
}
}
});
})();
video = document.getElementById("videoPlayer");
video.addEventListener("loadedmetadata", function(){ video.muted = true; video.play(); }, false);
</script>
我有“-c:v libx264”,但为什么 dash.js 看到 avc1...我知道 h264 有 avc1,但如何解决这个问题。是修复 ffmpeg 命令还是更改 javascript
中的player.initialize
video/mp4;codecs="avc1"
不是有效的编解码器字符串 - 它缺少 SourceBuffer 对此比特流类型所需的配置文件、约束和级别。
这是因为您设置了 -flags -global_header
。这导致编解码器额外数据被取消设置,这反过来意味着 ffmpeg DASH 清单生成器无法生成正确的编解码器字符串。
删除 -flags -global_header
它应该可以正常工作。