場景是這樣的,業務上有一個視頻通話,視頻窗口是canvas的,有需求要做截圖的功能,而且截圖需要是canvas的。視頻通話的視頻源是通過yuv數組傳過來的,按點陣渲染成了canvas,如果是通過WebRTC的視頻流傳輸(頁面是video標簽)就不會出現這個問題。代碼基本是這個樣子的html<!-- 視頻 --><canvas id="video" width="800" height="600"></canvas>
<!-- 截圖 --><canvas id="photo" width="800" height="600"></canvas>
<!-- 截圖按鈕 --><button id="snap-button"></button>js$('#snap-button').on('click', function () { var source = $('#video')[0];
var target = $('#photo')[0]; var context = target.getContext('2d');
context.drawImage(source, 0, 0, 800, 600);
});然而神奇的一幕發生了,點擊按鈕測試截圖效果,大概七八十回有一兩回能截圖成功,而且還是反的。我試過如果把需要截圖的視頻canvas替換成一個靜態的canvas,截圖是100%成功的,那么問題來了,我該怎么保證動態的視頻canvas能夠截圖成功呢?謝謝。
canvas 復制 canvas
一只名叫tom的貓
2018-09-18 09:14:29