rtsp视频流经过转码在canvas画布上进行播放,单击抓拍截取对应的图片

这里遇到的问题是抓拍有时候可以抓拍到,有时候的图片显示未一片黑色
我用的方法是drawCanvas和html2canvas这两种方式,但是都不行

视频流的画面正常渲染,但是抓拍偶尔抓拍不到,所有方法都试了发现最后的问题是因为视频的帧率问题
帧率太小 如每秒只播放20帧,那么就会导致你截取的瞬间那一帧没有画面

所以使用了ffmpeg将帧率该为了60fps 这样功能成功实现了

 const videoCanvas = this.$refs.videoCanvas;
            const imageCanvas = document.createElement('canvas');
            imageCanvas.width = videoCanvas.width;
            imageCanvas.height = videoCanvas.height;
            const ctx = imageCanvas.getContext('2d');

            requestAnimationFrame(() => {
                ctx.drawImage(
                    videoCanvas,
                    0,
                    0,
                    imageCanvas.width,
                    imageCanvas.height
                );
                imageCanvas.toBlob(
                    blob => {
                        if (blob) {
                            const url = URL.createObjectURL(blob);
                            this.downloadImage(url, 'screenshot.jpeg');
                        } else {
                            console.error('Blob creation failed');
                        }
                    },
                    'image/png'
                );
            });
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容