javascript - 使用 VueJS 设置 srcObject 的替代方法

标签 javascript vue.js webrtc vuejs2 vuex

设置 html 视频元素的“src”属性不适用于 Vue.js 和 Vuex:

<video id="myVideoEl" :src="myStreamSrc" autoplay="autoplay">

myStreamSrc 是一个计算值,由事件处理程序在突变中设置:

AddStream: function (state, plMyStream) {
  state.myRTCPeerConnection.addStream(plMyStream)
  state.myStreamSrc = plMyStream
}

当我使用该代码运行我的应用程序时,出现以下错误:

HTTP “Content-Type” of “text/html” is not supported. Load of media resource http://localhost:8080/[object%20MediaStream] failed.

当我执行以下操作时:

state.myVideoEl = document.querySelector('#myVideoEl')
state.myVideoEl.srcObject = payloadWithMyStream

我没有收到任何错误,并且显示了流。问题是,我不能使用剪断的工作代码,因为引用的元素稍后会添加到 DOM 中。当我使用 v-if Vuex.js 属性将 html 视频元素绑定(bind)到 div 中时,此代码片段不起作用。然后我只是得到“未定义”的结果(因为页面加载时不存在带有视频元素的 div 元素)。

设置 srcObject 和设置 src 属性有区别吗?我以为当我设置 srcObject 时,video 元素将具有 src 属性,但它没有。

是否可以在视频html属性中设置srcObject

更多信息,请访问我的 Vue.js 论坛: https://forum.vuejs.org/t/reference-elements-when-they-rendered-with-v-if/16474/13

最佳答案

srcObject 是修饰符,不是 html 属性,所以你需要这样写

<video :srcObject.prop="myStreamSrc" autoplay/>

参见 Priansh Shah 的回答2019 年更新。

关于javascript - 使用 VueJS 设置 srcObject 的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45888111/

相关文章:

javascript - 设置状态时这段代码是什么意思?

vue.js - Bundle size 很大,如何减小 app.js 的大小?

vue.js - 如何在 Vuetify 菜单中突出显示所选项目?

javascript - 对于文本输入,如何使点击它会选择所有内容?

javascript - 是否可以在单击 5 次后禁用按钮?

javascript - 顶部固定导航栏中的链接无响应

javascript - Foundation 5 中的动态输入框宽度

android - onIceGatheringChange 未处于完成状态

javascript - Temasys 如何更改现有代码

ffmpeg - 如何使用标记同步两个音频文件