【视频】将yuv420p的一帧数据写入文件

在做视频渲染的时候经常需要将中间的yuv数据保存到文件中进行查看,下面的方法介绍了如何将yuv420p的数据写入到文件中:

cpp 复制代码
bool saveYuvFile(const std::string& filename, const uint8_t* yuvData, size_t width, size_t height)
{
    std::ofstream file(filename, std::ios::binary);
    if (!file)
    {
        return false;
    }

    size_t ySize = width * height;
    size_t uvSize = (width / 2) * (height / 2);
    
    // Reserve space for YUV data to avoid multiple reallocations
    file.seekp(ySize + uvSize * 2 - 1);
    file.write("", 1);
    file.seekp(0);

    // Write YUV data directly to the file
    file.write(reinterpret_cast<const char*>(yuvData), ySize + uvSize * 2);
    
    file.close();
    return true;
}
相关推荐
玉树临风江流儿4 小时前
C++左值、右值、move移动函数
开发语言·c++
许长安5 小时前
c/c++ static关键字详解
c语言·c++·经验分享·笔记
Murphy_lx6 小时前
C++ thread类
开发语言·c++
月夜的风吹雨6 小时前
【C++ STL 深度剖析】:vector 底层模拟实现与核心陷阱解析
c++·vector·类和对象·visual studio
彩妙不是菜喵6 小时前
C++ 中 nullptr 的使用与实践:从陷阱到最佳实践
开发语言·jvm·c++
_dindong7 小时前
笔试强训:Week-4
数据结构·c++·笔记·学习·算法·哈希算法·散列表
加油20198 小时前
音视频处理(三):hls协议和m3u8详解和视频下载爬虫实战
爬虫·音视频·hls·m3u8·mpeg-2·mpeg2-ts·电视迷
liu****8 小时前
12.线程(二)
linux·开发语言·c++·1024程序员节
小冯的编程学习之路9 小时前
【C++】:C++基于微服务的即时通讯系统(2)
开发语言·c++·微服务
音视频牛哥9 小时前
从 SmartMediaKit 设计探讨音视频工程师的面试与能力评估框架
程序人生·职场和发展·音视频·rtsp播放器·rtmp播放器·音视频工程师面试·音视频程序员面试题