
Recherche avancée
Médias (91)
-
Richard Stallman et le logiciel libre
19 octobre 2011, par
Mis à jour : Mai 2013
Langue : français
Type : Texte
-
Stereo master soundtrack
17 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Audio
-
Elephants Dream - Cover of the soundtrack
17 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Image
-
#7 Ambience
16 octobre 2011, par
Mis à jour : Juin 2015
Langue : English
Type : Audio
-
#6 Teaser Music
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#5 End Title
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
Autres articles (109)
-
Websites made with MediaSPIP
2 mai 2011, parThis page lists some websites based on MediaSPIP.
-
Des sites réalisés avec MediaSPIP
2 mai 2011, parCette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page. -
Support audio et vidéo HTML5
10 avril 2011MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)
Sur d’autres sites (13925)
-
fate : Add basic license header check
27 septembre 2015, par Michael Niedermayer -
hevc_ps : make sure failing to decode an SPS always returns an error
13 juillet 2015, par Anton Khirnov -
(C) avcodec_receive_frame (ffmpeg) function always returns AVERROR(EAGAIN)
13 avril 2021, par LevyuI was following this tutorial : http://dranger.com/ffmpeg/tutorial01.html
and was trying to change some deprecated functions, and so I had to try to use the
avcodec_send_packet
andavcodec_receive_frame
functions.

The problem I'm having is that
avcodec_receive_frame
always returnsAVERROR(EAGAIN)
.

My decoding function is as follows :


static int decode(AVCodecContext *pCodecCtx, AVFrame *pFrame, AVPacket *packet) {
 
 int ret = avcodec_send_packet(pCodecCtx, packet);
 if (ret<0) {
 fprintf(stderr, "error sending packet for decoding\n");
 exit(1);
 }

 while (ret>=0) { 
 // avcodec_receive_packet(pCodecCtx, NULL);
 ret = avcodec_receive_frame(pCodecCtx, pFrame);
 if (ret == AVERROR(EAGAIN)) {
 fprintf(stderr, "\naverror(eagain) ret = %d\n", ret);
 return -1;
 }
 else if (ret == AVERROR_EOF) {
 fprintf(stderr, "eof\n");
 return -100;
 }
 else if (ret <0) {
 fprintf(stderr, "error during decoding\n");
 exit(1);
 }
 }
 return 0;
}



Everywhere I read said that this is solved by calling
avcodec_send_packet
with the next frame, but this does not solve the problem for me because this function is being called in a loop :


 while (av_read_frame(pFormatCtx, &packet)>=0) {
 // is this a packet from the video stream?
 if (packet.stream_index==videoStream) {

 frameNotFinished = decode(pCodecCtx, pFrame, &packet);

 // did we get a video frame?
 if (!frameNotFinished) fprintf(stderr, "it worked!");
 }
 av_packet_unref(&packet); 
 }



I should probably also add that
avcodec_send_packet
always returns 0 (success).

Any help would be much appreciated.