Видео js не работает с URL-адресом Dynami c, но работает с URL-адресом c - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь реализовать видео js в моем reactjs проекте. Я предоставляю "SR c" для видео компонента в качестве реквизита. Плауэр "Не найден совместимый источник для этого носителя." Ниже приведен мой код

initVideoJS = () => {
        let self = this;
        let that = this;
        const options = {
            fluid: true,
            preload: "auto",
            autoplay: false,
            controls: true,
            aspectRatio: "16:9",
            loop: false,
           // playVideo: false
        }

        myPlayer = videojs('video-el-p', options)
    }



render () {
        return (
            <section className="assets-container-right" id="assets-container-right">
                <div className="assets-container-wrapper">
                    <section className="video-container" id="video-container" style={{height: `${this.state.video_container_height}px`}}>
                        <div className="video-player">
                            <video onContextMenu="return false;"
                                   ref={node => this.video_el = node}
                                   className="video-js video-el vjs-big-play-centered vjs-default-skin"
                                   id="video-el-p" loop={false} controls>
                                <source src={this.props.assetVersion && this.props.assetVersion.video.file} type="video/mp4"/>
                                Your browser does not support HTML5 video.
                            </video>
                        </div>
                    </section>

Но тот же код работает, когда я даю url-видео stati c как sr c. Также

this.props.assetVersion.video.file

является действительным URL-адресом видео. Этот URL работает на обычном html5 видео компоненте. Что я делаю неправильно?

ps На другой странице приложения используется другой экземпляр js проигрывателя видео. Но это имеет другой идентификатор. Поэтому я не думаю, что это влияет на это.

Я реализовал видео js несколько раз, но впервые сталкиваюсь с этой проблемой. Заранее спасибо.

1 Ответ

1 голос
/ 08 января 2020

Я думаю, что проблема в том, что источник видео может быть неопределенным, поскольку вы используете условное <source src={this.props.assetVersion && this.props.assetVersion.video.file} type="video/mp4"/>

Возможно, попытайтесь визуализировать элемент видео только тогда, когда видео sr c не определено Это будет выглядеть примерно так.

render() {
    let video;
    if (this.props.assetVersion) {
        video = (
            <video onContextMenu="return false;"
                ref={node => this.video_el = node}
                className="video-js video-el vjs-big-play-centered vjs-default-skin"
                id="video-el-p" loop={false} controls>
                <source src={this.props.assetVersion.video.file} type="video/mp4" />
                Your browser does not support HTML5 video.
             </video>
        );
    }
    return (
        <section className="assets-container-right" id="assets-container-right">
            <div className="assets-container-wrapper">
                <section className="video-container" id="video-container" style={{ height: `${this.state.video_container_height}px` }}>
                    <div className="video-player">
                        {video}
                    </div>
                </section>
...