gpt4 book ai didi

ffmpeg - 如何对 h265 视频、较低分辨率和 fps 进行硬件解码并作为 yuv420 格式的原始视频传递

转载 作者:行者123 更新时间:2023-12-04 23:18:45 27 4
gpt4 key购买 nike

以下 ffmpeg 命令使用 qsv 在硬件中解码 h265 rtsp 视频流,将分辨率从 4k 降低到 1080p,fps 从 20 降低到 5,并尝试使用 pix_fmt yuv420p 将视频保存为 rawvideo。

ffmpeg -hide_banner -loglevel warning -hwaccel qsv -c:v hevc_qsv -use_wallclock_as_timestamps 1 -fflags nobuffer -rtsp_transport tcp -stimeout 5000000 -i rtsp://admin:secret@10.20.1.14:554 -vf fps=fps=5,vpp_qsv=w=1280:h=720 -c:v h264_qsv -g 25 -profile:v main -b:v 1M -an -f rawvideo -pix_fmt yuv420p test_output.yuv
问题是硬件解码器使用 nv12 作为其内部格式,这会导致警告:

Incompatible pixel format 'yuv420p' for codec 'h264_qsv', auto-selecting format 'nv12'


这里的目的是将原始视频传递给另一个进程,该进程将进行对象检测并且仅支持 yuv420p。我尝试使用 vaapi 而不是 qsv 但这给了我同样的问题。如何使用 ffmpeg 转换 pix_format?

最佳答案

多亏了 comment on reddit,我终于找到了答案。 .

ffmpeg -hide_banner -loglevel warning -hwaccel qsv -c:v hevc_qsv -use_wallclock_as_timestamps 1 -fflags nobuffer -rtsp_transport tcp -stimeout 5000000 -i rtsp://admin:secret@10.20.1.14:554 -vf fps=fps=5,vpp_qsv=w=1280:h=720:format=nv12,hwdownload,format=nv12,format=yuv420p -an -f rawvideo test_output.yuv
问题是(据我了解),当我们使用硬件加速操作时,帧以硬件相关格式保存。在这种情况下,nv12,并且无法在驻留在 gpu 内存中进行转换。但是通过使用 'hwdownload' 指令,帧被移动到普通内存中,我们可以转换为 yuv420p。

关于ffmpeg - 如何对 h265 视频、较低分辨率和 fps 进行硬件解码并作为 yuv420 格式的原始视频传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71233586/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com