Hello,

I'd like to use avformat library to format the h264 stream which I get from the hardware codec on my SoC to some container (mkv, 3gp, ...). What parameters need to be set avformat? I have tried following code (simplified).

AVFormatContext *os;
AVOutputFormat *fmt;
AVStream *video_st;

av_register_all();

fmt = av_guess_format("matroska", NULL, NULL);
os = avformat_alloc_context();
os->oformat = fmt;
strncpy(os->filename, "test.mkv", 32);

video_st = av_new_stream(os, 0);
video_st->codec->codec_id = CODEC_ID_H264;
video_st->codec->codec_type = AVMEDIA_TYPE_VIDEO;

avio_open(&os->pb, "test.mkv", URL_WRONLY);

av_write_header(os);

while (frames) {
        AVPacket pkt;
        av_init_packet(&pkt);
        pkt.data = enc_buf->user_addr;
        pkt.size = enc_buf->bytes_used;
        pkt.pts = env->frame_cnt;
        pkt.stream_index = 0;
        av_interleaved_write_frame(os, &pkt);
}

av_write_trailer(os);


Unfortunately this ends with SIGFPE arithmetic exception.
I think I can create a "dummy" avcodec codec and use it to fill the contents of video_st->codec, but I'd rather to go without such workaround. Maybe the parameters can be read from the first frame of the raw h264 stream?

with best regards
Jan

--
Tato zpráva byla vytvořena převratným poštovním klientem Opery: http://www.opera.com/mail/
_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to