页面能打开,视频却一直转圈,或者直接弹出报错,这种情况在阿里云上很常见。无论视频放在OSS里,还是通过CDN分发,多数站长和开发者都遇到过。阿里云打不开视频的原因往往分散在域名、存储权限、CDN、编码格式和网络环境几个地方。按一条线索顺着查,大部分问题都能较快定位。

先判断是普遍问题还是个别问题
动手之前,先看问题的范围。范围一缩小,排查方向基本就定了。
- 所有设备、所有网络都放不了:多半是源站或CDN配置出了问题。
- 只有部分地区打不开:更可能和CDN节点、运营商线路或域名备案有关。
- 只有某个浏览器有问题:通常是编码格式或浏览器的播放策略导致。
- 只有手机端有问题:先看移动网络是否限制了访问,再检查视频格式和响应头。
逐项排查的常见原因
1. 视频地址本身访问不了
最快的办法是把视频的完整URL直接粘贴到浏览器地址栏。返回403 Forbidden,一般是Bucket没开读权限,或者Bucket策略限制了访问来源。返回404 Not Found,就去核对文件路径、文件名的大小写以及上传是否完整。OSS的对象路径区分大小写,这一点最容易被忽略。
一种常见情况是:后台上传的文件名是intro.mp4,前端代码里却写成了Intro.MP4。本地调试时一切正常,部署后才报404。统一大小写之后,问题就解决了。
2. Content-Type设置不对
浏览器能不能把资源当视频播放,很大程度上取决于HTTP响应头里的Content-Type。文件如果被识别成application/octet-stream,浏览器就倾向于直接下载,无法在页面中播放。上传时应明确指定为video/mp4。已经上传的文件,可以在OSS控制台修改元数据,或者用SDK重新设置。
一个典型的例子是课程视频全部以二进制流返回,用户点击后没有播放,直接变成下载。客服收到的反馈也都是“视频打不开”。改掉Content-Type后,问题基本消失。
3. 跨域(CORS)被拦截
视频放在另一个域名下,而播放页在自己的站点上时,浏览器会做跨域检查。如果OSS没有为当前站点的来源开放CORS规则,控制台里通常会出现“blocked by CORS policy”之类的提示。在OSS的跨域设置里加上播放页的域名,允许GET方法,同时放行Range请求头。Range很关键,少了它,拖动进度条时视频容易卡住或直接失败。
4. 防盗链把请求挡掉了
OSS和CDN一般都提供Referer防盗链功能。白名单里如果漏了正式域名或测试域名,或者忽略了HTTP与HTTPS的差别,播放器拿到的就是拒绝响应。排查时可以先临时关闭防盗链,看问题是否消失。确认是它的原因后,再逐条把需要的域名加进白名单,不要一次全部放开。
5. CDN缓存或回源出了问题
通过CDN访问时,要分清三种情况:节点本身故障、回源地址配错,或者源站文件已经更新而CDN仍在用旧缓存。前两种可以在CDN控制台查看回源状态和状态码统计。第三种最容易被误判,因为文件名没变,内容却已经换了,这时需要主动刷新对应URL的缓存。
在线教育类站点经常遇到这种情况。视频换了新版本,文件名保持不变,部分用户看到的仍是旧内容,甚至提示文件损坏。清除对应URL的缓存后,恢复正常。
6. 编码或封装格式不兼容
地址能访问、响应头也正确,视频本身的编码仍可能无法播放。比如部分浏览器对H.265(HEVC)的支持有限,个别音频编码在某些平台上也解不开。可以用FFmpeg自带的ffprobe查看流信息:
ffprobe -v error -show_entries stream=codec_name,width,height -of default=noprint_wrappers=1 input.mp4
如果视频是H.265,或者音频编码比较少见,就转成H.264视频加AAC音频的MP4。这个组合兼容性较好,多数浏览器和手机都能直接播放。视频数量多时,可以用阿里云媒体处理服务批量转码,省去逐个处理的麻烦。
7. 网络和运营商问题
有时视频本身没有问题,只是某些地区的访问路径不稳定。用多地拨测工具看延迟和丢包,如果问题集中在某个运营商,就把数据反馈给CDN服务商,请对方调整调度策略。这类问题靠自己很难修,带着拨测数据去沟通,效率会高很多。
推荐的排查顺序
- 直接访问视频URL,记下返回的状态码。
- 检查Content-Type、文件名大小写以及文件是否完整。
- 打开浏览器控制台,判断报错属于CORS还是防盗链。
- 使用了CDN的话,对比源站地址和CDN地址的访问结果,确定问题出在哪一层。
- 用ffprobe检查编码,必要时重新转码。
- 换几台设备、几种网络再测一遍,确认问题真的解决了。
上线前把这些固定下来
出了问题再排查,总归比较被动。上线前先把几件事定下来,后面能省不少时间。文件命名规则统一,上传时固定Content-Type,测试环境里模拟一遍CDN和防盗链的配置。重要的视频保留一份标准编码的母版,需要重转时直接用。访问日志和错误率也值得定期看一眼,异常通常会先在这里露头。
阿里云打不开视频,多数时候只是某一层配置出了小问题。按上面的顺序,从地址、响应头、跨域、防盗链一路查到CDN和编码,基本都能找到原因。