如何正确修改oneVPL hello-vpp示例的输出视频分辨率?修改后输出文件损坏问题咨询
解决oneVPL hello-vpp示例输出1280x720视频的正确方法
直接修改ffplay的播放参数没用,因为输出的out.raw文件本身的分辨率和格式还是原示例的设置,导致播放器解析错误出现卡顿损坏。你需要从修改示例代码+正确编译+匹配播放参数三个步骤来解决:
1. 修改hello-vpp示例的输出分辨率设置
找到hello-vpp示例的核心代码文件(通常是main.cpp),定位到设置输出视频参数的部分:
- 查找类似
VppVideoInfo out_info的结构体定义,或是设置输出宽高的变量(比如output_width、output_height)。 - 将宽度值改为
1280,高度值改为720。 - 同时确保输出的像素格式和输入一致(比如原示例常用的
NV12),如果需要修改格式,也要同步调整对应的参数(比如out_info.fourcc)。
举个常见的代码修改示例:
// 原代码可能是这样的 VppVideoInfo out_info = {}; out_info.width = 1920; out_info.height = 1080; out_info.fourcc = VA_FOURCC_NV12; // 修改为目标尺寸 out_info.width = 1280; out_info.height = 720;
2. 重新编译构建示例程序
按照仓库README里的构建步骤重新编译,确保代码修改生效:
mkdir -p build && cd build cmake .. make
3. 用正确的参数播放输出文件
raw格式视频没有容器元数据,必须告诉ffplay完整的视频信息才能正确播放,比如指定像素格式、帧率和尺寸:
ffplay -f rawvideo -pixel_format nv12 -video_size 1280x720 -framerate 30 out.raw
-pixel_format:替换成你代码里设置的格式(比如nv12、yuv420p),必须和输出文件的实际格式一致。-framerate:设置为输入视频的帧率(比如30、25),避免播放速度异常。
额外排查建议
- 检查程序运行时的输出日志,如果有VPL相关的错误提示(比如缩放不支持、参数不匹配),根据提示调整代码。
- 确认输入视频的尺寸是否支持缩放到1280x720,比如部分硬件VPP对缩放的宽高比例有要求,尽量保持和输入同比例(比如16:9)。
内容的提问来源于stack exchange,提问作者user16867861
相关产品推荐
相关产品推荐

