
Recherche avancée
Autres articles (35)
-
Publier sur MédiaSpip
13 juin 2013Puis-je poster des contenus à partir d’une tablette Ipad ?
Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir -
Librairies et binaires spécifiques au traitement vidéo et sonore
31 janvier 2010, parLes logiciels et librairies suivantes sont utilisées par SPIPmotion d’une manière ou d’une autre.
Binaires obligatoires FFMpeg : encodeur principal, permet de transcoder presque tous les types de fichiers vidéo et sonores dans les formats lisibles sur Internet. CF ce tutoriel pour son installation ; Oggz-tools : outils d’inspection de fichiers ogg ; Mediainfo : récupération d’informations depuis la plupart des formats vidéos et sonores ;
Binaires complémentaires et facultatifs flvtool2 : (...) -
Support audio et vidéo HTML5
10 avril 2011MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)
Sur d’autres sites (6589)
-
how to use the pts in ffmpeg
11 octobre 2023, par AllanI have a library with can provide video data and PTS. The library head file Like this:



/**
 * \brief Write mirror video H.264 frame to player.
 * \param p_src Pointer to source buffer.
 * \param size H.264 frame size. (unit: byte)
 * \param ptsValue PTS value.
 * \return Copied size. (unit: byte)
 */
int (*WriteMirrorVideoData)(const std::string& ip, const void *p_src, int size, double ptsValue);




As you see, the library give me video frame buffer address and PTS.



I use FFMpeg to decode video data correctly.



My question is how to control the display time by ptsValue which provided by library.



Did I need to set the ptsValue to AVFrame ? then FFMPeg can control the display time itself.
Or I need to control the display by my own code ?



I am a newer to FFMpeg. please help me. Thank you very much !


-
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 !


-
Cannot open connection tcp ://localhost:1935 when to set up custom RTMP stream server
8 janvier 2021, par showkeyMy simple network is as following :


192.168.31.52 is my local pc 
192.168.31.251 is an ip camera.



I can open the stream
rtsp://192.168.31.251/cam/realmonitor?channel=1&subtype=0
with SMPlayer.

Build my nginx for customizing RTMP stream this way.

sudo apt update
sudo apt install build-essential git
sudo apt install libpcre3-dev libssl-dev zlib1g-dev 
git clone https://github.com/arut/nginx-rtmp-module.git
git clone https://github.com/nginx/nginx.git
cd nginx
./auto/configure --add-module=../nginx-rtmp-module
make
sudo make install



Set config file for nginx :


sudo vim /usr/local/nginx/conf/nginx.conf
rtmp { 
 server { 
 listen 1935; 
 application live { 
 live on; 
 interleave on;
 
 hls on; 
 hls_path /tmp/hls; 
 hls_fragment 15s; 
 } 
 } 
} 



Then set permission for nginx :


mkdir /tmp/hls
sudo chmod -R 755 /tmp/hls
sudo chown -R www-data:www-data /tmp/hls



Edit index.html in
/tmp/hls
.

<p>test for nginx</p>



Both
127.0.0.1/index.html
and192.168.31.52/index.html
can open the/tmp/hls/index.html
.

Now open port 1935 on my network :


sudo firewall-cmd --zone=public --add-port=1935/tcp --permanent
sudo firewall-cmd --reload 
sudo firewall-cmd --list-ports | grep 1935
1935/tcp



Start nginx :


sudo systemctl start nginx



Up stream the rtsp stream from ip camera—192.168.31.251 to local pc —192.168.31.52.


input="rtsp://192.168.31.251/cam/realmonitor?channel=1&subtype=0"
output="rtmp://192.168.31.52:1935/live/sample"
ffmpeg -i $input -acodec aac -strict experimental -ar 44100 -ac 2 -b:a 96k -r 25 -b:v 500k -s 640*480 -f flv $output



It encounter the following errors :


[tcp @ 0x59fb700] Connection to tcp://192.168.31.52:1935 failed: Connection refused
[rtmp @ 0x59fc5c0] Cannot open connection tcp://192.168.31.52:1935
rtmp://192.168.31.52:1935/live/sample: Connection refused



To keep the issue simple,i replace
$input
with a mp4 file in local pc,same error info.

How can fix it ?

Ping my machine :

ping 192.168.31.52
PING 192.168.31.52 (192.168.31.52): 56 data bytes
64 bytes from 192.168.31.52: icmp_seq=0 ttl=64 time=0.108 ms
64 bytes from 192.168.31.52: icmp_seq=1 ttl=64 time=0.107 ms
64 bytes from 192.168.31.52: icmp_seq=2 ttl=64 time=0.111 ms



Why the port 1935 not opened,i had restarted nginx after setting ?


sudo lsof -i:1935
#nothing in the output
netstat -ltn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State 
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:51413 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 
tcp 0 0 127.0.0.1:1080 0.0.0.0:* LISTEN 
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 
tcp 0 0 127.0.0.1:8123 0.0.0.0:* LISTEN 
tcp 0 0 127.0.0.1:8384 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:9091 0.0.0.0:* LISTEN 
tcp6 0 0 :::3306 :::* LISTEN 
tcp6 0 0 :::80 :::* LISTEN 
tcp6 0 0 :::22000 :::* LISTEN 
tcp6 0 0 :::51413 :::* LISTEN 
tcp6 0 0 :::21 :::* LISTEN 
tcp6 0 0 :::22 :::* LISTEN 
tcp6 0 0 ::1:25 :::* LISTEN 
tcp6 0 0 :::2681 :::* LISTEN 



Firewall command can't work :


sudo firewall-cmd --zone=public --add-port=1935/tcp --permanent
sudo firewall-cmd --reload 



My nginx version :


sudo nginx -v
nginx version: nginx/1.10.3