
Recherche avancée
Médias (91)
-
Spitfire Parade - Crisis
15 mai 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Wired NextMusic
14 mai 2011, par
Mis à jour : Février 2012
Langue : English
Type : Video
-
Video d’abeille en portrait
14 mai 2011, par
Mis à jour : Février 2012
Langue : français
Type : Video
-
Sintel MP4 Surround 5.1 Full
13 mai 2011, par
Mis à jour : Février 2012
Langue : English
Type : Video
-
Carte de Schillerkiez
13 mai 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Texte
-
Publier une image simplement
13 avril 2011, par ,
Mis à jour : Février 2012
Langue : français
Type : Video
Autres articles (56)
-
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 -
Initialisation de MediaSPIP (préconfiguration)
20 février 2010, parLors de l’installation de MediaSPIP, celui-ci est préconfiguré pour les usages les plus fréquents.
Cette préconfiguration est réalisée par un plugin activé par défaut et non désactivable appelé MediaSPIP Init.
Ce plugin sert à préconfigurer de manière correcte chaque instance de MediaSPIP. Il doit donc être placé dans le dossier plugins-dist/ du site ou de la ferme pour être installé par défaut avant de pouvoir utiliser le site.
Dans un premier temps il active ou désactive des options de SPIP qui ne le (...) -
La sauvegarde automatique de canaux SPIP
1er avril 2010, parDans le cadre de la mise en place d’une plateforme ouverte, il est important pour les hébergeurs de pouvoir disposer de sauvegardes assez régulières pour parer à tout problème éventuel.
Pour réaliser cette tâche on se base sur deux plugins SPIP : Saveauto qui permet une sauvegarde régulière de la base de donnée sous la forme d’un dump mysql (utilisable dans phpmyadmin) mes_fichiers_2 qui permet de réaliser une archive au format zip des données importantes du site (les documents, les éléments (...)
Sur d’autres sites (9901)
-
av_read_frame() in ffmpeg returns -5 while receiving UDP data [closed]
26 février 2024, par zttangI'm working on an app which is using ffmpeg lib. There is a living source keep sending TS stream thru udp. Then I allocated a thread use ffmpeg receive the TS packets. the code for this thread is like :


void* av_source_thread(void *data) {
 char udp_url[50];
 snprintf(udp_url, sizeof(udp_url), "udp://127.0.0.1:12345");
 AVDictionary* options = NULL;
 av_dict_set(&options, "timeout", "500000", 0); // timeout=0.5s
 av_dict_set(&options, "overrun_nonfatal", "1", 0);
 av_dict_set(&options, "fifo_size", "278876", 0); //50MB

 AVFormatContext *ffmpeg_source = avformat_alloc_context();
 while (running) {
 if (avformat_open_input(&ffmpeg_source, udp_url, NULL, &options) != 0) {
 continue;
 } else {
 break;
 }
 }
 // Some code fill codec type and alloc context here

 av_format_inject_global_side_data(ffmpeg_source);
 AVPacket *packet = av_packet_alloc();
 while (running) {
 ret = av_read_frame(ffmpeg_source, packet);
 if (ret < 0) {
 char errbuf[AV_ERROR_MAX_STRING_SIZE];
 av_strerror(ret, errbuf, AV_ERROR_MAX_STRING_SIZE);
 usleep(10000);
 log("av_read_frame failed, Exit, %s, %d", errbuf, ret);
 continue;
 }
 putPkt2Q(packet); 
 }
 av_packet_free(&packet);
 avformat_close_input(&ffmpeg_source);
 av_dict_free(&options);
 return nullptr;
}



Then the packets will be sent to Q and other thread will process them. but when I run the program, the av_read_frame will return -5(I/O error) from time to time. and once it returned -5, it can not recover unless I restart this thread.


since this is a real time source, so lost some frames are acceptable, I just want to know how to avoid this kind of issue or how to recover without restart the whole thread. I tried to increase the fifo_size in options, but it does not work.


-
avcodec_open2 returns -22 "Invalid argument" trying to encode AV_CODEC_ID_H264
26 mai 2023, par Fries of DoomI'm trying to use libavcodec to encode h264 video but avcodec_open2 returns -22 "Invalid argument" and I can't figure out why. Here is my code, which is mostly a copy from the encode example from libavcodec.


/* find the mpeg1video encoder */
 const AVCodec* codec = avcodec_find_encoder(AV_CODEC_ID_H264);
 if (!codec) {
 fprintf(stderr, "Codec '%s' not found\n", "h.264");
 exit(1);
 }

 AVCodecContext* codecContext = avcodec_alloc_context3(codec);
 if (!codecContext) {
 fprintf(stderr, "Could not allocate video codec context\n");
 exit(1);
 }

 AVPacket* pkt = av_packet_alloc();
 if (!pkt)
 exit(1);

 /* put sample parameters */
 codecContext->bit_rate = 400000;
 /* resolution must be a multiple of two */
 codecContext->width = 1920;
 codecContext->height = 1080;
 /* frames per second */
 codecContext->time_base = { 1, 25 };
 codecContext->framerate = { 25, 1 };

 /* emit one intra frame every ten frames
 * check frame pict_type before passing frame
 * to encoder, if frame->pict_type is AV_PICTURE_TYPE_I
 * then gop_size is ignored and the output of encoder
 * will always be I frame irrespective to gop_size
 */
 codecContext->gop_size = 10;
 codecContext->max_b_frames = 1;
 codecContext->codec_type = AVMEDIA_TYPE_VIDEO;
 codecContext->pix_fmt = AV_PIX_FMT_YUV420P;

 if (codec->id == AV_CODEC_ID_H264)
 av_opt_set(codecContext->priv_data, "profile", "baseline", 0);

 /* open it */
 int ret = avcodec_open2(codecContext, codec, nullptr);
 if (ret < 0) {
 char eb[AV_ERROR_MAX_STRING_SIZE];
 fprintf(stderr, "Could not open codec: %s\n", av_make_error_string(eb, AV_ERROR_MAX_STRING_SIZE, ret));
 exit(1);
 }



Does anyone know what I'm doing wrong ?


-
AVCodecContex returns zero for width and height in android
17 février 2023, par WhoamiNot sure what was my mistake in the below code. I m trying with ffmpeg 0.11 and SDL2.0 in android.



QUESTION :
Why Width and Height of the CodecContext gives me always zero ?..



int main(int argc, char *argv[])
{

 int flags;
 flags = SDL_INIT_VIDEO | SDL_INIT_TIMER;

 if (SDL_Init (flags)) {
 LOGD ("Could not intialize Video for SDL: %s \n", SDL_GetError());
 }
 else 
 LOGD (" SUCCESS: SDL_Init ");

 // ffmpeg Register all services..
 ffmpeg_register_all (); 


 pFrame = avcodec_alloc_frame ();
 context = avformat_alloc_context();

 err = avformat_open_input (&context, "rtsp:ip:port", NULL, NULL);
 if ( err < 0) {
 __android_log_print(ANDROID_LOG_DEBUG, "ffmpegguard", "Unable to open rtsp... ");

 return -1;
 }

 for (i = 0; i < context->nb_streams; i++)
 { 
 // Find the Decoder.
 codec = avcodec_find_decoder(context->streams[i]->codec->codec_id);
 if (codec->type == AVMEDIA_TYPE_VIDEO ) {
 __android_log_print(ANDROID_LOG_DEBUG, "ffmpegguard", "Found Video Streaming.. ");
 videoStreamIndex = i;

 }
 }

 // Play RTSP
 av_read_play(context);

 // Get Codec Context.
 pCodecCtx = context->streams[videoStreamIndex]->codec;
 if ( pCodecCtx == NULL )
 __android_log_print(ANDROID_LOG_DEBUG, "ffmpegguard", "CodecCtx is NULL>>> ");
 else
 __android_log_print(ANDROID_LOG_DEBUG, "ffmpegguard", "CodecCtx is <<<ok>>> ");


 //Find the Decoder.
 pCodec = avcodec_find_decoder (pCodecCtx->codec_id);
 avcodec_open2 (pCodecCtx, pCodec, NULL);


 int w = pCodecCtx->width; // Why me getting 0 ? 
 int h = pCodecCtx->height;

 window = SDL_CreateWindow ("Test ffmpeg",SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, w, h, SDL_WINDOW_SHOWN|SDL_WINDOW_ALLOW_HIGHDPI);
 // What this HIGHDPI Means ??

 if ( window != NULL ) 
 {
 LOGD (" WINDOW CREATED.. , create Renderer ..");
 renderer = SDL_CreateRenderer (window, -1, 0); 
 }
 else
 {
 LOGD (" Invalid SDL Window "); 
 }
__android_log_print(ANDROID_LOG_DEBUG, "ffmpegguard", "Width and Height of PCodeccCtx.. %d .. %d " , w, h); 
 return 0;
}
</ok>