网上有很多推流拉流的教程,我都试过,都卡在了拉流以及客户端播放,大抵情况就是服务器将流数据转为base64,传到客户端 客户端将base64转为原数据再进行播放处理,可播放时使用的是
'data:image/jpeg;base64,' + base64decode(bytes.toString())
眼睛好的都已经看到 这里图片已经指定为了base64 为什么还需要转一次呢 这就是问题所在
推流使用命令或者代码
ffmpeg -re -i "xxxx.mp4" -vcodec libx264 -acodec aac -f flv rtmp://xxx.xxx.xxx.xxx:Xxx/xxxx
具体命令含义可看这位大哥整理的ffmpeg常用基本命令(转) - 瓦楞球 - 博客园
服务器引用FFmpeg的包仅需寥寥几句
var stream = new FFMpeg({
input: "xxxx"//此处可为拉流地址也可为本地视频"rtmp://xxx.xxxx.xxx.xx/home" or "xxx.mp4" // stream uri
// , rate: 10 // output framerate (optional)
// , resolution: '640x480' // output resolution in WxH format (optional)
// , quality: 3 // JPEG compression quality level (optional)
});
console.log(stream);
var pipeStream = function (data) {
// socket.emit('data', stream.toString('base64'));
session.send( data.toString('base64'));
};
stream.on('data', pipeStream);
其中参数意思均可百度得知,此处不解释
这里将流数据发往客户端,客户端仅需接受到数据就可使用
Img.skin = 'data:image/jpeg;base64,' + received_msg;
or
Img.src = 'data:image/jpeg;base64,' + received_msg;