首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在视频on上添加质量选择器选项

如何在视频on上添加质量选择器选项
EN

Stack Overflow用户
提问于 2021-06-13 09:50:46
回答 2查看 3.6K关注 0票数 6

下面是我的代码:我需要在使用视频is的网页中添加一个高质量的选择器。我不知道如何使用插件,没有任何插件的例子在反应。我插入插件的方式不起作用。请帮帮忙

Videojs

代码语言:javascript
运行
复制
<script src="https://vjs.zencdn.net/7.6.6/video.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
    <script src="https://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js"></script>
    <script src="https://cdn.streamroot.io/videojs-hlsjs-plugin/1/stable/videojs-hlsjs-plugin.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/videojs-overlay/1.1.4/videojs-overlay.min.js"></script>
    <link href="https://fonts.googleapis.com/css?family=Poppins&display=swap" rel="stylesheet">
    <script src="../dist/silvermine-videojs-chromecast.min.js<?php echo "?".$version; ?>"></script>


                <div class="col-sm-6">
                    <div class="video-player1">
                        <video autoplay id="example-video" class="video-js vjs-theme-fantasy custom-videojs" controls>
                        </video>
                        <script>
                            var options = {
                                html5: {
                                    hlsjsConfig: {
                                        // Put your hls.js config here
                                    }
                                },
                                controls: true,
                                techOrder: [ 'chromecast', 'html5' ], // You may have more Tech, such as Flash or HLS
                                plugins: {
                                    chromecast: {}
                                }
                            };

                            // setup beforeinitialize hook
                            videojs.Html5Hlsjs.addHook('beforeinitialize', (videojsPlayer, hlsjsInstance) => {
                                // here you can interact with hls.js instance and/or video.js playback is initialized
                            });

                            var player = videojs('example-video', options, function() {});

                            var overlay_content = '<div class="overlay_title"><div class="wrapper"><img src="images/nologo.jpg" align="middle" class="logoVideo" id="logovideo"> <div style="padding-left:10px"><h2 id="channeltitle" style="font-size: 22px;" ></h2><h4 id="descrtitle" style="font-size: 17px;"></h4></div></div><div id="progressp" class="progress-bar"><div id="progress_channel" class="progress"></div></div>';
                            player.overlay({
                                overlays: [{
                                    start: 'useractive',
                                    content: overlay_content,
                                    end: 'userinactive',
                                    align: 'bottom'
                                }]
                            });
                            function play(url) {
                                player.pause();
                                player.src({
                                    src: url,
                                    type: 'application/x-mpegURL'
                                });
                                player.load();
                                player.play();
                                // here you can interact with hls.js instance and/or video.js playback is initialized
                            }
                        </script>
EN

回答 2

Stack Overflow用户

发布于 2021-08-07 14:59:49

您可以尝试添加以下插件:https://github.com/silvermine/videojs-quality-selector

您应该将这些导入添加到顶部:

代码语言:javascript
运行
复制
<link href="https://unpkg.com/@silvermine/videojs-quality-selector/dist/css/quality-selector.css" rel="stylesheet">
<script src="./path/to/video.min.js"></script>
<script src="https://unpkg.com/@silvermine/videojs-quality-selector/dist/js/silvermine-videojs-quality-selector.min.js"></script>

然后您必须以这样的方式将控件添加到播放条中:

代码语言:javascript
运行
复制
player.controlBar.addChild('QualitySelector');
票数 2
EN

Stack Overflow用户

发布于 2022-10-04 11:19:43

下面的代码工作得很好:-

代码语言:javascript
运行
复制
import React, { useRef, useState, useEffect, Fragment } from "react";
import videojs from "video.js";
import _ from "videojs-contrib-quality-levels";
import qualitySelector from "videojs-hls-quality-selector";
import "video.js/dist/video-js.css";

// those imports are important

const VideoPlayerHLS = () => {
  const videoRef = useRef();
  const [player, setPlayer] = useState(undefined);
  const [callFinishVideoAPI, setCallFinishVideoAPI] = useState(false);
  const [vidDuration, setVidDuration] = useState(50000);
  const videoId = "e2280eeb-4cdb-43e7-a34f-36868326b8cb";
  const thumbnailURL =
    "https://vz-a2adf92d-b24.b-cdn.net/e2280eeb-4cdb-43e7-a34f-36868326b8cb/thumbnail.jpg";
  const liveURL =
    "https://vz-b4f1e97e-483.b-cdn.net/65c65840-de66-4c27-afd0-a3b5a904b768/playlist.m3u8";
  useEffect(() => {
    if (player) {
      player.src({
        src: liveURL,
        type: "application/x-mpegURL",
        withCredentials: false
      });
      player.poster("");
      setCallFinishVideoAPI(false);
      setVidDuration(50000);
    }
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, [videoId, liveURL, thumbnailURL]);

  useEffect(() => {
    if (callFinishVideoAPI) {
      //finishesVideo()
    }
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, [callFinishVideoAPI]);

  useEffect(() => {
    const videoJsOptions = {
      autoplay: false,
      preload: "auto",
      controls: true,
      poster: "",
      sources: [
        {
          src: liveURL,
          type: "application/x-mpegURL",
          withCredentials: false
        }
      ],
      html5: {
        nativeAudioTracks: true,
        nativeVideoTracks: true,
        nativeTextTracks: true
      }
    };

    const p = videojs(
      videoRef.current,
      videoJsOptions,
      function onPlayerReady() {
        // console.log('onPlayerReady');
      }
    );

    setPlayer(p);
    console.log(p.qualityLevels());

    return () => {
      if (player) player.dispose();
    };
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, []);

  useEffect(() => {
    if (player) {
      player.hlsQualitySelector({ displayCurrentQuality: true });
    }
  }, [player]);
  return (
    <div data-vjs-player>
      <video
        ref={videoRef}
        onLoadedMetadata={(e, px) => {
          // console.log(e.target.duration);
          setVidDuration(e.target.duration);
        }}
        onTimeUpdate={(e) => {
          if (e.target.currentTime >= vidDuration - 10) {
            setCallFinishVideoAPI(true);
          }
        }}
        className="vidPlayer video-js vjs-default-skin vjs-big-play-centered"
      ></video>
    </div>
  );
};

export default VideoPlayerHLS;

参考资料:-视频质量改变器

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67956926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档