音视频问题收集

150 阅读1分钟
跨平台问题:
  • Nginx
    访问的视频URL要做跨域处理, 如存在跨域问题
    解决方案:
    add_header 'Access-Control-Allow-Origin' $http_origin;
    add_header 'Access-Control-Allow-Credentials' 'true';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
    add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
  • Electron
    使用 Electron 打包的应用不能自动播放音视频文件
    Chrome 66 之后更新了,自动播放的策略以提供更友好的交互体验
    解决方案:
    app.commandLine.appendSwitch('autoplay-policy', 'no-user-gesture-required');
  • Chrome浏览器:
    Chrome默认禁止用户非手势触发的自动播放策略
    解决方案:
    open chrome://flags/#autoplay-policy
    Autoplay policy 改为 No user gesture is required
关于视频(有声音无图像问题):
  • 原因
    与视频编码格式有关,mp4的视频编码有三种:MPEG4(DivX),MPEG4(Xvid),AVC(H264)。
    浏览器播放视频的支持有限,MP4格式的视频只支持h.264的视频;
    视频编码: AVC1 - 内置 FFmpeg 解码器(h264) 可以播放;
    视频编码: mp4v - 内置 FFmpeg 解码器(mpeg4) 不可以播放。