On 15/06/2010 14:23, Mark Kenna wrote:
On 15/06/2010 13:59, Muras wrote:
wats the error are u getting
On Tue, Jun 15, 2010 at 6:19 PM, Mark Kenna<
[email protected]> wrote:
Hi
I am attempting to modify api_example.c to encode to a
CODEC_ID_H264. I am
having some trouble and it's possibly due to my lack of knowledge on
the
sample parameters. Can someone please suggest whether there is
something
extra that needs to be done to encode H264?
Thanks,
Mark.
_______________________________________________
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
Hi
I am getting a value of zero returned from: avcodec_encode_video(c,
outbuf, outbuf_size, NULL);
Thanks
_______________________________________________
libav-user mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/libav-user
I have modified the code to use MPEG4 encoding, this does produce a file
but it doesn't play in VLC. Upon checking this with FFProbe, the bitrate
and duration are showing as N/A. I include a snippet of my code.
int _tmain(int argc, _TCHAR* argv[])
{
av_register_all();
const char* filename = "test1.mp4";
AVCodec *codec;
AVCodecContext *c= NULL;
int i, out_size, size, x, y, outbuf_size;
FILE *f;
AVFrame *picture;
uint8_t *outbuf, *picture_buf;
printf("Video encoding\n");
/* find the mpeg1 video encoder */
codec = avcodec_find_encoder(CodecID::CODEC_ID_MPEG4);
if (!codec) {
fprintf(stderr, "codec not found\n");
exit(1);
}
c= avcodec_alloc_context();
picture= avcodec_alloc_frame();
// /* put sample parameters */
// c->bit_rate = 400000;
// /* resolution must be a multiple of two */
// c->width = 640;
// c->height = 480;
// /* frames per second */
//c->time_base.den = 25;
//c->time_base.num = 1;
// c->gop_size = 10; /* emit one intra frame every ten frames */
// c->max_b_frames=10;
// c->pix_fmt = PIX_FMT_YUV420P;
c->width = 192;
c->height = 144;
c->keyint_min = 10;
c->i_quant_factor = 0.71;
c->bit_rate_tolerance = 20000;
c->rc_max_rate = 100000;
c->rc_buffer_size = 8835000;
c->qcompress = 0.6;
c->qmin = 10;
c->qmax = 30;
c->max_qdiff = 4;
c->gop_size = 30;
c->time_base.num = 1;
c->time_base.den = 25;
c->sample_aspect_ratio = av_d2q(1, 255);
c->profile = 30;
c->level = 30;
c->pix_fmt = PIX_FMT_YUV420P;
/* open it */
if (avcodec_open(c, codec) < 0) {
fprintf(stderr, "could not open codec\n");
exit(1);
}
f = fopen(filename, "wb");
if (!f) {
fprintf(stderr, "could not open %s\n", filename);
exit(1);
}
/* alloc image and output buffer */
outbuf_size = 100000;
outbuf = (uint8_t*)malloc(outbuf_size);
size = c->width * c->height;
picture_buf = (uint8_t*)malloc((size * 3) / 2); /* size for YUV 420 */
picture->data[0] = picture_buf;
picture->data[1] = picture->data[0] + size;
picture->data[2] = picture->data[1] + size / 4;
picture->linesize[0] = c->width;
picture->linesize[1] = c->width / 2;
picture->linesize[2] = c->width / 2;
/* encode 1 second of video */
for(i=0;i<25;i++) {
fflush(stdout);
/* prepare a dummy image */
/* Y */
for(y=0;y<c->height;y++) {
for(x=0;x<c->width;x++) {
picture->data[0][y * picture->linesize[0] + x] = x + y
+ i * 3;
}
}
/* Cb and Cr */
for(y=0;y<c->height/2;y++) {
for(x=0;x<c->width/2;x++) {
picture->data[1][y * picture->linesize[1] + x] = 128 +
y + i * 2;
picture->data[2][y * picture->linesize[2] + x] = 64 +
x + i * 5;
}
}
/* encode the image */
out_size = avcodec_encode_video(c, outbuf, outbuf_size, picture);
printf("encoding frame %3d (size=%5d)\n", i, out_size);
fwrite(outbuf, sizeof(uint8_t), out_size, f);
}
fclose(f);
free(picture_buf);
free(outbuf);
avcodec_close(c);
av_free(c);
av_free(picture);
printf("\n");
return 0;
}
_______________________________________________
libav-user mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/libav-user