录制速度javascript
Recording speed javascript
本文关键字:javascript 速度 更新时间:2023-09-26
我目前正在创建一个支持通过我的网站录制视频的项目。
我创建了一个画布,然后将录制的帧推到画布上。问题是,当我在录制完视频后播放视频时,它播放得太快了。一个10秒长的视频在2秒内播放。我已经检查了playbackRate是否设置为1。我把录音保存到数据库中,并在那里加速,所以它与浏览器视频播放器无关。
我对AngularJS和javascript比较陌生,所以如果我遗漏了一些重要的内容,我很抱歉。
我试过来回改变很多值,但似乎找不到问题的原因。有什么想法吗?
这是视频录制的代码:
scope.startRecording = function () {
if (mediaStream) {
var video = $('.video-capture')[0];
var canvas = document.createElement('canvas');
canvas.height = video.videoHeight;
canvas.width = video.videoWidth;
ctx = canvas.getContext('2d');
var CANVAS_WIDTH = canvas.width;
var CANVAS_HEIGHT = canvas.height;
function drawVideoFrame(time) {
videoRecorder = requestAnimationFrame(drawVideoFrame);
ctx.drawImage(video, 0, 0, CANVAS_WIDTH, CANVAS_HEIGHT);
recordedFrames.push(canvas.toDataURL('image/webp', 1));
}
videoRecorder = requestAnimationFrame(drawVideoFrame); // Note: not using vendor prefixes!
scope.recording = true;
}
};
scope.stopRecording = function () {
cancelAnimationFrame(videoRecorder); // Note: not using vendor prefixes!
// 2nd param: framerate for the video file.
scope.video.files = Whammy.fromImageArray(recordedFrames, 1000 / 30);
recordedVideoBlob = Whammy.fromImageArray(recordedFrames, 1000 / 30);
scope.videoMode = 'viewRecording';
scope.recording = false;
};
我猜罪魁祸首是requestAnimationFrame
,它自己留下来,你无法判断它以什么间隔不断调用回调,它可能高达60fps。
同样看看你的代码,我不知道你是如何得出帧速率=1000/30
的结论的
我的建议(至少对于你的情况)是使用CCD_ 3,你可以做一些类似的事情:
scope.frameRate = 10, videoInterval; // the amount I consider ideal for client-side video recording.
scope.startRecording = function () {
if (mediaStream) {
var video = $('.video-capture')[0];
var canvas = document.createElement('canvas');
canvas.height = video.videoHeight;
canvas.width = video.videoWidth;
ctx = canvas.getContext('2d');
var CANVAS_WIDTH = canvas.width;
var CANVAS_HEIGHT = canvas.height;
function drawVideoFrame() {
ctx.drawImage(video, 0, 0, CANVAS_WIDTH, CANVAS_HEIGHT);
recordedFrames.push(canvas.toDataURL('image/webp', 1));
}
videoInterval = $interval(drawVideoFrame, 1000/scope.frameRate);
scope.recording = true;
}
};
scope.stopRecording = function () {
$interval.cancel(videoInterval);
// 2nd param: framerate for the video file.
scope.video.files = Whammy.fromImageArray(recordedFrames, scope.frameRate);
recordedVideoBlob = Whammy.fromImageArray(recordedFrames, scope.frameRate); // you can chage this to some file copy method, so leave out the duplicate processing of images into video.
scope.videoMode = 'viewRecording';
scope.recording = false;
};
相关文章:
- 录制速度javascript
- Javascript图像数组预加载速度和从内存中删除
- JavaScript 更改画布中球的速度
- 带有滚动事件的Javascript集翻译速度较慢
- 加载javascript和速度问题
- 使用javascript的半仪表/速度表动画
- Javascript属性访问速度:var.properties与var[“属性”]的区别
- 当我们使用JavaScript点击下一个或上一个按钮时,图像幻灯片播放计时器的速度会加快
- imacros javascript在抓取的一段时间内挂起或减慢速度
- Javascript滑块是't装载速度不够快
- Javascript数组排序速度受字符串长度的影响
- 如何使用jquery和javascript提高每次点击的标题速度
- JavaScript动画被上面的元素减慢了速度
- 鼠标速度 JavaScript 函数
- 通过书签加快加载外部javascript文件的速度
- 拥有多个 HTML 页面通常使用的单独 javascript 文件是否会加快页面加载速度
- 切换到全屏时 Javascript/jQuery 速度变慢
- Google Maps Javascript API V3 滚动响应速度低于简单的 Google 地图嵌入
- 从升级时Javascript速度较慢.NET 2.0到.NET 3.5
- 提高JavaScript速度