
Recherche avancée
Autres articles (63)
-
Multilang : améliorer l’interface pour les blocs multilingues
18 février 2011, parMultilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela. -
Support de tous types de médias
10 avril 2011Contrairement à beaucoup de logiciels et autres plate-formes modernes de partage de documents, MediaSPIP a l’ambition de gérer un maximum de formats de documents différents qu’ils soient de type : images (png, gif, jpg, bmp et autres...) ; audio (MP3, Ogg, Wav et autres...) ; vidéo (Avi, MP4, Ogv, mpg, mov, wmv et autres...) ; contenu textuel, code ou autres (open office, microsoft office (tableur, présentation), web (html, css), LaTeX, Google Earth) (...)
-
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 (7535)
-
Why is ffmpeg taking up so much memory when I try to stop a livestream ?
4 juillet 2019, par FiskFan1999When the ffmpeg function is running, there are no problems with memory and everything runs smoothly. However, when I attempt to stop the stream/ffmpeg by pressing q (or ctrl-c), ffmpeg freezes, doesn’t take any other inputs, and suddenly takes up an obscene amount of memory.
I am using ffmpeg to livestream on youtube. I am using a MacBook Mid 2015 running macOS Mojave.
here is the function I am using with ffmpeg.
ffmpeg -re -f lavfi -i testsrc2=s=1280x720:r=60 -re -i "INPUT FILE.mp3" -vcodec libx264 -pix_fmt yuv420p -preset "ultrafast" -r 60 -g 120 -b:v 6168000 -filter_complex "[0]scale=1280:720;[1]aloop=start=0:size=202*44100:loop=-1" -acodec libmp3lame -ar 44100 -threads 3 -b:a 640000 -qscale:a 5 -bufsize 512k -f flv ${YOUTUBE_URL}/${KEY}
The command runs perfectly and as expected while it is running. At this point, in Activity Monitor I can see that ffmpeg seems to peak to about 101 MB. When I press q, which is the button to end the encoding, if the stream had been going for about ten minutes ffmpeg freezes and in Activity monitor the ffmpeg command appears to climb to several gigabytes of memory without any sign of stopping. The most I have noticed is about 6 GB before I killed the command. Ffmpeg seems to be writing almost a gigabyte of data into memory a second. In fact, this slows down my computer when it occurs and threatens to completely fill up my memory.
When this occurs, there are no error messages (except for warnings about running out of memory) and the terminal running ffmpeg seems to not respond to any kill commands, and the only way to alleviate the situation is to force close the terminal window itself.
I’m wondering if somehow I am creating a memory leak issue or if I wrote something wrong or didn’t include something that would be necessary for live-streaming with ffmpeg.
-
YouTube Live Broadcast silence detect
12 mai 2020, par MarkusI'm trying to monitor a YouTube live broadcast for silence to be able to restart ffmpeg broadcast. How would you achieve that without breaking the YouTube ToS ?



I tried with the YouTube API, but health.status is only supported for Live streams but not for broadcast.



I came up with the idea of youtube-dl, grabing the m3u8 and the run ffmpeg with silencedetect but now I'm somehow stuck.



Get the formats



youtube-dl --list-formats https://www.youtube.com/watch?v=BiHequcIiNw




Get the m3u8 manifest



youtube-dl -f 91 -g https://www.youtube.com/watch?v=BiHequcIiNw




Run ffprobe



ffprobe -v quiet -print_format json -show_streams https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1588936061/ei/Hem0Xp35EZLl1wLLhYaYCA/ip/2a02:1205:c6bb:4590:301f:6186:c624:f2ba/id/BiHequcIiNw.0/itag/91/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/goi/160/sgoap/gir%3Dyes%3Bitag%3D139/sgovp/gir%3Dyes%3Bitag%3D160/hls_chunk_host/r3---sn-nfpnnjvh-9and.googlevideo.com/playlist_duration/30/manifest_duration/30/vprv/1/playlist_type/DVR/initcwndbps/13630/mh/GY/mm/44/mn/sn-nfpnnjvh-9and/ms/lva/mv/m/mvi/2/pl/48/dover/11/keepalive/yes/fexp/23882513/mt/1588914375/disable_polymer/true/sparams/expire,ei,ip,id,itag,source,requiressl,ratebypass,live,goi,sgoap,sgovp,playlist_duration,manifest_duration,vprv,playlist_type/sig/AOq0QJ8wRgIhALApv3H2YEE2GLTXIyRxw8Fu8espLgRThUfhi97DIS6-AiEAsT_4bwAfsihK6zsrKgaxMYTemlAr8BXnBTwuhwe3aAE%3D/lsparams/hls_chunk_host,initcwndbps,mh,mm,mn,ms,mv,mvi,pl/lsig/AG3C_xAwRQIgRG3c1ww23Jokzk6vfAfeZlhwEanWG_9GmwRip81v65cCIQDg1Y9pXWS4bUjpKpZ90c3icp4slmAzhQJPn2gqW0UOeQ%3D%3D/playlist/index.m3u8




But I haven't found a difference in the json if the stream is up or down. Any hint how I could monitor the m3u8 if it's up or down ?


-
VLC huge buffering times over rtp for local H264 stream
15 mars 2022, par mikeI'm outputting an H264 stream, encoded by my application using ffmpeg. I can display it using
ffplay
, but when trying to view the stream in VLC, I only get the first frame, or it looks like that's the case.

The messages output shows that it is "buffering", taking around a minute to get to 100% when the frame updates.
When using
ffplay
, the latency is about 50-100ms at worst.

I am sending to
rtp://127.0.0.1:6666?pkt_size=1316
with the formatrtp_mpegts
.
I am new to this and it's highly likely I haven't set the frame up completely correctly. The process is (minus declarations and error checking)

codec_name = "libx264";
codec = avcodec_find_encoder_by_name(codec_name.c_str());
context = avcodec_alloc_context3(codec);
pkt = av_packet_alloc();
context->bit_rate = 5 * Mega;
context->width = info.DisplayWidth;
context->height = info.DisplayHeight;
context->time_base = { 1, FPS };
context->framerate = { FPS, 1 };
context->gop_size = 100;
context->max_b_frames = 1; 
context->pix_fmt = AV_PIX_FMT_YUV420P;
if (codec->id == AV_CODEC_ID_H264)
 {
 check_ret("set option: preset", av_opt_set(context->priv_data, "preset", "fast", 0));
 check_ret("set option: tune", av_opt_set(context->priv_data, "tune", "zerolatency", 0));
 check_ret("set option: profile", av_opt_set(context->priv_data, "profile", "baseline", 0)); 
 }
check_ret("open codec", avcodec_open2(context, codec, NULL));

// setup the stream 
fmt = (AVOutputFormat*)av_guess_format("rtp_mpegts", NULL, NULL);

avformat_alloc_output_context2(&avfctx, fmt, fmt->name,
 "rtp://127.0.0.1:6666?pkt_size=1316"); 
 
avio_open(&avfctx->pb, avfctx->url, AVIO_FLAG_WRITE);
AVStream* stream = avformat_new_stream(avfctx, codec);
avcodec_parameters_from_context(stream->codecpar, context);
stream->time_base.num = 1;
stream->time_base.den = FPS;
avformat_write_header(avfctx, NULL);

// then the encoding (in an output loop)
<not get="get" frame="frame" from="from" rgba="rgba" to="to" yuv="yuv">
yuvFrame->pts = i++; // i is incremented every frame
avcodec_send_frame(enc_ctx, yuvFrame);
 while (ret >= 0) {
 ret = avcodec_receive_packet(enc_ctx, pkt); 
 //ret = av_interleaved_write_frame(avfctx, pkt); was using this, don't seem to need it
 ret = av_write_frame(avfctx, pkt);
 av_packet_unref(pkt);
}
</not>


The VLC output looks like this :


main debug: using hw decoder module "d3d11va"
avcodec info: Using D3D11VA (NVIDIA GeForce RTX 2080 Super with Max-Q Design, vendor 10de(NVIDIA), device 1e93, revision a1) for hardware decoding
qt debug: Logical video size: 1280x720
main debug: resized to 1280x720
main debug: VoutDisplayEvent 'resize' 1280x720
main debug: Received first picture
main debug: Buffering 1%
main debug: Buffering 2%
main debug: Buffering 3%
main debug: auto hiding mouse cursor
main debug: Buffering 4%
main debug: Buffering 5%
main debug: Buffering 6%
main debug: Buffering 7%
main debug: Buffering 8%
main debug: Buffering 9%
main debug: Buffering 10%
main debug: auto hiding mouse cursor
main debug: Buffering 11%
rtp warning: 1 packet(s) lost
rtp warning: 1 packet(s) lost
rtp warning: 1 packet(s) lost
ts warning: discontinuity received 0x3 instead of 0xd (pid=256)
ts warning: discontinuity received 0x5 instead of 0xf (pid=256)
ts warning: discontinuity received 0x1 instead of 0xb (pid=256)
main debug: Buffering 12%
main debug: Buffering 13%
main debug: Buffering 14%
main debug: Buffering 15%
main debug: Buffering 16%
main debug: Buffering 17%
main debug: Buffering 18%
main debug: auto hiding mouse cursor
main debug: Buffering 19%
main debug: Buffering 20%