为啥我录制出来的视频很卡?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥我录制出来的视频很卡?相关的知识,希望对你有一定的参考价值。

你录制出来的视频很卡,那是因为你的手机内存不够,所以导致你录出来视频很卡,一般像录制视频的话一定要手机运行内存很大的话,这样录出来的视频就不会卡。 参考技术A 回答

您好,亲。若手机播放视频较卡,请检查:本地播放:1.建议使用设备内置三星视频功能,播放观察(排除第三方播放器软件问题)。2.通过设备自身拍摄一段视频,播放观察(排除源文件问题,可能与视频分辨率、帧速等相关参数有关)。3.若问题依然存在,建议更新机器固件版本。(升级之前将手机中数据如电话本、图片等备份)。在线播放:1.建议检查网络是否正常(由于网络速度不稳定或网速较慢导致)。2.建议使用其他在线播放器软件进行播放观察(播放器软件服务器不稳定等问题)。

感谢您的咨询,很高兴回答您的问题。

为啥我的 JS 生成的视频无法在 Firefox 中播放?

【中文标题】为啥我的 JS 生成的视频无法在 Firefox 中播放?【英文标题】:Why are my JS-generated videos not playing in Firefox?为什么我的 JS 生成的视频无法在 Firefox 中播放? 【发布时间】:2019-02-16 08:10:27 【问题描述】:

我有一个屏幕录像机网络扩展程序,可以将录制的视频生成为下载。在 Chrome 中一切正常,但生成的视频在 Firefox 中都没有播放。

我已经尝试过 .webm(通过 VP9 编解码器)和 .mp4(通过 H264)。相关代码为:

recorder.addEventListener('stop', evt => 
    blob = new Blob(recorder.chunks, 'type': 'video/webm; codecs=vp9');
    blob_url = window.URL.createObjectURL(blob);
    //...

也试过

'type': 'video/mp4; codecs=H264'

在 Firefox 中我只看到:

我做错了什么?

[编辑]

按照@epistemex 的有用回答,我现在在创建MediaRecorder 时指定webm,而不是指定任何编解码器。

MediaRecorder(master_stream, mimeType: 'video/webm');

后来

blob = new Blob(recorder.chunks); //<-- not setting mime here now

...但 Firefox 仍然说它无法播放生成的文件,即使

MediaRecorder.isTypeSupported("video/webm") //true

[编辑 2 - 包括更多代码]

    if (rec_prefs.rec_vid == 'screen') listen_for_stop_screen_sharing();
    recorder = new MediaRecorder(master_stream, mimeType: 'video/webm');
    recorder.start();
    recorder.chunks = [];
    recorder.addEventListener('dataavailable', evt => 
        recorder.chunks.push(evt.data);
    , false);
    rec_stopped_dfd = new Promise((resolve) => 
        recorder.addEventListener('stop', evt => 
            blob = new Blob(recorder.chunks);
            blob_url = window.URL.createObjectURL(blob);
            resolve();
        , false);
    );

recorder.stop() 的调用是在响应按钮点击的回调中:

function stop_recording() 
    master_stream.getTracks().forEach(track => track.stop());
    if (recorder && recorder.state != 'inactive') 
        recorder.stop();

是的,我可以确认数组不为空。一切都在 Chrome 中完美运行 - 没有错误、控制台等。

【问题讨论】:

您是否尝试过下载视频并在专用播放器中播放?如果文件以任何方式格式错误,它可能会给出一些错误或警告,这可能是一个提示。在文件有效性方面,Chrome 可能会更宽松。 Chrome 确实似乎更宽松。我认为下面的答案是我失败的原因。谢谢。 请包括recorder 声明、recorder.chunks 声明、ondataavailable 处理程序(如果有)以及对recorder.stop() 的调用。另外,您实际录制流媒体多久了?根据经验,1s 以下不会被记录...如果您可以确认 recorder.chunks 确实是一个包含至少一个非 0 的 Blob 的数组 .size @Kaiido 谢谢,见编辑 2。 奇怪...您确实从 MediaRecorder 构造函数中删除了所有选项,对吗? (我看到它仍然存在于您的编辑 2 中)。即recorder = new MediaRecorder(master_stream);. 【参考方案1】:

Firefox 不支持使用 vp9 编解码器的音频/webm,也不支持使用 H.264 编码数据的 MP4 容器(这可能与许可/法律方面有关)。

您可以使用MediaRecorder.isTypeSupported() 测试支持以检查支持:

console.log("video/webm: ", MediaRecorder.isTypeSupported("video/webm"))
console.log("video/webm; codecs=vp9: ", MediaRecorder.isTypeSupported("video/webm; codecs=vp9"))
console.log("video/mp4; codecs=H264: ", MediaRecorder.isTypeSupported("video/mp4; codecs=H264"))

您需要注意的另一件事是,为 Blob 设置 mime-type 不会影响任何形式的数据 本身 - 这只是元数据。您必须在 MediaRecorder 的选项对象中指定 mime-type(您没有在问题中显示此部分,因此您可能已经这样做了,但以防万一):

const mediaRecorder = new MediaRecorder(stream, 
    mimeType: "video/webm"
  );

那么该怎么办:好吧,如果不支持,除了使用受支持的编解码器之外,您可以做的事情真的不多。您可以简单地省略更具体的 vp9 要求,让浏览器决定使用什么,或者使用简化的后备,例如:

const mime = MediaRecorder.isTypeSupported("video/webm; codecs=vp9") 
             ? "video/webm; codecs=vp9" 
             : "video/webm";  // here: assumed support (todo)

const mediaRecorder = new MediaRecorder(stream, 
    mimeType: mime
  );

希望这会有所帮助!

【讨论】:

真的很有帮助,谢谢。查看我的代码,我目前没有在实例化MediaRecorder 时指定媒体类型,所以这对我来说是新的。我试试看。 已编辑的问题...仍然没有乐趣。 Firefox 显示同样的错误。

以上是关于为啥我录制出来的视频很卡?的主要内容,如果未能解决你的问题,请参考以下文章

为啥电脑摄像头录制的视频播放起来很卡。。为啥电脑不录视频不卡一路视频就卡?

n卡自带的录屏驱动录制出来的视频帧数低很卡怎么解决,录制的时候玩起来都很流畅?

为啥录制出来的视频没有声音?

C503怎么删除录制的视频文件?

手机录屏录的视频为啥没有声音?

可以录制主板bios的采集卡