rtp-session
Version:
Real-time Transport Protocol session library
69 lines (53 loc) • 1.37 kB
JavaScript
const ToneStream = require('tone-stream')
const RtpSession = require('../../index.js')
const args = process.argv
if(args.length != 7) {
console.log(`
Invalid Number of arguments.
Parameters: local_ip local_port remote_ip remote_port dtmf_string
Ex: 127.0.0.1 8892 127.0.0.1 8890 0123456789abcdef
`)
process.exit(1)
}
const local_ip = process.argv[2]
const local_port = parseInt(process.argv[3])
const remote_ip = process.argv[4]
const remote_port = parseInt(process.argv[5])
const dtmf_string = process.argv[6]
const re = /[0-9a-dA-D]+/
if(!dtmf_string.match(re)) {
console.log('Invalid dtmf_string. Valid chars are 0123456789abcdef')
process.exit(1)
}
const format = {
sampleRate: 8000,
bitDepth: 16,
channels: 1,
}
const ts = new ToneStream(format)
for (var i = 0; i < dtmf_string.length; i++) {
var digit = dtmf_string.charAt(i)
ts.add([800, `DTMF:${digit}`])
ts.add([800, 0]) // silence
}
const rs_args = {
payload_type: 0,
ssrc: 0x12345678,
}
const rs = new RtpSession(rs_args)
rs.set_local_end_point(local_ip, local_port)
rs.on('error', err => {
console.log(err)
})
rs.on('listening', () => {
rs.set_remote_end_point(remote_ip, remote_port)
setInterval(() => {
var data = ts.read(160)
if(!data) {
console.log("tone stream finished")
process.exit(0)
}
//console.log(data)
rs.send_payload(data)
}, 20)
})