我有一个Next应用,我想在其中嵌入播放器。为此,我决定使用video.js库。一切正常,例如,YouTube视频。但是,Video.js播放器不播放Azure Media Service上托管的视频
我的玩家代码:
import { useCallback, useEffect, useState } from 'react';
import videojs from 'video.js';
import 'videojs-youtube';
import 'videojs-flash';
import 'videojs-vimeo';
const Player = (props) => {
const [videoEl, setVideoEl] = useState(null);
const onVideo = useCallback((el) => {
setVideoEl(el);
}, []);
useEffect(() => {
if (videoEl == null) return;
const player = videojs(videoEl, props);
console.log('quality', player.getVideoPlaybackQuality());
return () => {
player.dispose();
};
}, [props, videoEl]);
return (
<>
{/* wrap the player in a div with a `data-vjs-player` attribute
so videojs won't create additional wrapper in the DOM */}
<div data-vjs-player>
<video
ref={onVideo}
className="video-js"
style={{ width: '100%', height: '100%' }}
playsInline
/>
</div>
</>
);
};
export default Player;
视频的选项如下:
const videoJsOptions = {
techOrder: ['html', 'youtube', 'flash', 'other supported tech'],
autoplay: true,
controls: true,
usingNativeControls: true,
sources: [
{
src:
'https://my-video.streaming.media.azure.net/49a94f-122/manifest',
type: 'application/vnd.ms-sstr+xml'
}
]
};
在应用程序的头部,我注入了来自Azure文档的以下链接:
<link
href="//amp.azure.net/libs/amp/2.3.5/skins/amp-default/azuremediaplayer.min.css"
rel="stylesheet"
/>
<script src="//amp.azure.net/libs/amp/2.3.5/azuremediaplayer.min.js"></script>
我得到这个错误
VIDEOJS: ERROR: (CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) No compatible source was found for this media.
2条答案
按热度按时间kq0g1dla1#
不确定上面提到的具体问题,我认为您可能正在尝试使用平滑流“ms-sstr+xml”,这不会是Video.js上的最佳选择。
在我们刚刚发布的这个repo中,我们确实有一些示例,展示了如何将Video.js与AMS一起使用,同时还列出了已知的问题。https://github.com/Azure-Samples/media-services-3rdparty-player-samples
看一下那里,看看它是否对你的用例场景有帮助。欢迎你对这个repo的反馈,因为它是新的。如果你看到任何问题,请在github中添加。
baubqpgj2#
同样的问题,我无法使VideoJS与Azure Media直播一起工作
我尝试使用“application/x-mpegURL”,但播放器只是作为循环加载,流不会启动。