FFmpeg硬件加速命令中-noautorotate对缩略图无效的问题求助
FFmpeg硬件加速命令中-noautorotate对缩略图无效的问题求助
大家好,我最近在折腾FFmpeg的硬件加速命令,遇到了一个奇怪的问题,想请各位帮忙看看:
我的需求是用一条硬件加速的FFmpeg命令同时完成两个操作:
- 将输入视频缩放到指定分辨率输出
- 每2秒生成一张对应分辨率的缩略图
最开始我用的命令是这样的:
ffmpeg -hwaccel cuvid -hwaccel_output_format cuda -i "inputVideo.mov" -vf "scale_cuda=1280:720,hwdownload,format=nv12,setsar=1:1" -c:v h264_nvenc -profile:v main -level:v 4 -b:v 2500K "outputVideo.mp4" -vf "scale_cuda=160:90,hwdownload,format=nv12, fps=0.5,setsar=1:1" "thumbnailOutputs_%04d.jpg"
但问题来了:输入视频的元数据里带有180度旋转的参数,FFmpeg默认会自动根据元数据旋转输出内容,可我不想要旋转后的结果。查了FFmpeg文档,发现可以用-noautorotate参数禁用自动旋转,于是我把这个参数加到了命令里。
结果很奇怪:视频输出确实正常了,但缩略图依然是180度颠倒的!我甚至单独拆分出缩略图的命令,单独加-noautorotate测试,还是没用。
为了对比,我还测试了不带硬件加速的CPU版本命令:
ffmpeg -i "inputVideo.mov" -c:v libx264 -profile:v main -level:v 4 -b:v 2500K -vf "scale=1280:720,setsar=1:1" "outputVideo.mp4" -vf fps=0.5 -s 160X90 "thumbnailOutputs_%04d.jpg"
下面是我整理的所有测试结果:
硬件加速命令(nvenc)
- 默认无
-noautorotate参数- 视频输出:上下颠倒❌(旋转180度)
- 缩略图:上下颠倒❌(旋转180度)
- 添加
-noautorotate参数后- 视频输出:显示正常✅
- 缩略图:上下颠倒❌(旋转180度)
CPU命令(libx264)
- 默认无
-noautorotate参数- 视频输出:显示正常✅
- 缩略图:显示正常✅
- 添加
-noautorotate参数后- 视频输出:显示正常✅
- 缩略图:上下颠倒❌(旋转180度)
有没有大佬知道这是怎么回事?为什么-noautorotate对缩略图的作用这么奇怪,尤其是硬件加速的场景下?
备注:内容来源于stack exchange,提问作者CtrlAltElite
相关产品推荐
相关产品推荐

