ffmpeg使用vaapi硬解出错

发布于 2022-01-02 17:15:56 字数 3664 浏览 983 评论 14

系统:deepin 15.9

ffmpeg 版本:4.1

 vaifo:

libva info: VA-API version 1.1.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_0
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.1 (libva 2.1.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Haswell Desktop - 2.0.0
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :    VAEntrypointVLD
      VAProfileMPEG2Simple            :    VAEntrypointEncSlice
      VAProfileMPEG2Main              :    VAEntrypointVLD
      VAProfileMPEG2Main              :    VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline:    VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:    VAEntrypointEncSlice
      VAProfileH264Main               :    VAEntrypointVLD
      VAProfileH264Main               :    VAEntrypointEncSlice
      VAProfileH264High               :    VAEntrypointVLD
      VAProfileH264High               :    VAEntrypointEncSlice
      VAProfileH264MultiviewHigh      :    VAEntrypointVLD
      VAProfileH264MultiviewHigh      :    VAEntrypointEncSlice
      VAProfileH264StereoHigh         :    VAEntrypointVLD
      VAProfileH264StereoHigh         :    VAEntrypointEncSlice
      VAProfileVC1Simple              :    VAEntrypointVLD
      VAProfileVC1Main                :    VAEntrypointVLD
      VAProfileVC1Advanced            :    VAEntrypointVLD
      VAProfileNone                   :    VAEntrypointVideoProc
      VAProfileJPEGBaseline           :    VAEntrypointVLD

       小弟使用希望使用ffmpeg的vaapi进行硬解。使用sudo ./configure --disable-static --enable-shared --enable-gpl --enable-version3 --enable-vaapi来编译ffmpeg源码,源码编译成功,并成功安装。然后想运行ffmpeg官方的有关硬解的例子进行学习。故编译了官方的例子vaapip_transcode.c hw_decode.c两个例子,也都编译通过.但是在运行两个例子的出现出现如下错误:    

转换到源码中查看是由于下面的回调函数出问题。即*p != AV_PIX_FMT_VAAPI 

static enum AVPixelFormat get_vaapi_format(AVCodecContext *ctx,
                                           const enum AVPixelFormat *pix_fmts)
{
    const enum AVPixelFormat *p;

    for (p = pix_fmts; *p != AV_PIX_FMT_NONE; p++) {
        if (*p == AV_PIX_FMT_VAAPI)
            return *p;
    }
    fprintf(stderr, "Unable to decode this file using VA-API.n");
    return AV_PIX_FMT_NONE;
}


 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(14

水水月牙 2022-01-08 06:03:29

那是兼容的,通常支持

皇甫轩 2022-01-08 06:03:28

后期硬解后也的确遇到您说的问题,不支持H264 baseline。想问是否有方式强制硬解呢?

冷清清 2022-01-08 06:03:23

回复
这个是api限制,绕不过去的,你查一下Intel GPU解码的文档,看一下哪个api版本支持baseline,是否升级或者降级驱动可以解决

路还长,别太狂 2022-01-08 06:03:20

已经解决了

挽清梦 2022-01-08 06:02:44

你的文件视频编码Profile是baseline,level4.2, 但是你的intel卡不支持baseline, 只支持constrained baseline。

緦唸λ蓇 2022-01-08 06:01:55

尽量不要贴图,直接复制出来文本容易看

南冥有猫 2022-01-08 05:59:59

回复
@Feng_Yu : 稍等哦,我把源码发下

多彩岁月 2022-01-08 05:56:56

General
ID                                       : 32885 (0x8075)
Complete name                            : /home/gy/Test.mp4
Format                                   : MPEG-TS
File size                                : 28.4 MiB
Duration                                 : 1 min 1 s
Overall bit rate mode                    : Variable
Overall bit rate                         : 3 857 kb/s
FileExtension_Invalid                    : ts m2t m2s m4t m4s tmf ts tp trp ty

Video
ID                                       : 69 (0x45)
Menu ID                                  : 1 (0x1)
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : Baseline@L4.2
Format settings                          : 1 Ref Frames
Format settings, CABAC                   : No
Format settings, ReFrames                : 1 frame
Codec ID                                 : 27
Duration                                 : 1 min 1 s
Bit rate                                 : 3 634 kb/s
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Stream size                              : 26.6 MiB (94%)
Color range                              : Full
Color primaries                          : BT.709
Transfer characteristics                 : BT.709
Matrix coefficients                      : BT.709

Audio
ID                                       : 68 (0x44)
Menu ID                                  : 1 (0x1)
Format                                   : MPEG Audio
Format version                           : Version 2
Format profile                           : Layer 2
Codec ID                                 : 4
Duration                                 : 1 min 1 s
Bit rate mode                            : Constant
Bit rate                                 : 32.0 kb/s
Channel(s)                               : 1 channel
Sampling rate                            : 16.0 kHz
Frame rate                               : 13.889 FPS (1152 SPF)
Compression mode                         : Lossy
Delay relative to video                  : 89 ms
Stream size                              : 240 KiB (1%)

mediainfo 信息

柳若烟 2022-01-07 19:18:16

回复
@Feng_Yu : vainfo 看到VAProfileH264ConstrainedBaseline: VAEntrypointVLD 应该说这个libva是支持baseline的吧

悟红尘 2022-01-07 17:44:53

回复
是支持的,多找几个样本看看,编码参数应该都是一致的。如果只是个别现象,那么说明视频有问题,无法硬解。我个人不建议硬解的,因为支持度不够好,如果软解性能够的话,通常不建议使用硬解。转码的瓶颈一般在编码阶段,而不是解码阶段,硬解无法带来实质的性能提升,硬编码倒是有点意义。想追求效果和压缩率,就用软解+软编码

爱的那么颓废 2022-01-07 15:33:04

回复
@Feng_Yu : 现在软解的确是性能达不到,CPU利用率太高。硬解还需要再研究下,问什么不能硬解。

断爱 2022-01-07 06:28:56

回复
你的视频有4K吗?以目前CPU的性能,软解1080p都不成问题,你可以测试一下你的视频软解能达到多少FPS?以我的i5-6200U的CPU测试结果来看,软解1080p的H.264视频也能达到100多FPS,是足够了。软解相对来说效果会好一些。你找一批同样的视频测试一下,如果只是极个别视频硬解失败那就是视频编码的问题了

本王不退位尔等都是臣 2022-01-06 07:41:17

回复
@Feng_Yu : 软解1路是没问题的,问题是要同时解码16路。而且不是在我电脑上,我这只是编译下,最终还是要在Intel3350上跑的,所以必须用的硬解,前几天就软解一路1080P Intel3350的cpu就干到了30%,16路就别提了呢,岂不是要卡死了。

无法言说的痛 2022-01-04 03:19:05

把你的视频用mediainfo分析下,贴出文本分析结果看看。看看视频编码是否支持硬解?从你的vainfo输出结果看,你的intel显卡支持MPEG2, H.264, VC1这三种编码的硬解码。

EDIT: 把你的ffmpeg测试硬解的命令行贴出来,另外试试官方或者第三方编译的ffmpeg呢?比如ubuntu下可以试试这个ppa: https://launchpad.net/~jonathonf/+archive/ubuntu/ffmpeg-4/+packages

按照官方文档(官方文档关于vaapi部分见这里: https://trac.ffmpeg.org/wiki/Hardware/VAAPI),测试vaapi硬解的命令应为:

ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -i <你的mp4视频路径> -f null -

看看能正常硬解吗?如果官方或者第三方编译的ffmpeg可以正常硬解,那么应该是你的编译问题了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文