
Recherche avancée
Médias (91)
-
Head down (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
Echoplex (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
Discipline (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
Letting you (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
1 000 000 (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
999 999 (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
Autres articles (64)
-
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 -
Les tâches Cron régulières de la ferme
1er décembre 2010, parLa gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
Le super Cron (gestion_mutu_super_cron)
Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...) -
Creating farms of unique websites
13 avril 2011, parMediaSPIP platforms can be installed as a farm, with a single "core" hosted on a dedicated server and used by multiple websites.
This allows (among other things) : implementation costs to be shared between several different projects / individuals rapid deployment of multiple unique sites creation of groups of like-minded sites, making it possible to browse media in a more controlled and selective environment than the major "open" (...)
Sur d’autres sites (9879)
-
FFmpeg + iOS + lossy cellular connections
9 novembre 2014, par MossI am able to play an RTMP audio + video real-time stream on iOS with FFmpeg. Works fantastic when everything is on a solid WiFi connection.
When I switch to a cellular connection (great signal strength and LTE/4G),
av_read_frame()
will intermittently block for an unacceptable amount of time. From what I can tell, it’s not that the cellular data connection just dropped, because I can reconnect immediately and start downloading more packets. In some cases, I’ve clocked 30+ seconds of hang time before it returns the next frame. When the next frame finally comes in, my real-time video stream is permanently delayed by the amount of time thatav_read_frame()
blocked.I attempted a work-around by using the
AVIOInterruptCB
interrupt callback to abortav_read_frame()
if the function takes longer than 1 second to return. Here’s what that code looks like :- (void)readPackets {
// Make sure FFmpeg calls our interrupt periodically
_context->interrupt_callback.callback = interrupt_cb;
_context->interrupt_callback.opaque = self;
dispatch_async(_readPacketQueue, ^(void) {
int err;
while(true) {
_readFrameTimeStamp = [[NSDate date] timeIntervalSince1970];
err = av_read_frame(_context, &packet);
_readFrameTimeStamp = 0;
if(err) {
// Error - Reconnect the entire stream from scratch, taking 5-10 seconds
// And we know when av_read_frame() was aborted
// because its error code is -1414092869 ("EXIT")
}
else {
// Play this audio or video packet
}
}
});
}
/**
* Interrupt
* @return 1 to abort the current operation
*/
static int interrupt_cb(void *decoder) {
if(decoder) {
if(_readFrameTimeStamp != 0) {
if([[NSDate date] timeIntervalSince1970] - _readFrameTimeStamp > 1) {
// Abort av_read_frame(), it's taking longer than 1 second
return 1;
}
}
}
}This definitely aborts
av_read_frame()
after 1 second, but unfortunately after I do this, future attempts to callav_read_frame()
result inEIO
errors (-5), which indicates that the connection has been severed.As a result, I am forced to fully reconnect the viewer, which takes 5-10 seconds. (
avformat_open_input()
takes 3-4 seconds, and then find the stream info again takes 2-3 seconds, and then start reading frames).The 5-10 second delay to fully reconnect is much better than waiting more than 10 seconds for
av_read_frame()
to unblock, and it’s much better than the real-time stream being delayed by a significant amount. But it’s much worse than being able to retry av_read_frame() immediately.From a cellular user’s perspective, their video locks up intermittently for 5-10 seconds while we reconnect the stream in the background from scratch, which isn’t a good user experience.
What strategies are there to better way to manage av_read_frame() on a lossy cellular connection ?
(Or strategies to improve the reconnect time ?) -
Issue with openh264enc gstreamer plugin and tcp connections
20 septembre 2016, par agaldosI am trying to stream over TCP encoded video into a EC2 Instance. Using "x264enc" encoder, all works correctly. I get the frames and generate the video correctly.
The issue comes when I try to use the "openh264enc" encoder.
If I put in the server "nc -l -p 5555" I can check that data is arriving into the port but when I put the pipeline goes to PREROLLING state and nothing more happens. If I cut the process in the sender, this message appears in the server :
ubuntu@ip-172-31-87-56:~$ gst-launch-1.0 -e -v tcpserversrc host=ec2-52-29-128-23.eu-central-1.compute.amazonaws.com port=5555 ! h264parse ! mpegtsmux ! filesink location=file.ts
Setting pipeline to PAUSED ...
/GstPipeline:pipeline0/GstTCPServerSrc:tcpserversrc0: current-port = 5555
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstH264Parse:h264parse0: No valid frames found before end of stream
Additional debug info:
gstbaseparse.c(1281): gst_base_parse_sink_event_default (): /GstPipeline:pipeline0/GstH264Parse:h264parse0
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
/GstPipeline:pipeline0/GstTCPServerSrc:tcpserversrc0: current-port = 0
Freeing pipeline ...Pipeline used in the EC2 Instance, the server :
gst-launch-1.0 -e -v tcpserversrc host=ec2-52-29-128-23.eu-central-1.compute.amazonaws.com port=5555 ! h264parse ! mpegtsmux ! filesink location=file.ts
Sender pipeline with x264enc :
gst-launch-1.0 -e videotestsrc horizontal-speed=5 ! x264enc ! tcpclientsink port=5555 host=52.29.128.23
Sender pipeline with openh264enc :
gst-launch-1.0 -e videotestsrc horizontal-speed=5 ! openh264enc ! tcpclientsink port=5555 host=52.29.128.23
-
doc/general : Fix entry for AMQP
19 mars 2020, par Andriy Gelman