[FFmpeg-user] Write Interleaved Frame Error

Jorge Fonseca jcbfonseca at gmail.com
Thu Aug 16 01:16:03 CEST 2012


All,

*avcodec_encode_video* is deprecated.
I changed the code to use *avcodec_encode_video2 - *the result is
similar.... "Buffer Underflow" still happens....

Any comments?

Jorge.

2012/8/15 Jorge Fonseca <jcbfonseca at gmail.com>

> All,
>
> Below the function related to write video frame..
>
> Let me know if you have any suggestions...
>
> ------------
>
> *static void write_video_frame() {*
>     int out_size, ret;
>     static struct SwsContext *img_convert_ctx;
>
>     img_convert_ctx = sws_getContext(pCodec_ctx_output->width,
>             pCodec_ctx_output->height, pCodecCtx_input->pix_fmt,
>             pCodec_ctx_output->width, pCodec_ctx_output->height,
>             pCodec_ctx_output->pix_fmt, sws_flags, NULL, NULL, NULL );
>
>     if (img_convert_ctx == NULL ) {
>         fprintf(stderr, "Cannot initialize the conversion context\n");
>         exit(1);
>     }
>
>     sws_scale(img_convert_ctx, pFrame->data, pFrame->linesize,
> 0,pCodec_ctx_output->height, tmp_picture->data, tmp_picture->linesize);
>
> *    //All returns zero for the first frame*
>     *out_size = avcodec_encode_video(pCodec_ctx_output, video_outbuf,
> video_outbuf_size, tmp_picture);*
>
>         if(*out_size >0*) {
>             AVPacket pkt;
>             av_init_packet(&pkt);
>
>             if (pCodec_ctx_output->coded_frame->pts != AV_NOPTS_VALUE)
>                 pkt.pts =
> av_rescale_q(pCodec_ctx_output->coded_frame->pts,
> pCodec_ctx_output->time_base, video_st->time_base);
>             if (pCodec_ctx_output->coded_frame->key_frame)
>                 pkt.flags |= AV_PKT_FLAG_KEY;
>
>             pkt.stream_index = video_st->index;
>             pkt.data = video_outbuf;
>             pkt.size = out_size;
>
>             /* Write the compressed frame to the media file. */
>             ret = av_interleaved_write_frame(ctx_video, &pkt);
>
> *    }
> *
> ------------
>
> Jorge
>
>
> 2012/8/14 Jorge Fonseca <jcbfonseca at gmail.com>
>
>> Hi All,
>>
>> I trying to create a mpeg video following FFmpeg examples.
>> Every time* "avcodec_encode_video"* returns ZERO only for the FIRST
>> frame/packet.
>>
>> Consequently, after insert more frames i got "*Encode Buffer underflow*"
>> in Encode function.
>>
>> ------------------------------------
>> Does anyone know how MPEG encode works for the first frame? E why zero is
>> return?
>>
>> PS. in this case, the outbut buffer was not filled.
>>
>> ------------------------------------
>>
>> Regards,
>> Jorge.
>>
>
>


More information about the ffmpeg-user mailing list