我正在尝试使用gstreamer,我觉得这很有效:
gst-launch-0.10 -v filesrc location=/path/to/file.mp4 ! qtdemux ! vaapidecode ! vaapisink
我希望能够将视频输出到我的窗口,我已经尝试了但没有成功
gst-launch-0.10 -v filesrc location=/path/to/file.mp4 ! qtdemux ! vaapidecode ! vaapidownload | appsink
这个例子很简单,因为我还在学习gstreamer,所以我的想法是为gstreamer提供我自己的opengl纹理来播放vaapi解码的视频。任何提示都将受到高度赞赏。
编辑:
gst-inspect of:
vaapidecode :http://pastebin.com/8TSJF7jN
vaapidownload :http://pastebin.com/JzV17v33
vaapisink :http://pastebin.com/ZkMBVh8v
appsink :http://pastebin.com/ehkQsraM
这是第二个管道的输出:http://pastebin.com/9mqjsLUq
更新
相同的输出,但日志级别为3:http://pastebin.com/GRGTVYVm
答案 0 :(得分:0)
格式很好。否则会导致未协商或数据流错误。我怀疑由于某种原因,表面不是“可下载的”。如果您运行GST_DEBUG =“*:3”gst-launch ....或更高版本,日志会提供更多信息吗?
答案 1 :(得分:0)
根据您为第二个命令行发布的输出,看起来该命令正在运行。 vaapidecode将视频解码为x-surface,vaapidownload占用x-surface并输出x-raw-yuv,而appsink绝对消耗任何而不产生任何其他东西(因此它看起来什么都不做)。尝试将原始YUV复用到YUV4MPEG(.y4m)文件中:
gst-launch-0.10 -v filesrc location=/path/to/file.mp4 ! qtdemux ! vaapidecode ! vaapidownload | y4menc ! filesink location=decoded-video.y4m
查看该命令是否生成.y4m文件,然后使用VLC或MPlayer或ffplay观看该视频以验证其是否正确。
答案 2 :(得分:0)