
Recherche avancée
Autres articles (37)
-
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 (...) -
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" ; -
Le plugin : Podcasts.
14 juillet 2010, parLe problème du podcasting est à nouveau un problème révélateur de la normalisation des transports de données sur Internet.
Deux formats intéressants existent : Celui développé par Apple, très axé sur l’utilisation d’iTunes dont la SPEC est ici ; Le format "Media RSS Module" qui est plus "libre" notamment soutenu par Yahoo et le logiciel Miro ;
Types de fichiers supportés dans les flux
Le format d’Apple n’autorise que les formats suivants dans ses flux : .mp3 audio/mpeg .m4a audio/x-m4a .mp4 (...)
Sur d’autres sites (4768)
-
Raspberry Pi and FFMpeg live streaming video to backend Node.js server, but how do I deliver it to the front end ?
2 août 2023, par qwet142I'm attempting this setup to live stream video from a Raspberry Pi to a publicly available website, and from the backend server using Node.js and Express, I would like to serve it to the front end with minimal latency available to many viewers (will be hosted somewhere like Netlify to handle distribution).


WebRTC is too complex for my use case and timeframe. HLC appears to have too high a latency as I need <4s consistently. I would like to something compatible with Node.js. I am a beginner in this domain, familiar only with general programming and web development.


-
Allocate AVFrame for sws_scale()
13 mars 2020, par SlavTrying to write program which uses
libav
to extract raw pixel data ( BMP) from arbitrary video. Everything goes well exceptsws_scale()
failing to convertAVFrame
to RGB24.I formulated minimal example of it where
AVFrame
is being created and initialized with 4 different methods found on internet : https://github.com/SlavMFM/libav_bmp_example - all of them fail in different ways. How can I fix it sosws_scale()
does the convertion ? -
Libav FFv1 read_quant_table decoding errors
16 novembre 2023, par flanselI am having trouble encoding and decoding video using the 'ffv1' codec. Interestingly when the width and height are 640 or less, this works correctly, but with any "large" frame size such as 1280x720 I get the follow errors ...


[ffv1 @ 0x5612f4ab2240] read_quant_table error
[ffv1 @ 0x5612f4ab2240] Cannot decode non-keyframe without valid keyframe



Are there any options which need to be set, or am I doing something else incorrectly, I made the example very minimal, I am aware that I am not writing an image to the frame and simply allocating garbage in the buffers among other things.
Thanks in advance.


// minimal example
// ...
#define FRAMES (500)

int main(int argc, char **argv)
{
 AVCodecContext *enc, *dec;
 AVFrame *frame = av_frame_alloc();
 AVFrame *decoded_frame = av_frame_alloc();
 AVPacket *packet = av_packet_alloc();
 AVPacket *padded_packet = av_packet_alloc();

 const AVCodec *enc_codec = avcodec_find_encoder_by_name("ffv1");
 const AVCodec *dec_codec = avcodec_find_decoder_by_name("ffv1");
 enc = avcodec_alloc_context3(enc_codec);
 dec = avcodec_alloc_context3(dec_codec);

 enc->width = 1280;
 enc->height = 720;
 enc->pix_fmt = AV_PIX_FMT_YUV420P;
 enc->time_base.num = 1001;
 enc->time_base.den = 60000;

 dec->width = enc->width;
 dec->height = enc->height;

 avcodec_open2(enc, enc_codec, NULL);
 avcodec_open2(dec, dec_codec, NULL);

 frame->height = enc->height;
 frame->width = enc->width;
 frame->format = enc->pix_fmt;
 av_frame_get_buffer(frame, 32);
 printf("frame linesz %i,%i,%i\n", frame->linesize[0], frame->linesize[1], frame->linesize[2]);

 for (int i = 0; i < FRAMES; ++i)
 {
 avcodec_send_frame(enc, frame);
 while (!avcodec_receive_packet(enc, packet))
 {
 av_new_packet(padded_packet, packet->size + AV_INPUT_BUFFER_PADDING_SIZE);
 padded_packet->size -= AV_INPUT_BUFFER_PADDING_SIZE;

 memset(padded_packet->data, 0, padded_packet->size);
 memcpy(padded_packet->data, packet->data, packet->size);
 printf("frame %i encoded %i bytes\n", i, padded_packet->size);
 if (!avcodec_send_packet(dec, padded_packet))
 {
 printf("sent bytes to decoder\n");
 }
 }

 while (!avcodec_receive_frame(dec, decoded_frame))
 {
 printf("decoded frame height %i, width %i\n", decoded_frame->height, decoded_frame->width);
 }
 usleep(16000);
 }
 return 0;
}