I described my approach under
http://qtdvd.com/guides/ffmpeg.html

The final product is qrender of the QDVDAuthor suite. You can check out 
the code in qrender/engine/ffmpeg_enc.cpp

Hope this helps

Varol :)
Ps. The audio part was what took me longest.

[email protected] wrote:
> Hi to everybody,
>
> I've got the following problem:
>
> I'm trying to encode a movie out of different QImages(Part of the Qt 
> library). Therefore I've written this function:
>
> bool MediaSaver::write_vid_frame(uint8_t** data,int linesize)
> {
>       AVPacket pkt;
>       int out_size;
>       if(sws_cont)//means we've got different input-output pixelformat
>       {
>               
> sws_scale(sws_cont,(uint8_t**)data,&linesize,0,codcon->height,frm->data,frm->linesize);
>       }
>       else
>       {
>               frm->data[0]=data[0];
>               frm->data[1]=data[1];
>               frm->data[2]=data[2];
>               frm->data[3]=data[3];
>       }
>
>       av_init_packet(&pkt);
>       pkt.stream_index= vid->index;
>
>       if(cont->flags&AVFMT_RAWPICTURE)
>       {
>               pkt.flags|=PKT_FLAG_KEY;
>               pkt.data=(uint8_t*)frm;
>               pkt.size=sizeof(AVPicture);
>       }
>       else
>       {
>               out_size=avcodec_encode_video(codcon, video_outbuf, 
> video_outbuf_size, frm);
>               if(out_size<=0)
>                       return false;
>         if (codcon->coded_frame->pts != AV_NOPTS_VALUE)
>             pkt.pts= av_rescale_q(codcon->coded_frame->pts, 
> codcon->time_base, vid->time_base);
>         if(codcon->coded_frame->key_frame)
>             pkt.flags |= PKT_FLAG_KEY;
>         pkt.data=video_outbuf;
>         pkt.size=out_size;
>       }
>
> where codcon is a CodexContext* and frm is an AVFrame* wich are alloced 
> proper.
> Then I call it:
>
> write_vid_frame((uint8_t**)im.bits(),im.bytesPerLine());
>
> where im is my QImage.At this point my programm crashes.
>
> All necessary initalization has been done.
>
> Greetings and have a nice christmas
>
> Alex
> _______________________________________________________________________
> Täglich 1.000.000 Euro gewinnen! Jetzt kostenlos WEB.DE MillionenKlick 
> spielen! https://millionenklick.web.de/[email protected]@home
>
> _______________________________________________
> libav-user mailing list
> [email protected]
> https://lists.mplayerhq.hu/mailman/listinfo/libav-user
>   

_______________________________________________
libav-user mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/libav-user

Reply via email to