困难的gstreamer管道 - 使用DirectShow将Windows解码/解复用h264文件转换为jpeg

时间:2013-08-09 04:39:15

标签: jpeg directshow h.264 gstreamer

我一直在努力让gstreamer的gst-launch-1.0输出一个h264流作为单独的jpeg,但只需要每秒一个,并使用DirectShow硬件加速。我尝试过多次迭代命令,这是我得到的最接近的命令:

gst-launch-1.0 filesrc location=test.h264 ! decodebin ! videorate ! video/x-raw,framerate=1/30 ! jpegenc ! multifilesink location=img%03d.jpg

这为我的10秒h264流提供了300个jpeg,它不使用DirectShow硬件接口。

我已经使用gst-inspect尝试使用我认为的h264(video/x-h264)的DirectShow解码器,但这给了我错误。我也尝试将帧速率从1/30更改为30/1和1/1,但总是得到相同的每秒30 jpeg输出。

我认为decodebin应该根据输入流自动选择最佳解码器,但它似乎是使用CPU密集型(而不是GPU硬件加速)来判断我测试中的CPU如何在gstreamer过程的持续时间内,机器固定为100%。

理想情况下,我还希望以不同于视频分辨率的分辨率输出jpeg,但我尝试过的所有内容(宽度= 640,高度= 480)都会导致错误或导致错误一个重新调整大小的jpg。

1 个答案:

答案 0 :(得分:0)

我不确定是否有一种简单的方法可以做到这一点作为预烘烤管道。但是,你可以编写一个计算帧数和数量的探测器,每30个中就有29个(例如,增量计数器%30)。我猜你想在这里从视频中生成缩略图/预览?