NMM视频技术(旧)

 找回密码
 成为会员
搜索
查看: 7397|回复: 9

[AVS技巧] 【求助】avs调用低码率neroaac出现错误

[复制链接]
发表于 2009-9-9 00:07 | 显示全部楼层 |阅读模式
央视网站上
发布的高清视频
E:\[商道]论道迪斯尼之一:不是冤家不聚头(2009.08.31)\qgds_h264818000nero_aac32_20090902_1251894046782-1.mp4

   General
      Complete name : E:\[商道]论道迪斯尼之一:不是冤家不聚头(2009.08.31)\qgds_h264818000nero_aac32_20090902_1251894046782-1.mp4

      Format : MPEG-4
      Format/Info : ISO 14496-1 Base Media
      Format/Family : MPEG-4
      File size : 17.4 MiB
      PlayTime : 2mn 57s
      Bit rate : 821 Kbps
      StreamSize : 59.0 KiB
      Encoded date : UTC 2009-09-01 06:58:28
      Tagged date : UTC 2009-09-01 06:58:28
   Video #1
      Codec : H.264
      Codec/Info : H.264 (3GPP)
      PlayTime : 2mn 57s
      Bit rate : 787 Kbps
      Width : 480 pixels
      Height : 360 pixels
      Display Aspect ratio : 4/3
      Frame rate : 25.000 fps
      Bits/(Pixel*Frame) : 0.178
      StreamSize : 16.6 MiB
      Encoded date : UTC 2009-09-02 06:46:44
      Tagged date : UTC 2009-09-01 06:58:33
   Audio #2
      Codec : AAC LC-SBR
      Codec/Info : AAC Low Complexity with Spectral Band Replication
      PlayTime : 2mn 57s
      Bit rate : 32 Kbps
      Bit rate mode : VBR
      Channel(s) : 2 channels
      Channel positions : L R
      Sampling rate : 48 KHz
      Resolution : 16 bits
      StreamSize : 698 KiB
      Encoded date : UTC 2009-09-01 06:58:19
      Tagged date : UTC 2009-09-01 06:58:33

每期节目都分成大约18MB的数个文件
想用avs将其合并欣赏
结果发现音频不对劲
经过测试发现avs调用音频时
发生错误
主要原因是音源码率过低
经过分析得到结论:用neroaac编码,当码率低于39500(即35499~)时,avs调用就会产生采样错误,采样率降低至一半,即音频长度增加一倍,此现象只存在于neroaac,没有测试itunes的,装一次太麻烦了,faac没此情况,附:faac编码太差了,在低码率上很能听出,realaac,avs提示不支持。
而且发现goldwave的解码原理与avs的相同,解码采样率低于39500的neroaac时,goldwave直接解码音源,得到结果与avs结果一样。而千千静听则可以正常编码解码。

这里的问题是:
如何让指定avs所用的解码器,尝试了LoadPlugin("Aac.dll"),提示是dll,怎么才能选择合适的dll
如何给系统指定解码器,例如goldwave如果能正常解码的话,avs也可以了,用goldwave解码时,提示无法识别格式,修改后缀名为aac,则可解码,可是得到结果是采样错误,但是用其他的系统依赖性播放器如wmp、mp2则音频解码无问题,而系统内部有很多解码器,我是通过kmp带的ax以及官方的ax注册的。
如何查看播放器播放时都调用了什么ax、dll
avs可以调用ffdshow video decoder,但是同样的手段却调用不了ffdshow audio decoder

附上两张图片:
0 goldwave直接解码mp4(neroaac)
0.JPG
1 goldwave解码经千千静听编码的wav
1.JPG
发表于 2009-9-9 10:02 | 显示全部楼层
LoadPlugin("Aac.dll"),这个根本不是AVS的插件,当然无法载入,据我所知目前为止AVS还没有针对AAC的source plugin,DirectShowSource调用的你系统的decoder,跟AVS本身有无BUG无关,出现错误便是你的设置问题。

如果楼主会用adobe audition或者cool edit的话,试试这个插件,里面包含了FAAC 1.28和FAAD2 2.7。

FAAC.flt

1.12 MB, 下载次数: 14027

 楼主| 发表于 2009-9-9 15:42 | 显示全部楼层
本帖最后由 一心月 于 2009-9-9 17:49 编辑

我安装上了完美天空 Adobe Audition 3.0 完美者特别优化版
当导入mp4是显示:
0.JPG
1.JPG
将最新版的libfaac.dll和libfaad2.dll放置在运行程序的目录下,无效
又将ttplayer中的aac.dll放置在运行程序的目录下,也无效

我使用goldwave的原因有两个:
1 操作简单
2 完全满足我的需求

仍继续那句话,如果goldwave可以正常解码码率小于49500的neroaac,则avs也可以正常加载并播放该音频了

关键的是,我的goldwave可以解码aac,但是仍不知道加载的插件、解码器都是哪些,即不知道解码错误的原因,莫非是解码一样,只不过其他播放器调用了另外别的东西修正了解码产生的错误?

新情况,发现央视的视频点播的高清模式文件的音频编码是AAC+,ttplayer播放原mp4,正常,播放码率小于49500的neroaac也与goldwave一样错误,而其他播放器没问题
总结:avs与goldwave无法正常解码码率小于49500的AAC+,avs与goldwave、ttplayer无法正常解码码率小于49500的neroaac

以下是mp2在播放时调用的滤镜:

片源mp4:
CoreAVC Video Decoder/ffdshow Video Decoder
Default DirectSound Device
Morgan Stream Switcher
MPA Decoder Filter
Video Renderer

avs加载mp4时(音频采样出错):
Default DirectSound Device
Morgan Stream Switcher
Video Renderer

32Kbps neroaac:
Default DirectSound Device
Morgan Stream Switcher
MPA Decoder Filter

avs调用32Kbps neroaac:
Default DirectSound Device
Morgan Stream Switcher

结论:avs无法调用CoreAVC Video Decoder、ffdshow Video Decoder、MPA Decoder Filter,卸载了MPA Decoder Filter,mp2也可正常播放,则说明看滤镜看不出问题,只有针对dll了,貌似某安全软件可以查看调用的dll,我在调查一下
 楼主| 发表于 2009-9-9 15:59 | 显示全部楼层
接上文
对比了一下调用的相关文件
无法看出端倪
貌似mp2启动时就加载了哪些文件
所以还要从avs的自动从系统中的调用入手
发表于 2009-9-9 21:48 | 显示全部楼层
本帖最后由 Holy 于 2009-9-9 21:52 编辑

用 DirectShowSource 載入 mp4 時會調用的 decoder,就跟你用 mplayer2 直接播放這個 mp4 後在 Filters 列表看到的 decoder 完全相同,從 3 樓看出你用 mplayer2 播放 mp4 時是調用 MPA Decoder Filter,那表示你在 AVS 內用 DirectShowSource 載入 mp4 後 AviSynth 就是調用 MPA Decoder Filter 來解碼音頻,所以出錯的並不是 AviSynth,它只是去調用系統上優先權最高的 Decoder 來解碼而已,你想讓它用 ffdshow Audio Decoder 來解碼音頻,那就把 MPA Decoder Filter 卸載後再用 mplayer2 播放 mp4,看 Filters 列表內現在是不是調用 ffdshow Audio Decoder 來解碼了,所以你的問題根本沒那麼複雜,只要把其他雜七雜八的音頻解碼器卸載讓 ffdshow Audio Decoder 擁有最高優先權就行了,最重要的是在 ffdshow Audio Decoder Configuration 內 AAC 這個格式是設定 libfaad2 而不是 disabled 了…。
发表于 2009-9-9 22:42 | 显示全部楼层
MP4和AAC是两回事,AAC是音频编码格式,MP4是一种多媒体容器。

还有,你随便把几个dll放到AA目录里想叫它识别,这是不现实的,这跟用AVS载入aac.dll的道理是一样的。我上传的FAAC.flt文件才是正确的AA插件。

avs从不会调用你的解码器,DirectShowSource调用的你系统的decoder,跟AVS本身有无BUG无关,出现错误便是你的设置问题。

话说,从前有座山,山里有个叫GraphEdit的东西。
 楼主| 发表于 2009-9-10 08:07 | 显示全部楼层
GraphEdit分析:
neroaac:
0.JPG
avs加载neroaac:
1.JPG
很明显avs没有调用MP4Splitter.ax和MpaDecFilter.ax
但是卸载掉MP4Splitter.ax和MpaDecFilter.ax又都无法播放

我用的是AviSynth_090820.exe,2.6.0

我不知道该情况是否正常
发表于 2009-9-10 09:01 | 显示全部楼层
很正常。

经过AVS处理的媒体文件已经不再是之前的编码了,这时可以认为AVS就是一种编码格式,所以也就不再需要MP4分离器和MPA解码器。

你贴的第一张图才是DirectShowSource的处理过程,而AVS是利用DirectShowSource将源媒体转换为Avisynth audio。

你可以把这个AVS文件放到播放器里播放,如果没有问题就OK了,将所有文件在AVS中合并到一起,再用VDM打开AVS,存出合并完成的音轨。

其实如果用AVS的话,合并音轨根本用不到AA等编辑软件的。
发表于 2009-9-13 18:08 | 显示全部楼层
lc/sbr 的 aac 确实不大容易处理
个人建议楼主直接用 mkvmerge 追加合并
发表于 2010-8-11 22:25 | 显示全部楼层
本帖最后由 Nowers 于 2010-8-11 22:30 编辑
我安装上了完美天空 Adobe Audition 3.0 完美者特别优化版
当导入mp4是显示:


将最新版的libfaac.dll ...
一心月 发表于 2009-9-9 15:42

^
试过Adobe Audition 3.0绿色版可用ttplayer的aac插件,原来是NERO 6的组件,把Aac.dll、aacenc32.dll、NeroIPP.dll这3个dll文件放到Adobe Audition 3.0的目录里即可。

nero_aac.rar (1.05 MB, 下载次数: 14569)
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

小黑屋|手机版|NMM视频技术

GMT+8, 2024-3-29 19:20 , Processed in 0.456384 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表