提交 a1b9ccfc authored 作者: GOD_ZYX's avatar GOD_ZYX

update

上级 b64e1ce9
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -18,7 +18,6 @@
"devDependencies": {
"babel-core": "^6.26.3",
"babel-eslint": "^8.2.6",
"cross-env": "^5.2.0",
"eslint": "^4.19.1",
"eslint-config-standard": "^11.0.0",
"eslint-plugin-import": "^2.14.0",
......@@ -27,9 +26,10 @@
"eslint-plugin-standard": "^3.1.0"
},
"dependencies": {
"@god/node-com": "^1.1.3",
"@god/node-com": "^2.0.2",
"body-parser": "^1.18.3",
"child_process": "^1.0.2",
"cross-env": "^5.2.0",
"express": "^4.16.4",
"multer": "^1.4.1",
"request": "^2.88.0",
......
var com = require('@god/node-com')
var _ReqHttp = com.Proxy.reqHttp
var _MD5 = com.Tool.md5
var conf = {
AppId: 1257095260,
AppSecret: 'GNSE00361135750782C81E59I5CNQEEK',
StreamAppId: 1400255568,
bizid: '33393',
sessionId: '',
outStreamId: ''
}
/* 根据腾讯云 - 创建混流 */
var getFlow = function (req, res) {
var _time = parseInt(new Date().getTime() / 1000)
var _opt = _getOpt(_time)
_opt.data = _dealCreateData(req, _time)
_opt.headers['Content-Length'] = _opt.data.length
_ReqHttp.req(_opt, function (dataStr, cookieStr) {
debugger
setTimeout(() => {
_concelFlow()
}, 5000)
res.send(conf)
})
}
/* 取消混流 */
var _concelFlow = function (req, res) {
var _time = parseInt(new Date().getTime() / 1000)
var _opt = _getOpt(_time)
_opt.data = _dealCancelData(req, _time)
_opt.headers['Content-Length'] = _opt.data.length
_ReqHttp.req(_opt, function (dataStr, cookieStr) {
debugger
})
}
/* 处理 混流建立 方式 */
var _dealCreateData = function (req, _time) {
conf.sessionId = 'ne4MjXHKFce1yIwNMkKv9QtV6_hy0RoT' || _MD5('zyx_' + _time)
conf.outStreamId = '33393_ca44d26966c309105baca4dbd10bb279' || ('stream_' + conf.sessionId)
console.log(_time, conf.AppId, conf.sessionId, conf.outStreamId, req.body)
return JSON.stringify({
'timestamp': _time, // UNIX 时间戳数
'eventId': _time, // 取随机数即可,标识一次网络请求
'interface': {
'interfaceName': 'Mix_StreamV2', // 固定值
'para': {
'app_id': conf.AppId, // 填写直播 APPID
'interface': 'mix_streamv2.start_mix_stream_advanced', // 固定值
// 'interface': 'mix_streamv2.cancel_mix_stream', // 固定值
'mix_stream_template_id': 0,
'mix_stream_session_id': conf.sessionId, // 标识一次网络请求
'output_stream_id': conf.outStreamId, // 填输出流 ID
'output_stream_type': 0, // 生成新流时,写1
'input_stream_list': [{
// 背景画面
'input_stream_id': '33393_ca44d26966c309105baca4dbd10bb279', // 流 ID
'layout_params': {
'image_layer': 1, // 图层号,背景填1
'image_width': 640,
'image_height': 360
}
}, {
// 小画面1
'input_stream_id': '33393_9806f61c2d2193106b5bad448e80c3d8', // 流 ID
'layout_params': {
'image_layer': 2, // 图层标识号
'image_width': 120, // 画面宽度
'image_height': 90, // 画面高度
'location_x': 10, // x偏移:相对于背景画面左上角的横向偏移
'location_y': 10 // y偏移:相对于背景画面左上角的纵向偏移
}
}]
}
}
})
}
/* 处理 混流取消 方式 */
var _dealCancelData = function (req, _time) {
return JSON.stringify({
'timestamp': _time, // UNIX 时间戳数
'eventId': _time, // 混流事件ID,取时间戳即可
'interface': {
'interfaceName': 'Mix_StreamV2', // 固定值
'para': {
'app_id': conf.AppId,
'interface': 'mix_streamv2.cancel_mix_stream', // 取消混流
// 'interface': 'mix_streamv2.start_mix_stream_advanced', // 取消混流
'mix_stream_session_id': conf.sessionId,
'output_stream_id': conf.outStreamId
}
}
})
}
/* 鉴权 - 返回参数 */
var _getOpt = function (_time) {
/* 定义鉴权 */
var str = 'appid=' + conf.AppId + '&interface=Mix_StreamV2&t=' + (_time + 60) + '&sign=' + _MD5(conf.AppSecret + (_time + 60))
var opt = {
hostname: 'fcgi.video.qcloud.com',
path: '/common_access?' + str,
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
data: {}
}
return opt
}
module.exports = {
getFlow
}
var com = require('@god/node-com')
var _MD5 = com.Tool.MD5
var _MD5 = com.Tool.md5
var isRun = function (req, res) {
var operate = req.body.type || ''
var apikey = req.headers.apikey || ''
var timestamp = Math.floor(new Date().getTime() / 100000000) + '00000000'
var md5Str = _MD5('godzyx.com' + timestamp)
if (operate === 1) { res.status(200).json({ 'MD5-auth': md5Str }); return }
if (operate === '1') { res.status(200).json({ 'MD5-auth': md5Str }); return }
if (apikey === md5Str) {
res.status(200).json({ 'msg': '数据正在处理' })
} else {
......
......@@ -7,9 +7,11 @@ const upload = multer({ dest: 'upload_tmp/' })
const _test = require('../controller/TestMonitor')
const _wx = require('../controller/WxMonitor')
const _mfm = require('../controller/MixedFlowMonitor')
router.use(bodyParser.json({ limit: '60mb' }))
router.use(bodyParser.urlencoded({ extended: true, limit: '60mb' }))
router.use(bodyParser.text({ limit: '60mb' }))
router.use((req, res, next) => {
let origin = req.headers.origin
res.header('Access-Control-Allow-Origin', origin) // 设置允许哪些外域访问此服务器。如果你要发送cookies,不要将其赋值为'*'
......@@ -25,6 +27,8 @@ router.post('/share/getsignature', _wx.wxGetsignature)
router.post('/share/token', _wx.wxShare)
// 获取用户信息
router.post('/getInfo', _wx.wxGetInfo)
// 云端混流
router.post('/set/mixed-flow', _mfm.getFlow)
router.use('/api/*', upload.any(), (req, res) => { res.send('暂无该接口') })
router.use('*', upload.any(), (req, res) => { res.send('接口未定义') })
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论