POPPUR爱换

标题: 解决mkv不能硬解码问题。 [打印本页]

作者: iiovk    时间: 2007-8-29 07:05
标题: 解决mkv不能硬解码问题。
已经找到完美方法了。有人需要教程吗?
作者: jocover    时间: 2007-8-29 07:15
我要哦:loveliness:
作者: doggod    时间: 2007-8-29 07:34
想说就说,
不想说就不要说。
作者: hp4123533    时间: 2007-8-29 07:36
要啊要啊,该死的mkv直接导致我滴珍珠港木有办法看w00t)
作者: iiovk    时间: 2007-8-29 07:44
其实方法很简单,就三步,就是把mkv封装的重新组装成avi封装的就能完美播放拉。  我试了几个都没问题。 直接用PD的h264解码器就能播放,不用kmp都可以,我用的k lite 播放器+windows2003系统。
作者: iiovk    时间: 2007-8-29 07:45
Step 1 Take your MKV file run it throught mkv2vfr (command line mkv2vfr name.mkv name.avi)

Step 2 Take the MKV file again and run through mkvguiextract (load the mkv file, and just extract the audio)

Step 3 Take the AVI file and the AC3 and run though avi-mux gui (output settings - AVI ; make rec lists ticked, mp3 and add junk off)
作者: iiovk    时间: 2007-8-29 07:48
这下我的老P4都能流程看1080的大片了,哈哈,还可以刻dvd5的盘。 现在网上4G左右的基本都是mkv的x264,真不明白为什么不封装成avi.弄的想硬解还要自己重新封装一下。
作者: goldman948    时间: 2007-8-29 08:35
4g左右的都是resize过的,不是1080p的.
用PC播放mkv根本不需要再转成avi.....:wacko:
MKV根本不是编码,硬不硬解也跟MKV没有关系
作者: iiovk    时间: 2007-8-29 08:40
ls误解了,目前90%的mkv 264都没法开起dxva硬解, 这个问题存在很久了。现在发现转换成avi封装的就可以用dxva硬解码。 mkv是可以用pc播放没问题,但是只能用软解码的。还有4G的也有1080p的,只不过是压缩率高点,不用dxva硬解的话 至少要肉双核才流畅。
作者: greenfox    时间: 2007-8-29 10:27
原帖由 iiovk 于 2007-8-29 08:40 发表
ls误解了,目前90%的mkv 264都没法开起dxva硬解, 这个问题存在很久了。现在发现转换成avi封装的就可以用dxva硬解码。 mkv是可以用pc播放没问题,但是只能用软解码的。还有4G的也有1080p的,只不过是压缩率高点 ...


我同事用OC的3600+X2 + 1G DDRII667+690G看4G左右的H2.64电影也很流畅啊,用的是终极解码,没觉得不流畅,至于是硬解还是软解就不知道了,另外4G左右的H2.64的电影到底是什么分辨率的啊?也是1080P的?为什么我看好多1080P的大片都是18-30的呢?
作者: notfishcc    时间: 2007-8-29 10:35
首先感谢搂住提出的解决思路,基于这种方法可以对一部分为mkv封装困扰的用户提供一个变通的解决方案。

但是问题在于这个变通损失了mkv封装所拥有的很多特性。
比如:
MKV可以封装超过2条的音轨,AVI容器最多允许两条;
MKV可以通过附件方式,封装外挂字幕所需要的字体以及图形附件
MKV可以支持Chapter,适用于制作分段选单
极其重要的一点,MKV支持基于timecode的VFR解决方案。

这里说说VFR可变帧率的问题,mkv支持VFR,AVI只能支持CFR固定帧率
大多数常见的电影文件,比如绝大多数Silu出品的HD电影,并不需要去关心帧率的问题,他们大部分是固定的24.00/23.976/29.970等帧率。对于这一类的mkv文件,按照LZ的方法使用mkv2vfr来还原为AVI播放基本上没有什么问题。
但是如果本来是VFR的MKV文件会怎么样呢。我们得到的是一个CFR的AVI文件和一个timecode文本文件。这时如果我们直接播放或者封装这个AVI的话得到的只是一个时间错误的AVI文件。因为我们没有用上那个timecode.如果要用上这个timecode必须用相应的软件封装为120fps模式的AVI文件才能获得正确的时间。而事实上PowerDVD的H.264解码器正确识别120fps模式的AVI内的视频流,视频会按照每秒120帧的速度被播放,都会自动drop掉Null Frame。要是遇到由AutoVFR生成的很复杂的VFR文件,问题更加严重。

一般的用户可能电影占大多数,我这里却是数千集的动画片,其中很大一部分都应用了mkv的各种特性,不是AVI所能解决的。
所以LZ的处理方法对我来说意义不大。:lol:

[ 本帖最后由 notfishcc 于 2007-8-29 10:53 编辑 ]
作者: Edison    时间: 2007-8-29 10:43
只要分离器选择正确,100%都可以直接DXVA,不需要demux。
作者: notfishcc    时间: 2007-8-29 11:04
我不认为这是一个单纯的分离器的问题。
一个特别的现象,我使用x264编码器编码有两年多了
最早一批生成的mkv出现的现象是滤镜显示dxva生效的,但是画面闪动,只有声音没有图像。
中期编码制作的mkv在1024X576和640X480的这两个分辨率上有80%左右的机会可以正确实现dxva输出画面声音都正常。
近期编码的mkv各种超过720p的分辨率完全无法播放,声音都没有。小于720p的dxva会自动失效,但是画面声音正常。

由此我估计,x264编码的设置与编码器的版本还有分辨率都有可能能影响硬件加速的效果。
作者: benbenboom    时间: 2007-8-29 11:15
4G……1080P?

:wacko:

基本上不算hd吧……
作者: Edison    时间: 2007-8-29 11:22
原帖由 notfishcc 于 2007-8-29 11:04 发表
我不认为这是一个单纯的分离器的问题。
一个特别的现象,我使用x264编码器编码有两年多了
最早一批生成的mkv出现的现象是滤镜显示dxva生效的,但是画面闪动,只有声音没有图像。
中期编码制作的mkv在1024X57 ...


你用的是x264 cli还是x264 vfw?

我这里用cli,编码为1080p都完全没问题。


x264.exe --bitrate 3000 --ref 3 --bframes 3 --b-pyramid --b-rdo --bime --weightb --subme 6 --trellis 1 --analyse all --8x8dct --threads 2 --thread-input --progress --no-psnr --output "xxxx.mp4" "xxxx.avs"
.avs文件内容如下:
# Created with Gordian Knot
#
# http://gknot.doom9.org

# PLUGINS
LoadPlugin("C:PROGRA~1GORDIA~1DGMPGDecDGDecode.dll")
LoadPlugin("C:PROGRA~1GORDIA~1AviSynthPluginsdecomb.dll")
#LoadPlugin("C:PROGRA~1GORDIA~1AviSynthPluginsKernelDeInt.dll")
LoadPlugin("C:PROGRA~1GORDIA~1AviSynthPluginsUnDot.dll")
#LoadPlugin("C:PROGRA~1GORDIA~1AviSynthPluginsdgbob.dll")
#LoadPlugin("C:PROGRA~1GORDIA~1AviSynthPluginsConvolution3d.dll")
#LoadPlugin("C:PROGRA~1GORDIA~1AviSynthPluginsFluxSmooth.dll")
#LoadPlugin("C:PROGRA~1GORDIA~1AviSynthPluginsTomsMoComp.dll")
#LoadPlugin("C:PROGRA~1GORDIA~1AviSynthPluginsVSFilter.dll")
#LoadPlugin("C:PROGRA~1GORDIA~1AviSynthPluginsSimpleResize.dll")

# SOURCE
mpeg2source("xxxx.d2v")

# TRIM
#trim(startframe,endframe)

# IVTC
#Telecide(order=1,guide=1).Decimate()
# or use
#IVTC(44,11,95)
#GreedyHMA(1,0,4,0,0,0,0,0)

# DEINTERLACING (1)
FieldDeinterlace()
#FieldDeinterlace(blend=false)
#TomsMoComp(1,5,1)

# DEINTERLACING (2)
#KernelDeInt(order=1,sharp=true)
# or maybe
#DGBob(order=1,mode=0)

# DEINTERLACING (3) - special requests
#GreedyHMA(1,0,0,0,0,0,0,0)
#Telecide()
#SeparateFields()

# CROPPING
crop(0,0,1920,1080)

# SUBTITLES
#VobSub("FileName")

# RESIZING
LanczosResize(1920,1072)

# DENOISING: choose one combination (or none)
Undot()

# 1) little noise
#Temporalsoften(2,3,3,mode=2,scenechange=6)
#mergechroma(blur(1.3))
#FluxSmoothST(5,7)

# 2) medium noise
#Temporalsoften(3,5,5,mode=2,scenechange=10)
#Convolution3d("moviehq")
#FluxSmoothST(7,7)

# 3) heavy noise
#Temporalsoften(4,8,8,mode=2,scenechange=10)
#Convolution3d("movielq")
#FluxSmoothST(10,15)

# BORDERS
#AddBorders(left,top,right,bottom)

# COMPRESSIBILITY CHECK
# !!!!Snip Size now has to be 14 for use in GKnot!
#SelectRangeEvery(280,14)

# FOOL CCEnc
#empty = BlankClip()
#AudioDub(last,empty)

作者: 1天    时间: 2007-8-29 11:22
……说真的,我还没见过MKV封装导致不能DXVA的……
作者: 木之羽    时间: 2007-8-29 11:23
请教mkv文件播放时如何加载音轨。
作者: iiovk    时间: 2007-8-29 11:24
终于知道为什么不能dxva了,问题都出在字幕上。 转换成avi封装的不带字幕就能dxva,外挂了字幕就不行了,mkv都是内侄强制字幕的,怪不得不能dxva .
作者: 1天    时间: 2007-8-29 11:26
原帖由 iiovk 于 2007-8-29 11:24 发表
终于知道为什么不能dxva了,问题都出在字幕上。 转换成avi封装的不带字幕就能dxva,外挂了字幕就不行了,mkv都是内侄强制字幕的,怪不得不能dxva .

内置强制字幕是什么意思……
作者: notfishcc    时间: 2007-8-29 11:28
我的也是cli

--pass 2 --bitrate 850 --stats ".stats" --ref 16 --mixed-refs --no-fast-pskip --bframes 3 --b-pyramid --b-rdo --bime --weightb --direct auto --filter 1,1 --subme 7 --trellis 2 --analyse all  --8x8dct --vbv-maxrate 60000 --me umh --threads 4 --thread-input --progress --no-psnr --no-ssim --output "D:DVDripS_20.mkv" "D:DVDripS_20.avs"
作者: Edison    时间: 2007-8-29 11:29
外挂字幕的。
作者: notfishcc    时间: 2007-8-29 11:32
其实综合很多问题,倒不如说PDVD的H264解码器兼容性太差。毕竟是针对HDDVD/BD设计的。

如果NV/ATI能够开放硬件加速的授权,让开源组织也能应用的话,也许很多问题可以迎刃而解。

DXVA应该是Microsoft提出的标准,对程序开发是否透明我没有了解过。以上只是期望。
作者: Edison    时间: 2007-8-29 11:33
在Vista下是可以实现调用DXVA2的硬件加速,毕竟DXVA2本身就提供了vc-1、h264对应的pin,但是那些开源组织天生就要跟版权代码过不去。
作者: iiovk    时间: 2007-8-29 11:35
标题: 回复 #21 Edison 的帖子
不是所有的mkv封装的都不能dxva,只有很少的可以 问题我也不知道是什么。 不过网上下大90%都不行。尤其是HDbits上的。 好象和字幕程序有冲突。
作者: 1天    时间: 2007-8-29 11:36
标题: 回复 #24 iiovk 的帖子
别用vobsub
作者: iiovk    时间: 2007-8-29 11:37
我试试把vobsub删了看看
作者: Edison    时间: 2007-8-29 11:39
晕死了,你犯了dxva的禁忌。:wacko:
作者: iiovk    时间: 2007-8-29 11:50
标题: 回复 #17 木之羽 的帖子
用mkvextract.exe把mkv里的声音分出来, 最后再用avi mux封装成avi的,刚才试了 用kmp就可以加字幕。k-lite不行。。。不过不知道能不能自己封装成ts格式的。
作者: orbitlee    时间: 2007-8-29 12:08
提示: 作者被禁止或删除 内容自动屏蔽
作者: 1天    时间: 2007-8-29 12:10
mkv的X264我也可以很顺利的打开DXVA啊:blink:
作者: Edison    时间: 2007-8-29 12:52
ffdshow的dxva我这里实现不了@@。
作者: notfishcc    时间: 2007-8-29 13:19
....本来想马上测试一下新的ffdshow
才想起...现在用的Remote Desktop.....:wacko:
作者: Edison    时间: 2007-8-29 13:25
原帖由 notfishcc 于 2007-8-29 13:19 发表
....本来想马上测试一下新的ffdshow
才想起...现在用的Remote Desktop.....:wacko:

这个也是可以在远端跑的吧。
作者: notfishcc    时间: 2007-8-29 13:43
试验了一下,未能找到任何有关DXVA的选项.....输出色系YV12
作者: iiovk    时间: 2007-8-29 14:03
什么时候nvidia也出个官方的NVIDIA PureVideoHD啊。 卡出了软件缺不出。。。。。
作者: Edison    时间: 2007-8-29 14:52
最简单的也是最复杂的方式还是mux成.ts ^^。
作者: nsun    时间: 2007-8-29 17:48
低CPU的一直都是YV12,DXVA不管什么封装都没出现过
作者: 1天    时间: 2007-8-29 18:02
楼上朋友的什么CPU……?不支持SSE2么……?
作者: sky88    时间: 2007-8-30 09:21
用完美解码,调用 nvidia的解码器不就行了
作者: ken1029    时间: 2008-4-10 19:29
现在用kmplayer plus 2008可以全部硬解MKV了
作者: littlemouse    时间: 2008-4-10 20:12
昏死,管理员的avs好奇怪。
dgmpgdec早就升级了
现在都用DGDecode_mpeg2source挂d2v了吧。
高清也FieldDeinterlace()吗?
不是应该ivtc吗?就算片源需要Deinterlace,也不要blend出鬼影啊。
做Deinterlace的话,yadif,TDeint都比FieldDeinterlace效果好的。

还有高清crop就够了吧。
不想缩小的话,不必resize吧,再LanczosResize会损失画质的吧。

求解?:blink:
作者: littlemouse    时间: 2008-4-10 20:17
昏,原来是2007-8-29号的贴,翻上来的。
作者: godlike    时间: 2008-4-10 21:16
:sweatingbullets: from beijing with love




欢迎光临 POPPUR爱换 (https://we.poppur.com/) Powered by Discuz! X3.4