=====添加如下代码
#include <unistd.h>
#include <fcntl.h>
static int get_video_frame(VideoState *is, AVFrame *frame)
{
int got_picture;
if ((got_picture = decoder_decode_frame(&is->viddec, frame, NULL)) < 0)
return -1;
if (got_picture) {
double dpts = NAN;
static int i_fd = -1;
int i_width = is->viddec_width;
int i_height = is->viddec_height;
if (i_fd < 0) {
char p_buf[64];
sprintf(p_buf, "record_%dx%d.yuv", i_width, i_height);
i_fd = open(p_buf, O_WRONLY | O_CREAT, 0644);
}
if (i_fd > 0) {
int y;
for (y = 0; y < i_width; ++y) {
write(i_fd, frame->data[0] + (y * frame->linesize[0]), i_height);
}
for (y = 0; y < i_width/2; ++y) {
write(i_fd, frame->data[1] + (y * frame->linesize[1]), i_height/2);
}
for (y = 0; y < i_width/2; ++y) {
write(i_fd, frame->data[2] + (y * frame->linesize[2]), i_height/2);
}
}
本文介绍了一个用于从视频流中抓取帧并将其保存为YUV格式的方法。该方法通过特定的解码器获取视频帧,并利用文件描述符将YUV数据写入指定的文件中。
1728

被折叠的 条评论
为什么被折叠?



