0
我想發送Base64 PNG圖片(從捕捉網絡攝像頭產生)到鳳凰頻道的流。菲尼克斯頻道接受base64 png生
channel.push(:
據我所知,在通道handle_in方法只接收JSON字符串,所以我現在要做的就是用它發送「流:視頻」,JSON.stringify(數據))
像以下片段:
var delay = 100
if (navigator.userAgent.toLowerCase().indexOf("chrome") > -1) {
delay = 40
console.info(">>> using chrome")
} else {
console.info(">>> using non chrome!")
}
let canvasContext = null
let camVideo = document.getElementById("cam-video")
let camCanvas = document.getElementById("cam-canvas")
let onSucceed = (stream) => {
camVideo.srcObject = stream
setInterval(() => {
canvasContext.drawImage(camVideo, 0, 0, 240, 120)
let data = camCanvas.toDataURL("image/png")
// This is where I push Base64 image as string
// I don't like this :P
channel.push("stream:video", JSON.stringify(data))
}, delay)
}
let onFailed = (error) => {
console.error(error)
}
if (camVideo && camCanvas) {
canvasContext = camCanvas.getContext("2d")
navigator.getUserMedia = (navigator.getUserMedia
|| navigator.webkitGetUserMedia || navigator.mozGetUserMedia
|| navigator.msGetUserMedia || navigator.oGetUserMedia)
navigator.getUserMedia({video: true}, onSucceed, onFailed)
}
到目前爲止使用上面的代碼,我可以看到的Base64字符串表示的流流向我的頻道(來回m服務器端控制檯日誌)。
我不喜歡這一點,因爲我寧願如果反正我可以調整鳳凰通道能夠接收RAW Base64二進制流。
我檢查了這article但它似乎只啓用服務器端二進制推送到瀏覽器。
有沒有反正我可以調整handle_in接收二進制?