关于 html video 标签播放视频的问题求助, GPT 实在问不出来了

21 天前
 Geo200

在做一个 webrtc 的应用,video 标签接收的是一个远程的流媒体信息,我现在的需求是可以修改播放视频的分辨率,网上推荐使用的方法都是使用track.applyConstraints的方式去修改,但我试了好像都没生效,甚至有说直接修改 video 的 witdh 和 height 就可以修改分辨率的(这种明显不对吧),目前主流视频网站都是有提供切换分辨率的操作,现在求助有熟悉影音开发的大佬正确的做法是什么,谢谢~

558 次点击
所在节点    问与答
12 条回复
zack5337
21 天前
这个不应该是用户去重新请求不同分辨率的视频流
iOCZS
21 天前
这个是对的啊,可以修改自己上传的视频流分辨率:
```js
const constraints = {
             width: {min: 640, ideal: 1280},
             height: {min: 480, ideal: 720},
             advanced: [{width: 1920, height: 1280},{aspectRatio: 1.333}]
            };

navigator.mediaDevices.getUserMedia({ video: true })
.then(mediaStream => {
   const track = mediaStream.getVideoTracks()[0];
   track.applyConstraints(constraints)
  .then(() => {
    // Do something with the track such as using the Image Capture API.
  })
  .catch(e => {
    // The constraints could not be satisfied by the available devices.
  });
});
```
Geo200
21 天前
@zack5337 如果对方发的是 1080p 的视频流,接收端只能播放 1080p 是吧?
Geo200
21 天前
@iOCZS 谢谢,这个不太适用我的场景,我只处理接收,对方发送的控制不了
iOCZS
21 天前
@Geo200 我很欣赏你有勇气提这种需求
pangxiaojian
21 天前
各种不同的分辨率,针对的源 ur 是不一样的,切换分辨率是直接请求新的 ur 就行了,如果没有多个不同分辨率的源,怎么改都没用啊?那有本地自动调整分辨率的
xu455255849
21 天前
API 肯定有效的,无效就是你们的问题,服务端的问题可能更大,毕竟你只要改个参数就好了
如果服务端推流不支持其它分辨率 你怎么改也没有用,建议用 exact width height 这样不支持的话就直接报错了,你也知道它不支持
mandex
21 天前
对方发送的视频流是固定的分辨率,你这边选择的意义是什么啊?
sujin190
21 天前
接收端修改的意思应该是向对方发送申请新分辨率的视频流吧,应该不是让本地转码改变分辨率吧,看你这情况对方肯定不接受啊,所以显然改不了,视频分辨率不重新转码应该是改不了分辨率的吧,否则各大视频网站也就不需要为每种分辨率在服务端提前转码并单独保存了,或许你应该在收到视频流后先用媒体扩展转个码再发送给 video 标签吧
ysc3839
21 天前
你都说了是接收远程视频流,那当然是要在发送端改呀。
applyConstraints 你去搜索一下,MDN 的页面应该是排在前面几个的,进去能明显看到是先 mediaDevices.getUserMedia 再修改分辨率,而 getUserMedia 是请求用户本地的摄像头等媒体源,那当然改不了远程视频流的分辨率。
sujin190
21 天前
不过说起来你都收到解码了,转码换更低分辨率确实毫无意义吧,分辨率低搞更高分辨率除非用最近搞出来的超分 AI 算法,否则毫无意义吧,所以既然发送端不支持改分辨率改码率,你这个需求本身就毫无意义了吧
IvanLi127
21 天前
你改播放的分辨率...这字面意思真的就是改 video 宽高就行了,你问题描述不准确呀

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1047258

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX