You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

页面加载时Wistia静态图片video_still_time属性被移除的解决求助

解决Wistia预定义缩略图时间参数被移除的问题

我尝试通过Wistia API设置预定义静态缩略图,但页面加载时,预定义的静态图时间属性?video_still_time=25被自动移除。

获取静态图片URL的代码

const videoEndpoint = `https://fast.wistia.com/embed/medias/${videoId}.json`

let videoStillUrl
            
$.ajax({
    async: false,
    url: videoEndpoint,
    success: function(data) {
       videoStillUrl = data.media.assets[6].url.replace("embed-ssl", "embed").replace(".bin", ".jpg") + '?video_still_time=25'
    }
});

console.log('VIDEO STILL URL: ' + videoStillUrl);

初始化代码

this.video.find('.media-video__embed-wrap').html(`
   <script src="//fast.wistia.com/embed/medias/${videoId}.jsonp" defer></script>
   <script src="//fast.wistia.com/assets/external/E-v1.js" defer></script>
   <div class="wistia_embed wistia_async_${videoId} playerColor=cf4917 autoPlay=false playButton=false"></div>
`);

$('.wistia_embed').addClass(`stillUrl=${videoStillUrl}`)

控制台日志显示生成的URL带有?video_still_time=25,但浏览器元素检查器中该参数被省略,请问该如何解决?


问题根源

你通过addClass添加stillUrl=${videoStillUrl}的方式存在错误:HTML类名不允许包含?、=等特殊字符,浏览器会自动截断或清理这些非法字符,导致参数丢失。

正确实现方式

方式1:初始化时直接写入class属性

不需要事后动态添加类,初始化播放器容器时直接把stillUrl参数写入class属性:

this.video.find('.media-video__embed-wrap').html(`
   <script src="//fast.wistia.com/embed/medias/${videoId}.jsonp" defer></script>
   <script src="//fast.wistia.com/assets/external/E-v1.js" defer></script>
   <div class="wistia_embed wistia_async_${videoId} playerColor=cf4917 autoPlay=false playButton=false stillUrl=${videoStillUrl}"></div>
`);

Wistia播放器初始化时会直接读取该参数,避免浏览器清理非法字符。

方式2:使用Wistia JavaScript API配置

推荐用官方API动态初始化播放器,彻底规避class属性的字符限制:

// 先注册播放器配置
window._wq = window._wq || [];
_wq.push({
  id: videoId,
  options: {
    playerColor: "cf4917",
    autoPlay: false,
    playButton: false,
    stillUrl: videoStillUrl // 直接传入带参数的完整URL
  }
});

// 插入播放器容器
this.video.find('.media-video__embed-wrap').html(`
   <div class="wistia_embed" id="wistia-${videoId}"></div>
`);

额外优化:替换同步AJAX为异步

当前代码使用async: false的同步AJAX会阻塞页面渲染,建议改为异步模式,确保拿到缩略图URL后再初始化播放器:

const videoEndpoint = `https://fast.wistia.com/embed/medias/${videoId}.json`

$.ajax({
    url: videoEndpoint,
    success: function(data) {
       const videoStillUrl = data.media.assets[6].url.replace("embed-ssl", "embed").replace(".bin", ".jpg") + '?video_still_time=25';
       // 拿到URL后再初始化播放器
       initWistiaPlayer(videoId, videoStillUrl);
    }
});

function initWistiaPlayer(videoId, stillUrl) {
  this.video.find('.media-video__embed-wrap').html(`
     <script src="//fast.wistia.com/embed/medias/${videoId}.jsonp" defer></script>
     <script src="//fast.wistia.com/assets/external/E-v1.js" defer></script>
     <div class="wistia_embed wistia_async_${videoId} playerColor=cf4917 autoPlay=false playButton=false stillUrl=${stillUrl}"></div>
  `);
}

内容的提问来源于stack exchange,提问作者Tanasos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:15:45