如何解决ffmpeg 或 MP4box 如何将视频转换为通用的可播放 Mpeg-DASH 或 HLS
将(从 webm、rtmp 等任何格式)编码为普遍可播放的 hls 或破折号格式的“好”方法是什么???
我看到很多关于 HLS 和 MPEG-DASH 的讨论,视频标签看起来像这样
<video width="90%" height="669" controls > <source src="index.m3u8" type="application/x-mpegURL" > </video>
但是 FFMPEG 中的好命令是什么?
当我这样做
ffmpeg -i file.webm -acodec aac -vcodec libx264 -movflags faststart -s 640x360 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls index.m3u8
它只能在 chrome 中播放 :(
但我需要它可以在 safari、firefox、opera 等中播放
我最近观看了有关 MP4Box 的讨论,能够将任何源转换为通用可播放流的最佳线路是什么?
解决方法
嗨,找到了一个经过测试且可以调整的工作代码
注意 1 ;输入可以是 https://www.....file.webm ;) webm 可以在 1 个服务器中生成,ffmpeg 可以在另一个服务器中 ;)
注意 2 ; (未经测试)但似乎 FFMPEG 也可以收听 IP cam ffmpeg -rtsp_flags listen -i rtsp://ownaddress/live.sdp
FFMPEG:
ffmpeg -re -v verbose -i "file.webm" -c:v libx264 -c:a aac -ac 1 -strict -2 -crf 18 -profile:v baseline -maxrate 1000k -bufsize 1835k -pix_fmt yuv420p -flags -global_header -hls_time 10 -hls_list_size 6 -hls_wrap 10 -start_number 1 'index.m3u8'
HLS 普遍可播放的 HTML ;) 感谢 hls.js https://github.com/video-dev/hls.js/
<html>
<head></head>
<body>
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<center><video width="90%" height="600" id="video" controls="" src="https://moctobpltc-i.akamaihd.net/hls/live/571329/eight/playlist.m3u" playsinline="true" ></video></center>
<script>
var video = document.getElementById("video");
var videoSrc = "https://moctobpltc-i.akamaihd.net/hls/live/571329/eight/playlist.m3u8";
if (video.canPlayType("application/vnd.apple.mpegurl")) {
video.src = videoSrc;
} else if (Hls.isSupported()) {
var hls = new Hls();
hls.loadSource(videoSrc);
hls.attachMedia(video);
}
</script>
</body>
</html>
*********** 它必须在 http 或最好是 https 内:因为本地测试不起作用
**** 另一个注意事项:视频标签中的 playsinline="true" 用于 IOS 和 WKWebview 以避免被迫只能全屏观看
这个 .m3u8 是一个实时的 akamai 播放列表...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。