【视频】将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;
}
相关推荐
xailorliu19 分钟前
矩阵定性-正定负定不定半正定半负定
c++·opencv·线性代数·计算机视觉·矩阵
个 人 练 习 生28 分钟前
C++-----string基本使用详解
开发语言·c++·学习
朝朝辞暮i35 分钟前
C++ 第 5 课:else if + 多条件判断 + && / || / !
开发语言·c++
画绛集美术37 分钟前
用开源AI语音合成做课程口播音频:一间美术教室的技术笔记
人工智能·笔记·音视频
千谦阙听41 分钟前
【C++篇】:string类——常用接口、底层原理与深浅拷贝
开发语言·c++·学习·visual studio
linux_cfan1 小时前
videojs v10 源代码系列解读:32 · Reactor 模型:信号驱动的状态机
前端·javascript·音视频
特立独行的猫A1 小时前
c++的`std::future` 与 `std::promise` 简明教程(5分钟读完)
c++
特立独行的猫A1 小时前
C++ 异步编程:std::future 与 std::promise 详解(含 RPC 客户端实现实践)
c++·后端
encoderlee1 小时前
ubuntu server 如何播放视频显示网页
linux·ubuntu·音视频·树莓派·ubuntu server·arm嵌入式
All for pursuit.1 小时前
【分治-2】215.数组中的第K个最大元素
数据结构·c++·算法·leetcode