问题描述
我正在尝试使用stb库将帧保存为jpg文件,但是出现分段错误。
// this is called in a loop for each frame
save_frame(pFrame->data[0],pFrame->linesize[0],pFrame->width,pFrame->height,fileFrameName);
///
void save_frame(const uint8_t *buf,size_t wrap,size_t xSize,size_t ySize,const std::string &filename)
{
int error = stbi_write_jpg(filename.c_str(),xSize,ySize,/*cmP*/ 3,buf,100);
if (error)
std::cerr << "Failed to save frame to jpg" << std::endl;
//
// std::fstream fileFrame{filename,std::ios::out};
// if (!fileFrame)
// std::cerr << "Failed to create file frame" << std::endl;
// fileFrame << "P5\n" << xSize << ' ' << ySize << "\n255\n" << std::endl;
//
// for (size_t i = 0; i != ySize; ++i)
// fileFrame.write(reinterpret_cast<const char *>(std::next(buf,i * wrap)),xSize);
}
未注释的代码将内容保存到输出文件中(尽管我不确定内容是否正确)。
为什么会出现段错误?是因为我传递了AVFrame拥有的缓冲区的地址吗?如果是这样,为什么它可以与fstream
一起使用?
我已经阅读了FFMPEG和STB文档,但是我不明白我提供的参数有什么问题。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)