Code Monkey home page Code Monkey logo

Comments (19)

wang-bin avatar wang-bin commented on June 12, 2024

log里看不出什么原因,加上环境变量MDK_LOG_STATUS=1会打印时间信息。用DecodeFps.exe -c:v MFT:d3d=11 ...可以看看解码能达到多少。mft的软解性能很差,会卡不意外。你可以找个libdav1d.dll放进来然后-c:v dav1d看看解码效果。potplayer是用硬解吗?

from mdk-sdk.

wang-bin avatar wang-bin commented on June 12, 2024

你也可以对比不设置解码器,会调用ffmpeg,ffmpeg好像会自动调用av1的硬解。另外ffplay的日志也可以发一下

from mdk-sdk.

orency avatar orency commented on June 12, 2024

log里看不出什么原因,加上环境变量MDK_LOG_STATUS=1会打印时间信息。用DecodeFps.exe -c:v MFT:d3d=11 ...可以看看解码能达到多少。mft的软解性能很差,会卡不意外。你可以找个libdav1d.dll放进来然后-c:v dav1d看看解码效果。potplayer是用硬解吗?

环境变量不知设置在哪里,无论设置在系统还是主程序都没看见什么时间信息
DecodeFps.exe 不知为什么只能看见cpu占用提高,并不能显示出什么信息
potplayer应该是软解,我的显卡并不支持硬解av1
拿vlc的libdav1d.dll来用会直接闪退
logdav1d.txt
不设置解码器的情况下24帧率文件卡顿较轻微肉眼不易察觉,60帧率文件依旧肉眼可见卡顿.
并且主动设置解码器为FFmpeg会直接崩溃.崩溃日志如下
log10.txt
ffplay正常日志
ffplay.log
测试用的4k av1 60帧视频下载自https://www.youtube.com/watch?v=xmESOGcXjmI
这种剧烈运动的视频与potplayer对比卡顿尤为明显

from mdk-sdk.

wang-bin avatar wang-bin commented on June 12, 2024

我测了下这里下载的libdav1d.dll没问题 https://code.videolan.org/videolan/dav1d/-/pipelines

ffplay检测到不支持硬解会使用dav1d。我这边后面改下,默认不设解码器的话也自动使用dav1d

from mdk-sdk.

wang-bin avatar wang-bin commented on June 12, 2024

decodefps 输出:

$ ./DecodeFps -c:v  dav1d /d/v/wanderers.mp4
MDK 0.13.0 (git 33a29de) - Multimedia Development Kit. Copyright (c) 2016-2022 WangBin(QtAV author) <wbsecg1 at gmail.com>
Build for: Windows0x0600 x86_64; MSVC1930; MSVCRT14.30.30705.0/msvcp140.dll; 16:30:32 Jan  9 2022
usage: D:\install\mdk-sdk\bin\x64\DecodeFps.exe [-c:v DecoderName] [-from milliseconds] file
decoded: 273, elapsed: 667, fps: 409.3/450.7409.3/450.7, fmt: 1019212016
invalid frame. eof?
frame count: 273, render count: 274

from mdk-sdk.

wang-bin avatar wang-bin commented on June 12, 2024

最新的包支持不设置解码器时自动回退到dav1d(libdav1d.dll要存在)

from mdk-sdk.

orency avatar orency commented on June 12, 2024

最新的包支持不设置解码器时自动回退到dav1d(libdav1d.dll要存在)

经测试MDK 0.13.0 (git ba413b6)
不设置时仍旧是有人眼能感知到的跳帧感
log13.txt
日志中两个Error也不知有没有联系
但主动将解码器设置为dav1d时则完全流畅,毫无卡顿跳帧感
日志也能看到是直接调用dav1d而非ffmpeg
且cpu与gpu占用均比不设置解码器时低10-20个百分点
decodefps.exe确实毫无信息,只能看见它把cpu占高了,但framereader.exe有fps跳动的信息,不清楚是不是平台的原因

from mdk-sdk.

wang-bin avatar wang-bin commented on June 12, 2024

从log看并没有调用dav1d也没解码出画面,log发错了?

from mdk-sdk.

orency avatar orency commented on June 12, 2024

从log看并没有调用dav1d也没解码出画面,log发错了?

是发错了,那个是主动设置解码器为FFMPEG时日志,只有声音没有画面
不设置解码器的日志
01-19 19-58-14.txt

from mdk-sdk.

wang-bin avatar wang-bin commented on June 12, 2024

从log看并没有调用dav1d也没解码出画面,log发错了?

是发错了,那个是主动设置解码器为FFMPEG时日志,只有声音没有画面 不设置解码器的日志 01-19 19-58-14.txt

你这个是调了MFT:d3d=11,默认什么解码器都不设会走dav1d。你是用哪个程序测的?对了,你是什么显卡?你用dxvachecker看下你的显卡是否支持av1硬件,不能硬解的话MFT:d3d=11没报错我倒是第一次碰到,行为跟硬解一样。framereader用各解码器给出的帧率是多少?

from mdk-sdk.

orency avatar orency commented on June 12, 2024

显卡是Radeon Graphics(Renoir),amd的核显.测下来不支持av1硬解
测试程序是qt示例qmdkplay,qt msvc 6.2.2,win11
dav1d解码
decoded: 13844/1, elapsed: 164122, fps: 84.4/207.8
decoded: 13844/1, elapsed: 159769, fps: 86.7/227.0
MFT:d3d=11解码
decoded: 13844/1, elapsed: 208358, fps: 66.4/146.8
MFT:d3d=0解码
decoded: 13844/1, elapsed: 195266, fps: 70.9/180.8
不设置解码器
decoded: 13844/1, elapsed: 159119, fps: 87.0/219.2
FFmpeg、D3D11、DXVA解码器均报invalid frame.

不报错的原因好像是我装了微软商店的av1videoextension,
dxvachecker可以直接调用这个av1decodermft_store.dll播放,
但它的cpu占用比dav1d还低,应该效率比dav1d还要高,完全不跳帧
不清楚问题出在哪里

from mdk-sdk.

wang-bin avatar wang-bin commented on June 12, 2024

你的显卡应该支持av1硬解的。可以运行framereader -c:v MFT:d3d=11 a.mp4 然后看任务管理器gpu使用率变化
image

你这边卡顿有可能和opengl渲染有关,你用d3d11渲染试试,glfwplay.exe -c:v MFT:d3d=11 -d3d11 a.mp4,或者运行install.bat,然后文件右键选择glfwplay播放

from mdk-sdk.

wang-bin avatar wang-bin commented on June 12, 2024

-c:v D3D11也可以试试,如果能硬解的话这个也可以解码

from mdk-sdk.

orency avatar orency commented on June 12, 2024

-c:v D3D11 无法播放,它的MFT:d3d=11 播放能力确认来自AV1 Video Extension ,把这个插件卸载后MFT:d3d=11也无法播放
gpu占用只有12% ,cpu却达到60%,是软解无疑
d3d11渲染感觉差别不大,仍旧有轻微跳帧感,特别是有移动镜头长画面时,dav1d解码明显是连贯顺畅的,MFT:d3d=11则有些许不连贯跳帧感,但谈不上严重卡顿
但dxvachecker调用AV1 Video Extension的av1decodermft_store.dll播放,则很顺滑与glfwplay调dav1d表现相同.

from mdk-sdk.

wang-bin avatar wang-bin commented on June 12, 2024

glfwplay加上参数-fps -1会以最快的速度解码和渲染,你看看有没有卡顿,如果没有的话应该是我音视频同步的问题

from mdk-sdk.

orency avatar orency commented on June 12, 2024

glfwplay加上参数-fps -1会以最快的速度解码和渲染,你看看有没有卡顿,如果没有的话应该是我音视频同步的问题

在MDK 0.13.0 (git 8f7983f)测试,
MFT:d3d=11加这个参数反而加剧了这种现象,且音频完全不同步了
后来意识到之前表述其实是不准确的,其实是一种帧率略快而跳帧的快进感而非卡顿感
因为dav1d加上这个参数与MFT:d3d=11现象是类似的

奇怪的是MFT:d3d=11下player_->mediaInfo().video[0].codec.frame_rate得到的帧率也是正确的
更怪的是手动setFrameRate()为该文件正确帧率,没有快进感了,但画面速度反而过慢了,当然音频也不同步了

另外问下为何mediainfo要播放几秒才能获取,setmedia之后立即获取,它的几个属性值均为0?

from mdk-sdk.

wang-bin avatar wang-bin commented on June 12, 2024

你用最新的dll再发个完整log

from mdk-sdk.

orency avatar orency commented on June 12, 2024

你用最新的dll再发个完整log

MDK 0.14.0 (git f7623f2)
logs.txt
这版本MFT:d3d=11音视频完全不同步了😎画面比声音慢好多

from mdk-sdk.

wang-bin avatar wang-bin commented on June 12, 2024

glfwplay加上参数-fps -1会以最快的速度解码和渲染,你看看有没有卡顿,如果没有的话应该是我音视频同步的问题

在MDK 0.13.0 (git 8f7983f)测试,
MFT:d3d=11加这个参数反而加剧了这种现象,且音频完全不同步了

-fps -1 是尽可能快地解码和渲染,不管音视频同步

后来意识到之前表述其实是不准确的,其实是一种帧率略快而跳帧的快进感而非卡顿感

跳帧 应该不至于

奇怪的是MFT:d3d=11下player_->mediaInfo().video[0].codec.frame_rate得到的帧率也是正确的

这个是视频的固有信息,和播放状态没关系

另外问下为何mediainfo要播放几秒才能获取,setmedia之后立即获取,它的几个属性值均为0?

要在视频加载完成时去读取,可以参考 https://github.com/wang-bin/mdk-examples/blob/master/Native/MediaInfoReader.cpp#L23https://github.com/wang-bin/mdk-examples/blob/master/Native/offscreen.cpp#L43https://github.com/wang-bin/mdk-examples/blob/master/Native/offscreen.cpp#L23

你用最新的dll再发个完整log

MDK 0.14.0 (git f7623f2) logs.txt 这版本MFT:d3d=11音视频完全不同步了😎画面比声音慢好多

也没改相关的代码,挺奇怪的。我这边测了一台能硬解av1的机子,glfwplay -c:v MFT:d3d=11 -d3d11 播放8k 10bit hdr 60fps 在全屏模式下(F键切换)是流畅的,非全屏一卡一卡,但解码速度和渲染速度是没问题的,这个也不清楚为什么。

from mdk-sdk.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.