Hello Matt, Hello people,

thank you for your hint. I am trying this, but I have problems creating the 
required paramters. Here is my code:

void YUVtoRGB_Converter::YUV2MP4ES(const uint8_t *YUVbuf, uint8_t *MP4buf, int 
MP4bufSize)
{
    AVCodec *codec;
    AVCodecContext *c= NULL;
    //uint8_t *extradata;
    //int extradata_size;
    int i, out_size, size, x, y, outbuf_size;
        AVFrame *picture;
        uint8_t *outbuf;
    unsigned char *picture_buf;
        
    //printf("Video encoding\n");

        av_register_all();

    /* find the mpeg4 video encoder */
        codec = avcodec_find_encoder(CODEC_ID_MPEG1VIDEO);
    if (!codec) {
        fprintf(stderr, "codec not found\n");
        exit(1);
    }

        c = avcodec_alloc_context3(codec);
    picture= avcodec_alloc_frame();

    /* put sample parameters */
    c->bit_rate = 400000;
    /* resolution must be a multiple of two */
    c->width = CAM_RESOLUTION_WIDTH;
    c->height = CAM_RESOLUTION_HEIGHT;
    /* frames per second */
    //c->time_base= (AVRational){1,25};
        c->time_base.num = 1;
        c->time_base.den = FRAMERATE;
    c->gop_size = 10; /* emit one intra frame every ten frames */
    c->max_b_frames=1;
    c->pix_fmt = PIX_FMT_YUV420P;

    /* open it */
    if (avcodec_open(c, codec) < 0) {
       fprintf(stderr, "could not open codec\n");
        exit(1);
        }
        /// --> here creating the required parameters
        AVFormatContext *t = avformat_alloc_context();
        AVDictionary **opt = NULL; // <-- this is the problem i think

        f = fopen("test", "a+b");
        if (!f) {
                fprintf(stderr, "could not open %s\n", "test");
                exit(1);
        }
        if (this->fileExists == false) {
                  // here throws exception 
                  // Access violation reading location from 0xAddress
                avformat_write_header(t, opt);
                this->fileExists = true;
        }
//.... and so on.

How can I get the "AVDictionary **opt" parameter properly? 

Thank you in advice.

Cheers
Murat


--- Matthew Einhorn <[email protected]> schrieb am Mi, 3.8.2011:

> Von: Matthew Einhorn <[email protected]>
> Betreff: Re: [Libav-user] Converting YUV 2 MPEG4
> An: "This list is about using libavcodec, libavformat, libavutil, libavdevice 
> and libavfilter." <[email protected]>
> Datum: Mittwoch, 3. August, 2011 14:50 Uhr
> On Wed, Aug 3, 2011 at 9:37 AM, 
> <[email protected]>
> wrote:
> > Hello boys and girls,
> >
> > I want to convert a YUV signal from my POE-camera into
> a MPEG4 stream, for which I have used the libavcodec.lib
>  library of yours.
> >
> > I am confused with the file-format headers for the
> target video file. For an instance :
> > out_size = avcodec_encode_video(c, outbuf,
> outbuf_size,
> > outpic);
> > Is there no mpeg4 specific file format header
> required, in the beginning of the video file? Or is the
> library function handling this internally?
> >
> I use avformat_write_header() before starting to write
> frames and
> av_write_trailer() afterwords. I think this should do what
> you want.
> 
> Matt
> 
> 
> > Cheers Murat
> >
> > _______________________________________________
> > Libav-user mailing list
> > [email protected]
> > http://ffmpeg.org/mailman/listinfo/libav-user
> >
> _______________________________________________
> Libav-user mailing list
> [email protected]
> http://ffmpeg.org/mailman/listinfo/libav-user
> 
_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to