
Recherche avancée
Autres articles (49)
-
La file d’attente de SPIPmotion
28 novembre 2010, parUne file d’attente stockée dans la base de donnée
Lors de son installation, SPIPmotion crée une nouvelle table dans la base de donnée intitulée spip_spipmotion_attentes.
Cette nouvelle table est constituée des champs suivants : id_spipmotion_attente, l’identifiant numérique unique de la tâche à traiter ; id_document, l’identifiant numérique du document original à encoder ; id_objet l’identifiant unique de l’objet auquel le document encodé devra être attaché automatiquement ; objet, le type d’objet auquel (...) -
Other interesting software
13 avril 2011, parWe don’t claim to be the only ones doing what we do ... and especially not to assert claims to be the best either ... What we do, we just try to do it well and getting better ...
The following list represents softwares that tend to be more or less as MediaSPIP or that MediaSPIP tries more or less to do the same, whatever ...
We don’t know them, we didn’t try them, but you can take a peek.
Videopress
Website : http://videopress.com/
License : GNU/GPL v2
Source code : (...) -
Personnaliser en ajoutant son logo, sa bannière ou son image de fond
5 septembre 2013, parCertains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;
Sur d’autres sites (5515)
-
Setting up RTP on Nginx
2 février 2021, par SwapI'm trying to use Janus Media Server to relay WebRTC streams to a particular RTP host/port, from where ffmpeg can pick it up as an input and convert it further to an rtmp stream, which can then be used to broadcast to various social media platforms (such as, YouTube, Twitch, Facebook, etc.)


My inspiration for this has been the following blog - https://www.meetecho.com/blog/firefox-webrtc-youtube-kinda/


Specifically, I'm trying to replicate the following architecture -




And Janus, as per their documentation, has a very neat API for doing it -


{
 "request" : "rtp_forward",
 "room" : <unique numeric="numeric" of="of" the="the" room="room" publisher="publisher" is="is" in="in">,
 "publisher_id" : <unique numeric="numeric" of="of" the="the" publisher="publisher" to="to" relay="relay" externally="externally">,
 "host" : "<host address="address" to="to" forward="forward" the="the" rtp="rtp" and="and" packets="packets">",
 "host_family" : "",
 "audio_port" : <port to="to" forward="forward" the="the" audio="audio" rtp="rtp" packets="packets">,
 "audio_ssrc" : <audio ssrc="ssrc" to="to" use="use" when="when" optional="optional">,
 "audio_pt" : <audio payload="payload" type="type" to="to" use="use" when="when" optional="optional">,
 "audio_rtcp_port" : <port to="to" contact="contact" receive="receive" audio="audio" rtcp="rtcp" feedback="feedback" from="from" the="the" and="and" currently="currently" unused="unused" for="for">,
 "video_port" : <port to="to" forward="forward" the="the" video="video" rtp="rtp" packets="packets">,
 "video_ssrc" : <video ssrc="ssrc" to="to" use="use" when="when" optional="optional">,
 "video_pt" : <video payload="payload" type="type" to="to" use="use" when="when" optional="optional">,
 "video_rtcp_port" : <port to="to" contact="contact" receive="receive" video="video" rtcp="rtcp" feedback="feedback" from="from" the="the" optional="optional">,
 "simulcast" : ,
 "video_port_2" : <if simulcasting="simulcasting" and="and" forwarding="forwarding" each="each" port="port" to="to" forward="forward" the="the" video="video" rtp="rtp" packets="packets" from="from" second="second" substream="substream"></if>layer to>,
 "video_ssrc_2" : <if simulcasting="simulcasting" and="and" forwarding="forwarding" each="each" video="video" ssrc="ssrc" to="to" use="use" the="the" second="second" substream="substream"></if>layer; optional>,
 "video_pt_2" : <if simulcasting="simulcasting" and="and" forwarding="forwarding" each="each" video="video" payload="payload" type="type" to="to" use="use" the="the" second="second" substream="substream"></if>layer; optional>,
 "video_port_3" : <if simulcasting="simulcasting" and="and" forwarding="forwarding" each="each" port="port" to="to" forward="forward" the="the" video="video" rtp="rtp" packets="packets" from="from" third="third" substream="substream"></if>layer to>,
 "video_ssrc_3" : <if simulcasting="simulcasting" and="and" forwarding="forwarding" each="each" video="video" ssrc="ssrc" to="to" use="use" the="the" third="third" substream="substream"></if>layer; optional>,
 "video_pt_3" : <if simulcasting="simulcasting" and="and" forwarding="forwarding" each="each" video="video" payload="payload" type="type" to="to" use="use" the="the" third="third" substream="substream"></if>layer; optional>,
 "data_port" : <port to="to" forward="forward" the="the" messages="messages">,
 "srtp_suite" : <length of="of" authentication="authentication" tag="tag" or="or" optional="optional">,
 "srtp_crypto" : "<key to="to" use="use" as="as" crypto="crypto" encoded="encoded" key="key" in="in" optional="optional">"
}
</key></length></port></port></video></video></port></port></audio></audio></port></host></unique></unique>


For this, I've setup a Nginx server, where I've also installed Janus and everything's been running smoothly so far. But I'm quite clueless as to how to setup my Nginx server so that it accepts RTP connections (which will be forwarded as RTMP using ffmpeg).


Please guide me to any relevant resources that would help me achieve this. Thanks in advance !


-
Q&A : An interview with Matomo founder, Matthieu Aubry
-
ffmpeg issue when using it from kurento to rtmp stream
15 juillet 2020, par MaxiI successfully managed to connect ffmpeg with an RTP endpoint of my kurento server. On many tries before I got a "Connection timed out" due my docker configuration. In my docker logs I see following now after RTP endpoint creation and starting ffmpeg :


streamy-server_1 | 2020-07-15 08:30:20.397 INFO 49 --- [nio-8080-exec-1] net.bramp.ffmpeg.RunProcessFunction : ffmpeg -y -v error -protocol_whitelist file,http,https,tcp,tls,udp,rtp -rtbufsize 1500M -re -i /tmp/test.sdp -f flv -vcodec libx264 -pix_fmt yuv420p -s 640x480 -r 20/1 -b:v 1000000 -acodec libmp3lame -ar 44100 -b:a 1000000 -bufsize 4000k -maxrate 1000k -profile:v baseline -deinterlace -preset medium -g 60 -r 30 rtmps://live-api-s.facebook.com:443/rtmp/3163232097002611?xyz
streamy-server_1 | [h264 @ 0x56538aeae0a0] non-existing PPS 0 referenced
streamy-server_1 | Last message repeated 1 times
streamy-server_1 | [h264 @ 0x56538aeae0a0] decode_slice_header error
streamy-server_1 | [h264 @ 0x56538aeae0a0] no frame!
streamy-server_1 | [h264 @ 0x56538aeae0a0] non-existing PPS 0 referenced
streamy-server_1 | Last message repeated 1 times
streamy-server_1 | [h264 @ 0x56538aeae0a0] decode_slice_header error
streamy-server_1 | [h264 @ 0x56538aeae0a0] no frame!
streamy-server_1 | [h264 @ 0x56538aeae0a0] non-existing PPS 0 referenced
streamy-server_1 | Last message repeated 1 times
streamy-server_1 | [h264 @ 0x56538aeae0a0] decode_slice_header error
streamy-server_1 | [h264 @ 0x56538aeae0a0] no frame!
streamy-server_1 | [h264 @ 0x56538aeae0a0] non-existing PPS 0 referenced
streamy-server_1 | Last message repeated 1 times
streamy-server_1 | [h264 @ 0x56538aeae0a0] decode_slice_header error
streamy-server_1 | [h264 @ 0x56538aeae0a0] no frame!
streamy-server_1 | [h264 @ 0x56538aeae0a0] non-existing PPS 0 referenced
streamy-server_1 | Last message repeated 1 times
[...] (this is repeated for the next ~20-30 seconds, then continues with:)
kurento_1 | 0:03:00.152967182 1 0x7faa58093b30 INFO KurentoWebSocketTransport WebSocketTransport.cpp:296:keepAliveSessions: Keep alive 998a9271-615e-490c-acce-6bc22d9592f7
streamy-server_1 | Too many packets buffered for output stream 0:0.
streamy-server_1 | 2020-07-15 08:30:38.361 ERROR 49 --- [nio-8080-exec-1] c.maximummgt.streamy.WebsocketsHandler : Unknown error while websockets session
streamy-server_1 | 
streamy-server_1 | java.lang.RuntimeException: java.io.IOException: ffmpeg returned non-zero exit status. Check stdout.
streamy-server_1 | at net.bramp.ffmpeg.job.SinglePassFFmpegJob.run(SinglePassFFmpegJob.java:46) ~[ffmpeg-0.6.2.jar:0.6.2]



At facebook live it does not receive the video stream. In log I just see this message :


Facebook has not received video signal from the video source for some time. Check that the connectivity between the video source and Facebook is sufficient for the source resolution and bitrate. Check your video encoder logs for details. If problems persist, consider improving connection quality or reducing the bitrate of your video source.


On Kurento Java code I am doing following :


- 

-
Create an RTP endpoint


-
Connect it with the video source from the user


-
Create an SDP offer and save it to a file (currently /tmp/test.sdp)


-
Process SDP offer with the RTP endpoint


-
Start the ffmpeg process with (
net.bramp.ffmpeg.builder.FFmpegBuilder
) :

FFmpegBuilder builder = new FFmpegBuilder()
.addExtraArgs("-protocol_whitelist", "file,http,https,tcp,tls,udp,rtp")
.addExtraArgs("-rtbufsize", "1500M")
.addExtraArgs("-re")
.setInput("/tmp/test.sdp")
.addOutput(rtmpURL)
.setFormat("flv")
.addExtraArgs("-bufsize", "4000k")
.addExtraArgs("-maxrate", "1000k")
.setAudioCodec("libmp3lame")
.setAudioSampleRate(FFmpeg.AUDIO_SAMPLE_44100)
.setAudioBitRate(1_000_000)
.addExtraArgs("-profile:v", "baseline")
.setVideoCodec("libx264")
.setVideoPixelFormat("yuv420p")
.setVideoResolution(width, height)
.setVideoBitRate(1_000_000)
.setVideoFrameRate(20)
.addExtraArgs("-deinterlace")
.addExtraArgs("-preset", "medium")
.addExtraArgs("-g", "60")
.addExtraArgs("-r", "30")
.done();

FFmpegExecutor executor = new FFmpegExecutor(ffmpeg, ffprobe);
executor.createJob(builder).run();
















Can somebody guide here on this issue ? Thanks in advance


EDIT 01 : I disabled now


// FFmpegExecutor executor = new FFmpegExecutor(ffmpeg, ffprobe);
// executor.createJob(builder).run();



so that ffmpeg does not start automatically. After java created the test.sdp, I ran ffmpeg by myself in the console not to stream to facebook but to a mp4 :


ffmpeg -loglevel debug -protocol_whitelist file,crypto,udp,rtp -re -vcodec libvpx -acodec opus -i /tmp/test.sdp -vcodec libx264 -acodec aac -y output.mp4


The output looks as following - I interrupted it after 25s with CTRL + C


root@app:/var/www# ffmpeg -loglevel debug -protocol_whitelist file,crypto,udp,rtp -re -vcodec libvpx -acodec opus -i /tmp/test.sdp -vcodec libx264 -acodec aac -y output.mp4
ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
 built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
 configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
 libavutil 55. 78.100 / 55. 78.100
 libavcodec 57.107.100 / 57.107.100
 libavformat 57. 83.100 / 57. 83.100
 libavdevice 57. 10.100 / 57. 10.100
 libavfilter 6.107.100 / 6.107.100
 libavresample 3. 7. 0 / 3. 7. 0
 libswscale 4. 8.100 / 4. 8.100
 libswresample 2. 9.100 / 2. 9.100
 libpostproc 54. 7.100 / 54. 7.100
Splitting the commandline.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'debug'.
Reading option '-protocol_whitelist' ... matched as AVOption 'protocol_whitelist' with argument 'file,crypto,udp,rtp'.
Reading option '-re' ... matched as option 're' (read input at native frame rate) with argument '1'.
Reading option '-vcodec' ... matched as option 'vcodec' (force video codec ('copy' to copy stream)) with argument 'libvpx'.
Reading option '-acodec' ... matched as option 'acodec' (force audio codec ('copy' to copy stream)) with argument 'opus'.
Reading option '-i' ... matched as input url with argument '/tmp/test.sdp'.
Reading option '-vcodec' ... matched as option 'vcodec' (force video codec ('copy' to copy stream)) with argument 'libx264'.
Reading option '-acodec' ... matched as option 'acodec' (force audio codec ('copy' to copy stream)) with argument 'aac'.
Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
Reading option 'output.mp4' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option loglevel (set logging level) with argument debug.
Applying option y (overwrite output files) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input url /tmp/test.sdp.
Applying option re (read input at native frame rate) with argument 1.
Applying option vcodec (force video codec ('copy' to copy stream)) with argument libvpx.
Applying option acodec (force audio codec ('copy' to copy stream)) with argument opus.
Successfully parsed a group of options.
Opening an input file: /tmp/test.sdp.
[NULL @ 0x55c2344e6a00] Opening '/tmp/test.sdp' for reading
[sdp @ 0x55c2344e6a00] Format sdp probed with size=2048 and score=50
[sdp @ 0x55c2344e6a00] audio codec set to: pcm_mulaw
[sdp @ 0x55c2344e6a00] audio samplerate set to: 44000
[sdp @ 0x55c2344e6a00] audio channels set to: 1
[sdp @ 0x55c2344e6a00] video codec set to: h264
[sdp @ 0x55c2344e6a00] RTP Packetization Mode: 1
[udp @ 0x55c2344e90c0] end receive buffer size reported is 131072
[udp @ 0x55c2344e9320] end receive buffer size reported is 131072
[sdp @ 0x55c2344e6a00] setting jitter buffer size to 500
[udp @ 0x55c2344ea0a0] end receive buffer size reported is 131072
[udp @ 0x55c2344ea180] end receive buffer size reported is 131072
[sdp @ 0x55c2344e6a00] setting jitter buffer size to 500
[sdp @ 0x55c2344e6a00] Before avformat_find_stream_info() pos: 305 bytes read:305 seeks:0 nb_streams:2
[libvpx @ 0x55c2344eeb80] v1.7.0
[libvpx @ 0x55c2344eeb80] --prefix=/usr --enable-pic --enable-shared --disable-install-bins --disable-install-srcs --size-limit=16384x16384 --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --target=x86_64-linux-gcc
[libvpx @ 0x55c2344eeb80] Invalid sync code e06101.
[libvpx @ 0x55c2344eeb80] Failed to decode frame: Bitstream not supported by this decoder
[libvpx @ 0x55c2344eeb80] Invalid sync code e06101.
[libvpx @ 0x55c2344eeb80] Failed to decode frame: Bitstream not supported by this decoder
 Last message repeated 1 times
[libvpx @ 0x55c2344eeb80] Invalid sync code e06101.
[libvpx @ 0x55c2344eeb80] Failed to decode frame: Bitstream not supported by this decoder
[sdp @ 0x55c2344e6a00] Non-increasing DTS in stream 1: packet 3 with DTS 5940, packet 4 with DTS 5940
[...]
[sdp @ 0x55c2344e6a00] Non-increasing DTS in stream 1: packet 956 with DTS 2027726, packet 957 with DTS 2027726
[libvpx @ 0x55c2344eeb80] Failed to decode frame: Bitstream not supported by this decoder
[libvpx @ 0x55c2344eeb80] Invalid sync code e06101.
[libvpx @ 0x55c2344eeb80] Failed to decode frame: Bitstream not supported by this decoder
[libvpx @ 0x55c2344eeb80] Invalid sync code e06101.
[libvpx @ 0x55c2344eeb80] Failed to decode frame: Bitstream not supported by this decoder
[libvpx @ 0x55c2344eeb80] Invalid sync code e06101.
[libvpx @ 0x55c2344eeb80] Failed to decode frame: Bitstream not supported by this decoder
[libvpx @ 0x55c2344eeb80] Invalid sync code 4a3bd8.
[sdp @ 0x55c2344e6a00] Non-increasing DTS in stream 1: packet 960 with DTS 2036690, packet 961 with DTS 2036690
[libvpx @ 0x55c2344eeb80] Failed to decode frame: Bitstream not supported by this decoder
[sdp @ 0x55c2344e6a00] interrupted
[sdp @ 0x55c2344e6a00] decoding for stream 1 failed
[sdp @ 0x55c2344e6a00] rfps: 30.000000 0.000926
[sdp @ 0x55c2344e6a00] rfps: 60.000000 0.003706
[sdp @ 0x55c2344e6a00] rfps: 120.000000 0.014824
[sdp @ 0x55c2344e6a00] Setting avg frame rate based on r frame rate
[sdp @ 0x55c2344e6a00] Could not find codec parameters for stream 1 (Video: vp8 (libvpx), 1 reference frame, none(progressive)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[sdp @ 0x55c2344e6a00] After avformat_find_stream_info() pos: 305 bytes read:305 seeks:0 frames:962
Input #0, sdp, from '/tmp/test.sdp':
 Metadata:
 title : KMS
 Duration: N/A, start: 0.033000, bitrate: N/A
 Stream #0:0, 0, 1/44000: Audio: opus, 48000 Hz, mono, fltp
 Stream #0:1, 962, 1/90000: Video: vp8, 1 reference frame, none(progressive), 30 fps, 30 tbr, 90k tbn, 90k tbc
Successfully opened the file.
Parsing a group of options: output url output.mp4.
Applying option vcodec (force video codec ('copy' to copy stream)) with argument libx264.
Applying option acodec (force audio codec ('copy' to copy stream)) with argument aac.
Successfully parsed a group of options.
Opening an output file: output.mp4.
[file @ 0x55c234563320] Setting default whitelist 'file,crypto'
Successfully opened the file.
[libvpx @ 0x55c2344eb0e0] v1.7.0
[libvpx @ 0x55c2344eb0e0] --prefix=/usr --enable-pic --enable-shared --disable-install-bins --disable-install-srcs --size-limit=16384x16384 --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --target=x86_64-linux-gcc
Stream mapping:
 Stream #0:1 -> #0:0 (vp8 (libvpx) -> h264 (libx264))
 Stream #0:0 -> #0:1 (opus (native) -> aac (native))
Press [q] to stop, [?] for help
Finishing stream 0:0 without any data written to it.
Finishing stream 0:1 without any data written to it.
detected 2 logical cores
[graph_1_in_0_0 @ 0x55c234561360] Setting 'time_base' to value '1/48000'
[graph_1_in_0_0 @ 0x55c234561360] Setting 'sample_rate' to value '48000'
[graph_1_in_0_0 @ 0x55c234561360] Setting 'sample_fmt' to value 'fltp'
[graph_1_in_0_0 @ 0x55c234561360] Setting 'channel_layout' to value '0x4'
[graph_1_in_0_0 @ 0x55c234561360] tb:1/48000 samplefmt:fltp samplerate:48000 chlayout:0x4
[format_out_0_1 @ 0x55c2345611e0] Setting 'sample_fmts' to value 'fltp'
[format_out_0_1 @ 0x55c2345611e0] Setting 'sample_rates' to value '96000|88200|64000|48000|44100|32000|24000|22050|16000|12000|11025|8000|7350'
[AVFilterGraph @ 0x55c234560620] query_formats: 4 queried, 9 merged, 0 already done, 0 delayed
Nothing was written into output file 0 (output.mp4), because at least one of its streams received no packets.
frame= 0 fps=0.0 q=0.0 Lsize= 0kB time=-577014:32:22.77 bitrate= -0.0kbits/s speed=N/A
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Input file #0 (/tmp/test.sdp):
 Input stream #0:0 (audio): 0 packets read (0 bytes); 0 frames decoded (0 samples);
 Input stream #0:1 (video): 0 packets read (0 bytes); 0 frames decoded;
 Total: 0 packets (0 bytes) demuxed
Output file #0 (output.mp4):
 Output stream #0:0 (video): 0 frames encoded; 0 packets muxed (0 bytes);
 Output stream #0:1 (audio): 0 frames encoded (0 samples); 0 packets muxed (0 bytes);
 Total: 0 packets (0 bytes) muxed
0 frames successfully decoded, 0 decoding errors
[AVIOContext @ 0x55c234563420] Statistics: 0 seeks, 0 writeouts
[aac @ 0x55c23458bea0] Qavg: -nan
[AVIOContext @ 0x55c2344ef6e0] Statistics: 305 bytes read, 0 seeks
Exiting normally, received signal 2.
root@app:/var/www# ls -lt
total 72
-rw-r--r-- 1 root root 0 Jul 15 09:12 output.mp4



-