
Recherche avancée
Autres articles (40)
-
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 (...) -
HTML5 audio and video support
13 avril 2011, parMediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
For older browsers the Flowplayer flash fallback is used.
MediaSPIP allows for media playback on major mobile platforms with the above (...) -
De l’upload à la vidéo finale [version standalone]
31 janvier 2010, parLe chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
Upload et récupération d’informations de la vidéo source
Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier ; La génération d’une vignette : extraction d’une (...)
Sur d’autres sites (3560)
-
live streaming with ffmpeg after processing video
17 avril 2019, par LotfusI have input videos that are received live then processed with ffmpeg then put in output to be live streamed. Where I am stuck is below.
I am processing chunks of 10 seconds with ffmpeg in real time and I need to live stream these videos as I output them. I do not know how to proceed with ffmpeg, any clue ?
-
libx264 - Setting up AVCodecContext for HD & SD capturing
8 octobre 2013, par mooseI'm trying to configure the
AVCodecContext
properly in order to capture HD in real-time (1080i) and SD (720 x 576) - also interlaced. I'm using libx264 with the ffmpeg static lib on Windows OS.
If anybody can help withflags
,gop_size
,max_b_frames
and all other AVCodecContext's members...For example, I guess I should have
CODEC_FLAG_INTERLACED_ME | CODEC_FLAG_INTERLACED_DCT
flags set. However, what I need is the whole story on how to set all this up. -
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 ?)