我正在构建一个web应用程序,它涉及到各种视频内容的服务。网络友好的音频和视频编解码器是处理没有任何问题,但我有困难的视频文件的交付不兼容的HTML5视频播放器,如mkv容器或H265。
到目前为止,我所做的是使用ffmpeg对服务器上的视频文件进行代码转换,并使HLS主播和VOD播放列表,并在前端使用hls.js。然而,问题是,ffmpeg将播放列表视为一个实时流播放列表,直到对整个文件完成转码,然后将播放列表更改为VOD。因此,在转码结束之前,用户无法查找,如果用户决定在中途查找视频文件,则我的服务器对整个文件进行了不必要的转换。我使用以下ffmpeg命令行参数
ffmpeg -i sam
我的方案是通过ffmpeg从RTSP源中提取数据,将其发送到nginx-rtmp,并使用nginx提供hls回放。网上有相当多的教程和问答。我跟着这个:
然而,它不幸地失败了。为了简化理解,我想问一下核心问题:
谁负责创建m3u8播放列表文件?
我尝试分两个步骤进行实验:首先,尝试推送一个本地mp4文件并通过HLS回放它:
按照上述教程,我尝试使用ffmpeg将本地mp4文件推送到nginx,并使用视频it来播放它。浏览器报告了错误:
VIDEOJS: ERROR: (CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) No compatible source was f
我想在mounted()函数中部署一个m3u8格式的直播视频,使用:
if(Hls.isSupported()) {
let video = this.$refs.videoPrueba2;
let hls = new Hls();
hls.loadSource('./HLS/out.m3u8');
hls.attachMedia(video);
hls.on(Hls.Events.MANIFEST_PARSED, function () {
video.play();
});
}
但是,当页面加载时,播放器加载播