Tegra Multimedia API 03_video_cuda_enc save .264 file

MMAPI Demo:
static int
write_encoder_output_frame(ofstream * stream, NvBuffer * buffer)
{
stream->write((char *) buffer->planes[0].data, buffer->planes[0].bytesused);
return 0;
}
write_encoder_output_frame(ctx->out_file, buffer);

Me:
FILE *fp = NULL;
fp4 = fopen(“out_fwrite.264”, “ab+”);
int ret = fwrite(buffer->planes[0].data, 1,buffer->planes[0].bytesused , fp);

Demo saves file can play us 264player or ffplay,I want to save 264 useing fwrite();it can’t play。Please tell me how to save 264 use fwriet().

Hi,
By default it is implemented in std::ofstream. You can look for the code and replace it with fopen(), fwrite(), fclose(). Thanks.

Hi,Dane,thanks. fwrite(buffer->planes[0].data, 1,buffer->planes[0].bytesused , fp); I don’t know where the wrong is.

Hi,
You may put it in write_encoder_output_frame(), to replace stream->write().

Hi,I have replaced stream->write(),
write_encoder_output_frame(buffer){
FILE fp = NULL;
if (NULL == fp)
{
fp = fopen(“out.264”, “wb”);
int ret = fwrite((char
)buffer->planes[0].data, 1, buffer->planes[0].bytesused , fp);
}
else
{
int ret = fwrite((char*)buffer->planes[0].data, 1, buffer->planes[0].bytesused , fp);
}
}
The size of out.264 file sometimes adds,sometimes minus.
and ffplay can’t play the out.264.
I changed fp = fopen(“out.264”, “ab+”) ,also can’t play

sorry,I made a stupid mistake.I have got it. thanks!

1 Like