Comments (19)
log里看不出什么原因,加上环境变量MDK_LOG_STATUS=1会打印时间信息。用DecodeFps.exe -c:v MFT:d3d=11 ...可以看看解码能达到多少。mft的软解性能很差,会卡不意外。你可以找个libdav1d.dll放进来然后-c:v dav1d看看解码效果。potplayer是用硬解吗?
from mdk-sdk.
你也可以对比不设置解码器,会调用ffmpeg,ffmpeg好像会自动调用av1的硬解。另外ffplay的日志也可以发一下
from mdk-sdk.
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.
我测了下这里下载的libdav1d.dll没问题 https://code.videolan.org/videolan/dav1d/-/pipelines
ffplay检测到不支持硬解会使用dav1d。我这边后面改下,默认不设解码器的话也自动使用dav1d
from mdk-sdk.
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.
最新的包支持不设置解码器时自动回退到dav1d(libdav1d.dll要存在)
from mdk-sdk.
最新的包支持不设置解码器时自动回退到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.
从log看并没有调用dav1d也没解码出画面,log发错了?
from mdk-sdk.
从log看并没有调用dav1d也没解码出画面,log发错了?
是发错了,那个是主动设置解码器为FFMPEG时日志,只有声音没有画面
不设置解码器的日志
01-19 19-58-14.txt
from mdk-sdk.
从log看并没有调用dav1d也没解码出画面,log发错了?
是发错了,那个是主动设置解码器为FFMPEG时日志,只有声音没有画面 不设置解码器的日志 01-19 19-58-14.txt
你这个是调了MFT:d3d=11,默认什么解码器都不设会走dav1d。你是用哪个程序测的?对了,你是什么显卡?你用dxvachecker看下你的显卡是否支持av1硬件,不能硬解的话MFT:d3d=11没报错我倒是第一次碰到,行为跟硬解一样。framereader用各解码器给出的帧率是多少?
from mdk-sdk.
显卡是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.
你的显卡应该支持av1硬解的。可以运行framereader -c:v MFT:d3d=11 a.mp4 然后看任务管理器gpu使用率变化
你这边卡顿有可能和opengl渲染有关,你用d3d11渲染试试,glfwplay.exe -c:v MFT:d3d=11 -d3d11 a.mp4
,或者运行install.bat,然后文件右键选择glfwplay播放
from mdk-sdk.
-c:v D3D11也可以试试,如果能硬解的话这个也可以解码
from mdk-sdk.
-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.
glfwplay加上参数-fps -1
会以最快的速度解码和渲染,你看看有没有卡顿,如果没有的话应该是我音视频同步的问题
from mdk-sdk.
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.
你用最新的dll再发个完整log
from mdk-sdk.
你用最新的dll再发个完整log
MDK 0.14.0 (git f7623f2)
logs.txt
这版本MFT:d3d=11音视频完全不同步了😎画面比声音慢好多
from mdk-sdk.
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#L23 、https://github.com/wang-bin/mdk-examples/blob/master/Native/offscreen.cpp#L43 、https://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)
- 请教一个问题,onFrame 在窗口最小化时就没有回调了,导致窗口最小化时视频相当于就被暂停了,有什么好的解决方法吗 HOT 12
- Optimize seek(0, mdk::SeekFlag::FromStart) HOT 1
- App crashes onFrame during seek HOT 4
- OpenCV Support HOT 4
- Get current timestamp to update Slider HOT 1
- 建议写一个positionChanged的信号 HOT 4
- seek(-1LL, SeekFlag::FromNow|SeekFlag::Frame) 似乎退了几帧之后就无法再继续后退了 HOT 5
- rtsp内存泄露 HOT 17
- The video is not displayed when using QUdpSocket HOT 11
- WAV not playing HOT 1
- Audio synchronization with external sync callback and audio stream HOT 1
- mdk支持安卓上打开本地摄像头吗? HOT 5
- qt+macos上如何引入文件? HOT 3
- Unable to get pixel aspect ratio of a video HOT 3
- Video stuttering when rendering to SFML texture HOT 21
- Wrong 5.1 to 2.0 downmix HOT 2
- problem with using method "record()" HOT 13
- 您好,我如何获取,视频帧实际渲染的宽高是多少? HOT 11
- ASS字幕视频渲染透明问题 HOT 2
- mdk中如何设置打开超时? HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mdk-sdk.