
Recherche avancée
Autres articles (101)
-
Emballe médias : à quoi cela sert ?
4 février 2011, parCe plugin vise à gérer des sites de mise en ligne de documents de tous types.
Il crée des "médias", à savoir : un "média" est un article au sens SPIP créé automatiquement lors du téléversement d’un document qu’il soit audio, vidéo, image ou textuel ; un seul document ne peut être lié à un article dit "média" ; -
Les vidéos
21 avril 2011, parComme les documents de type "audio", Mediaspip affiche dans la mesure du possible les vidéos grâce à la balise html5 .
Un des inconvénients de cette balise est qu’elle n’est pas reconnue correctement par certains navigateurs (Internet Explorer pour ne pas le nommer) et que chaque navigateur ne gère en natif que certains formats de vidéos.
Son avantage principal quant à lui est de bénéficier de la prise en charge native de vidéos dans les navigateur et donc de se passer de l’utilisation de Flash et (...) -
Contribute to translation
13 avril 2011You can help us to improve the language used in the software interface to make MediaSPIP more accessible and user-friendly. You can also translate the interface into any language that allows it to spread to new linguistic communities.
To do this, we use the translation interface of SPIP where the all the language modules of MediaSPIP are available. Just subscribe to the mailing list and request further informantion on translation.
MediaSPIP is currently available in French and English (...)
Sur d’autres sites (7999)
-
ffmpeg avformat_open_input() function causes memory leak when receiving live stream
12 septembre 2023, par george_dI have live streams (can be UDP or HLS, video codec is H264), from which I grab frames for further processing.


For this purpose, I use ffmpeg + nvjpeg + cuda libraries.


However I noticed memory leak - memory usage periodically (every 10-20 seconds) is increased by 100-400 KB, the amount and period may vary.


After disabling pieces of code one by one, I realized that it is
avformat_open_input()
which causes memory leak.

No matter which buffer settings (https://ffmpeg.org/ffmpeg-protocols.html#udp) I choose for UDP, the leak still persists. Same goes for HLS streams.


I tried to find anything related to this problem, but all the sources I found claimed that this problem took place in the past and has been fixed.


Is there some mysterious setting I am missing, so that memory could be freed properly ?


Or is this memory supposed to be freed when processing frames (i.e. using
av_read_frame()
andav_packet_unref()
, etc) ?

Minimal example of code to reproduce the problem :


avformat_example.cpp


#include 
extern "C" {
 #include <libavformat></libavformat>avformat.h>
 #include <libavcodec></libavcodec>avcodec.h>
}

int main(int argc, char *argv[]){
 if (argc < 2) {
 return 1;
 }

 char* inputSource = argv[1];
 AVFormatContext *ctx = NULL;

 if (avformat_open_input(&ctx, inputSource, NULL, NULL) != 0) {
 av_log(NULL,
 AV_LOG_ERROR,
 "Cannot open '%s'",
 inputSource);
 return 1;
 }

 /*
 This loop is placed here to demonstrate
 avformat_open_input() causing leak.
 Actually, instead of noop loop there is logic of getting and processing frames,
 but it doesn't matter now.
 As loop goes on, the amount of leaked memory increases.
 */
 while(true) {
 sleep(1);
 }

 return 0;
}



Compile with :


g++ avformat_example.cpp -lavcodec -lavutil -lavformat -I/usr/include/ffmpeg-cuda -o avformat_open_input_example



Run :


./avformat_open_input_example "udp://127.0.0.1:5000?reuse=1&pkt_size=1316&buffer_size=1310720&fifo_size=40000"



Version of ffmpeg underlying libraries :


libavutil 58. 7.100 / 58. 7.100
libavcodec 60. 11.100 / 60. 11.100
libavformat 60. 5.100 / 60. 5.100
libavdevice 60. 2.100 / 60. 2.100
libavfilter 9. 8.100 / 9. 8.100
libswscale 7. 2.100 / 7. 2.100
libswresample 4. 11.100 / 4. 11.100



-
FFmpeg - ducking music for voiceover (sidechain)
7 décembre 2023, par kaushalI am trying to duck the background music from a voiceover input file using FFmpeg (I tried doing this using pydub with no success).


The below command is predominantly working, except that it is truncating my background music file (main.mp3, over 3 min long) to the length of the voiceover file (taekwondo.mp3, about a min long). Any idea or suggestion on what can I change in below command so that the output file is full 3 min long, with background music ducked when the voiceover is playing. Once the voiceover completes, background music continues to play as normal.


In below complex filter, this is what I'm doing :
adelay filter : to start voiceover playing after 5 seconds into background music
volume filter : Since my background music is too loud and voiceover is too low, I'm increasing voiceover volume by 1.5 times, and lowering background music volume to 0.7 times
sidechaincompress filter : Then I'm applying sidechain filter to duck background music whenever voiceover is playing, with usual threshold, ratio & release filters


I've tried both amix & amerge, but results in same behaviour.


ffmpeg -i main.mp3 -i taekwondo.mp3 -filter_complex "[1:a]adelay=5000|5000,volume=1.5[a];[0:a]volume=0.7[b];[a]asplit=2[sc][mix];[b][sc]sidechaincompress=threshold=0.05:ratio=20:level_sc=1:release=500:attack=1[compr];[compr][mix]amix" output.mp3



-
ts video via UDP from ffmpeg to gstreamer [closed]
23 janvier 2024, par aron.hHardware : Jetson AGX ORIN
Software : Jetpack 5.0.2


I have been attempting to send a video file locally via UDP using ffmpeg :


ffmpeg -stream_loop -1 -re -i test.ts -map 0 -c copy -preset ultrafast -f mpegts "udp://127.0.0.1:5000"


And receiving the same stream via UDP using gstreamer :


gst-launch-1.0 udpsrc port=5000 ! application/x-rtp, media=video, clock-rate=90000, encoding-name=H264 ! rtph264depay ! decodebin ! videoconvert ! aasink


But I get an error on the receiving gstreamer end :


/GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0: Could not decode stream.
Additional debug info:
gstrtpbasedepayload.c(505): gst_rtp_base_depayload_handle_buffer (): 
/GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0:
Received invalid RTP payload, dropping
ERROR: from element /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0:
The stream is in the wrong format.
Additional debug info:
gstrtph264depay.c(1298): gst_rtp_h264_depay_process ():
/GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0:
NAL unit type 27 not supported yet



More detailed information on the video file :


Original ID: 1002
Codec: H264 - MPEG-4 AVC (part 10) (h264)
Type: Video
Video resolution: 1920x1080
Buffer dimensions: 1920x1088
Frame rate: 30
Decoded format: 
Orientation: Top left
Chroma location: left



When I listen with the command
gst-launch-1.0 -v udpsrc port=5000 ! fakesink dump=1
, it is quite apparent that the packets from FFMPEG are being received.
I am not sure why gstreamer's rtph264depay says the stream is in the wrong format.

Would I have to check some details on the FFMPEG side ?
This is what information FFMPEG shows by default while running.


Input #0, mpegts, from 'test.ts':
 Duration: 00:00:57.36, start: 20902.827056, bitrate: 2504 kb/s
 Program 1
 Stream #0:0[0x3ea]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Output #0, mpegts, to 'udp://127.0.0.1:5000':
 Metadata:
 encoder : Lavf58.29.100
 Stream #0:0: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 29.97 fps, 29.97 tbr, 90k tbn, 90k tbc
Stream mapping:
 Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
frame= 611 fps= 30 q=-1.0 Lsize= 5847kB time=00:00:20.62 bitrate=2323.0kbits/s speed= 1x
video:5350kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 9.301388%



Any advice would be appreciated.