FFmpeg保存原始yuv420P文件

在处理FFmpeg的AVFrame时,由于字节对齐,linesize可能与视频宽度不同,导致数据填充问题。文章提供了一段代码示例,详细解释如何正确保存YUV帧数据,分别遍历Y、U、V分量,依据linesize进行写入,避免0数据的填充问题。
摘要由CSDN通过智能技术生成

感谢:

(4条消息) Ffmpeg中AVFrame数据保存成YUV--讨论AVFrame的linesize_小葫芦写代码的博客-CSDN博客_avframe yuv数据

由于计算机字节对齐特性,会导致 AvFrame->linesize[0] 和 视频实际宽会不一致,就会导致AvFrame->data[0]数据会填充0数据,因此具体保存代码如下:

// w、h是视频的实际宽高
for(int i=0; i<h; i++){
    fwrite(yuvFrame->data[0]+i*yuvFrame->linesize[0],1,w,fp);//y
}
for(int i=0; i<h/2; i++){
    fwrite(yuvFrame->data[1]+i*yuvFrame->linesize[1],1,w/2,fp);//u
}
for(int i=0; i<h/2; i++){
    fwrite(yuvFrame->data[2]+i*yuvFrame->linesize[2],1,w/2,fp);//v
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值