
Recherche avancée
Autres articles (29)
-
Les autorisations surchargées par les plugins
27 avril 2010, parMediaspip core
autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs -
Participer à sa traduction
10 avril 2011Vous pouvez nous aider à améliorer les locutions utilisées dans le logiciel ou à traduire celui-ci dans n’importe qu’elle nouvelle langue permettant sa diffusion à de nouvelles communautés linguistiques.
Pour ce faire, on utilise l’interface de traduction de SPIP où l’ensemble des modules de langue de MediaSPIP sont à disposition. ll vous suffit de vous inscrire sur la liste de discussion des traducteurs pour demander plus d’informations.
Actuellement MediaSPIP n’est disponible qu’en français et (...) -
Supporting all media types
13 avril 2011, parUnlike most software and media-sharing platforms, MediaSPIP aims to manage as many different media types as possible. The following are just a few examples from an ever-expanding list of supported formats : images : png, gif, jpg, bmp and more audio : MP3, Ogg, Wav and more video : AVI, MP4, OGV, mpg, mov, wmv and more text, code and other data : OpenOffice, Microsoft Office (Word, PowerPoint, Excel), web (html, CSS), LaTeX, Google Earth and (...)
Sur d’autres sites (4380)
-
Streaming RTP with ffmpeg and node.js to voip phone
5 juillet 2023, par Nik HendricksI am trying to implement SIP in node.js. Here is the library i am working on


Upon receiving an invite request such as



Received INVITE
INVITE sip:201@192.168.1.2:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.39:5062;branch=z9hG4bK1534941205
From: "Nik" <sip:nik@192.168.1.2>;tag=564148403
To: <sip:201@192.168.1.2>
Call-ID: 2068254636@192.168.1.39
CSeq: 2 INVITE
Contact: <sip:nik@192.168.1.39:5062>
Authorization: Digest username="Nik", realm="NRegistrar", nonce="1234abcd", uri="sip:201@192.168.1.2:5060", response="7fba16dafe3d60c270b774bd5bba524c", algorithm=MD5
Content-Type: application/sdp
Allow: INVITE, INFO, PRACK, ACK, BYE, CANCEL, OPTIONS, NOTIFY, REGISTER, SUBSCRIBE, REFER, PUBLISH, UPDATE, MESSAGE
Max-Forwards: 70
User-Agent: Yealink SIP-T42G 29.71.0.120
Supported: replaces
Allow-Events: talk,hold,conference,refer,check-sync
Content-Length: 306

v=0
o=- 20083 20083 IN IP4 192.168.1.39
s=SDP data
c=IN IP4 192.168.1.39
t=0 0
m=audio 11782 RTP/AVP 0 8 18 9 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:9 G722/8000
a=fmtp:101 0-15
a=rtpmap:101 telephone-event/8000
a=ptime:20
a=sendrecv




I can then parse the SDP into an object like this



{
 "session":{
 "version":"0",
 "origin":"- 20084 20084 IN IP4 192.168.1.39",
 "sessionName":"SDP data"
 },
 "media":[
 {
 "media":"audio",
 "port":11784,
 "protocol":"RTP/AVP",
 "format":"0",
 "attributes":[
 "rtpmap:0 PCMU/8000",
 "rtpmap:8 PCMA/8000",
 "rtpmap:18 G729/8000",
 "fmtp:18 annexb=no",
 "rtpmap:9 G722/8000",
 "fmtp:101 0-15",
 "rtpmap:101 telephone-event/8000",
 "ptime:20",
 "sendrecv"
 ]
 }
 ]
}



After sending the
100
and180
responses with my library i attempt to start a RTP stream with ffmpeg

var port = SDPParser.parse(res.message.body).media[0].port
var s = new STREAMER('output.wav', '192.168.1.39', port)



with the following STREAMER class


class Streamer{
 constructor(inputFilePath, rtpAddress, rtpPort){
 this.inputFilePath = 'output.wav';
 this.rtpAddress = rtpAddress;
 this.rtpPort = rtpPort;
 }

 start(){
 return new Promise((resolve) => {
 const ffmpegCommand = `ffmpeg -re -i ${this.inputFilePath} -ar 8000 -f mulaw -f rtp rtp://${this.rtpAddress}:${this.rtpPort}`;
 const ffmpegProcess = spawn(ffmpegCommand, { shell: true });
 
 ffmpegProcess.stdout.on('data', (data) => {
 data = data.toString()
 //replace all instances of 127.0.0.1 with our local ip address
 data = data.replace(new RegExp('127.0.0.1', 'g'), '192.168.1.3');

 resolve(data.toString())
 });
 
 ffmpegProcess.stderr.on('data', (data) => {
 // Handle stderr data if required
 console.log(data.toString())
 });
 
 ffmpegProcess.on('close', (code) => {
 // Handle process close event if required
 console.log('close')
 console.log(code.toString())
 });
 
 ffmpegProcess.on('error', (error) => {
 // Handle process error event if required
 console.log(error.toString())
 });
 })
 }
 
}



the
start()
function resolves with the SDP that ffmpeg generates. I am starting to think that ffmpeg cant generate proper SDP for voip calls.

so when i create
200
response with the following sdp

v=0
o=- 0 0 IN IP4 192.168.1.3
s=Impact Moderato
c=IN IP4 192.168.1.39
t=0 0
a=tool:libavformat 58.29.100
m=audio 12123 RTP/AVP 97
b=AS:128
a=rtpmap:97 PCMU/8000/2



the other line never picks up. from my understanding the first invite from the caller will provide SDP that will tell me where to send the RTP stream too and the correct codecs and everything. I know that currently, my wav file is PCMU and i can listen to it with ffplay and the provided sdp. what is required to make the other line pickup specifically a
Yealink t42g


my full attempt looks like this


Client.on('INVITE', (res) => {
 console.log("Received INVITE")
 var d = Client.Dialog(res).then(dialog => {
 dialog.send(res.CreateResponse(100))
 dialog.send(res.CreateResponse(180))
 var port = SDPParser.parse(res.message.body).media[0].port

 var s = new STREAMER('output.wav', '192.168.1.39', port)
 s.start().then(sdp => {
 console.log(sdp.split('SDP:')[1])
 var ok = res.CreateResponse(200)
 ok.body = sdp.split('SDP:')[1]
 dialog.send(ok)
 })

 dialog.on('BYE', (res) => {
 console.log("BYE")
 dialog.send(res.CreateResponse(200))
 dialog.kill()
 })
 })
})



I have provided a link to my library at the top of this message. My current problem is in the examples/Client folder.


I'm not sure what could be going wrong here. Maybe i'm not using the right format or codec for the VOIP phone i dont see whats wrong with the SDP. especially if i can listen to SDP generated by ffmpeg if i stream RTP back to the same computer i use
ffplay
on. Any help is greatly appreciated.

Update


As i test i decided to send the caller back SDP that was generated by a Yealink phone like itself. but with some modifications


v=0
o=- ${this.output_port} ${this.output_port} IN IP4 192.168.1.39
s=SDP data
c=IN IP4 192.168.1.39
t=0 0
m=audio ${this.output_port} RTP/AVP 0 8 18 9 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:9 G722/8000
a=fmtp:101 0-15
a=rtpmap:1
01 telephone-event/8000
a=ptime:20
a=sendrecv



Finally, the phone that makes the call in the first place will fully answer but still no audio stream. I notice if I change the IP address or port to something wrong the other phone Will hear its own audio instead of just quiet. so this leads me to believe I am headed in the right direction. And maybe the problem lies in not sending the right audio format for what I'm describing.


Additionaly, Whenever using
ffmpeg
to stream my audio with rtp I notice that it sees the file format as thispcm_alaw, 8000 Hz, mono, s16, 64 kb/s
My new SDP describes using both ulaw and alaw but I'm not sure which it is saying it prefers

v=0
o=- ${this.output_port} ${this.output_port} IN IP4 192.168.1.39
s=SDP data
c=IN IP4 192.168.1.39
t=0 0
m=audio ${this.output_port} RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=fmtp:101 0-15
a=rtpmap:101 telephone-event/8000
a=ptime:0
a=sendrecv



I have been able to simply the SDP down to this. This will let the other phone actually pickup and not hear its own audio. it's just a completely dead air stream.


-
SCTE-35 injection in M3U8 using FFMPEG
2 avril 2023, par abhishek kumarWe are using Udp stream as injection and transcoding it to hls using ffmpeg. Output stream when probed changes to bin_data.


We have used TSDuck to inject Scte-35 INfo to output ts file which convert the bin_data(0x06) back to SCTE 35(0X86) issue. But unable to ingest Cue tags in M3U8 manifest file. How can we ingest Cue data in m3u8 scte information in m3u8 ? So that it can be used by SSAI engine for AD-insertion.


-
FFmpeg cannot transcode rtsp stream to rtmp
19 août 2016, par Renneras mentioned in the title, i am not able to transcode an rtsp stream to rtmp.
This is my start command :
ffmpeg -re -i "rtsp://192.168.178.70:554/?freq=466&bw=8&msys=dvbc&mtype=256qam&sr=6900&specinv=0&pids=0,16,17,18,20,116,2941,2942,2944" -vcodec libx264 -preset veryfast -maxrate 3000k -bufsize 6000k -pix_fmt yuv420p -g 50 -c:a aac -b:a 160k -ac 2 -ar 44100 -f flv "[url removed]"
The input is a stream from my AVM DVB-C Repeater . The codec seems to be mpeg2. The output is a rtmp server hosted by Wowza Streaming Engine.