ffmpeg使用vaapi硬解出错? 400 报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

ffmpeg使用vaapi硬解出错? 400 报错

爱吃鱼的程序员 2020-06-03 11:53:16 332

ffmpeg使用vaapi硬解出错? 400 报错

系统: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;
}


 

分享到
取消 提交回答
全部回答(1)
  • 爱吃鱼的程序员
    2020-06-03 11:53:29

    把你的视频用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可以正常硬解,那么应该是你的编译问题了

    ######回复 @Feng_Yu : 软解1路是没问题的,问题是要同时解码16路。而且不是在我电脑上,我这只是编译下,最终还是要在Intel3350上跑的,所以必须用的硬解,前几天就软解一路1080P Intel3350的cpu就干到了30%,16路就别提了呢,岂不是要卡死了。######回复 @gspite : 你的视频有4K吗?以目前CPU的性能,软解1080p都不成问题,你可以测试一下你的视频软解能达到多少FPS?以我的i5-6200U的CPU测试结果来看,软解1080p的H.264视频也能达到100多FPS,是足够了。软解相对来说效果会好一些。你找一批同样的视频测试一下,如果只是极个别视频硬解失败那就是视频编码的问题了######回复 @Feng_Yu : 现在软解的确是性能达不到,CPU利用率太高。硬解还需要再研究下,问什么不能硬解。######回复 @gspite : 是支持的,多找几个样本看看,编码参数应该都是一致的。如果只是个别现象,那么说明视频有问题,无法硬解。我个人不建议硬解的,因为支持度不够好,如果软解性能够的话,通常不建议使用硬解。转码的瓶颈一般在编码阶段,而不是解码阶段,硬解无法带来实质的性能提升,硬编码倒是有点意义。想追求效果和压缩率,就用软解+软编码######回复 @Feng_Yu : vainfo 看到VAProfileH264ConstrainedBaseline: VAEntrypointVLD 应该说这个libva是支持baseline的吧######

    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 信息

    ######回复 @Feng_Yu : 稍等哦,我把源码发下######尽量不要贴图,直接复制出来文本容易看######

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

    ######已经解决了######回复 @gspite : 这个是api限制,绕不过去的,你查一下Intel GPU解码的文档,看一下哪个api版本支持baseline,是否升级或者降级驱动可以解决######后期硬解后也的确遇到您说的问题,不支持H264 baseline。想问是否有方式强制硬解呢?######回复 @Feng_Yu : 或者老哥是否方便加个qq?565831374######那是兼容的,通常支持
    0 0
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章