联想拯救者 Lenovo Legion 通电自启 插电自启 通电开机 插电开机 Wake on AC-程序员宅基地

技术标签: windows  

联想拯救者 Lenovo Legion 通电自启 插电自启 通电开机 插电开机 Wake on AC


说明

我本身对硬件和系统底层一窍不通,这个本来很简单的功能折腾了整整两天。所以想到要写日志记下来。日志写的比较杂,但是我发现B站的拯救者官方账号有150w的粉丝,所以挂在博客上,希望对大家有帮助。

本文涉及到对BIOS的修改,由于硬件环境不同,可能会导致无法开机,并且无法保修。注意:At Your Own Risk


一、我的电脑

拯救者R720-15ikbn,6-7年前的电脑了。618打算购置显示器,所以笔记本打算盖上,然后用一个立式支架撑起来。但是屏幕盖上后,电源开关就被遮住了,这个时候就需要通过外部的手段开机。可以是Wake on AC或者Wake on Lan。我刚好有一个天猫精灵的公牛插座。所以一开始打算用通电开机的办法,但是由于BIOS上一直找不到相关的参数,无奈这两天都在研究Wake on Lan了。结果很郁闷,研究的时候无意中发现了通电自启的选项,Wake on Lan反而搞不定…

二、详细过程

1.BIOS选项

首先不管是Wake on AC还是Wake on Lan,都要开启对应的BIOS参数。查了资料,一般和电源相关的设置,按理说应该放在Power相关的项目里。联想的拯救者,还有神州、雷神的一部分型号使用的BIOS是InsydeH20 Setup Utility。按F2进入BIOS只会显示InformationConfigurationSecurityBootExit几个选项卡。当我发现别人的BIOS有非常多多参数,自己的只有这么一点,我意识到这些参数应该被隐藏了。然后就要解锁这些隐藏的菜单,进入对BIOS的修改过程

2.查阅改BIOS的资料

刚开始我在B站找到了两个视频(感谢万能的B站):
BIOS高级菜单解锁(雷神zero)
神舟 华硕 联想各个品牌bios通用解锁教程 解锁功耗墙 延长鸡血时间 内存超频 解放电脑性能

在Windows上直接修改BIOS,要安装一个叫做Intel Management Engine Interface的驱动,这个在联想官方的驱动页面上可以下载到。有了这个接口,我们根据这个接口的版本,可以在第三方找到对应版本的修改工具,下面是B站UP提供的网盘地址:
第3方汇集 Intel CSME System Tools

下载了压缩包以后,只需要解压Flash Programming Tool/WIN64下的FPTW64和两个dll文件。FPTW64可以在命令行下用于备份BIOS镜像和刷写BIOS镜像。备份了BIOS镜像后,我们要使用从镜像中提取和菜单相关的SetupUtility文件,对其反编译。反编译的文件中,会有Grayoutif和Suppressif这样的关键字,参考Step to UEFI (146)Grayoutif ,Suppressif和Setup联动的探索

Grayoutif和Suppressif是比较常用的控制命令。Grayoutif的作用是设定某一个 item 跟随另一个 item 的变化而被设置为灰色无法修改【参考1】。Suppressif的作用是设定某一个 item 跟随另一个 item 的变化而被自动隐藏【参考2】。

B站的UP通过简单调整和这两个关键字相关的布尔值实现对BIOS的解锁。

大家感兴趣可以看下上面两个视频,顺便把评论区翻一翻

3.修改BIOS失败

因为只是简单地调整逻辑表达式,而没有对变量做实际的修改,所以视频介绍的方法不太可能对BIOS功能本身造成影响。
照着视频操作了一波,重启按F2,没效果。
考虑到可能是BIOS的版本太旧。我的版本是4KCN23WW,所以到官网上找最新的驱动。无奈我的电脑好像已经被联想淘汰掉了,找不到我的R720的驱动页面,只能下载Y520的4KCN45WW安装。安装完重新照着视频的方法进行操作,可是在对提取出的SetupUtility进行反编译时,直接死循环了。。。无奈只能通过上面提到的FPTW64工具把我刚开始备份的4KCN23WW驱动刷回去,结果刷的时候提示Writing Protection,大概是这个版本的BIOS有特殊的保护机制
然后我又去驱动页面找了历史的BIOS驱动版本4KCN28WW回来重新安装,安装前在BIOS上打开了一个叫做BIOS BACK FLASH的参数,好像是版本回退相关的参数,不懂但是打开以防万一
然后,只能再想其它办法了。。。

4.换个思路:不修改BIOS?

在上面反编译出的SetupUtility文件中,可以直接搜索BIOS的菜单条目。所以重点关注下Power选项卡下的条目。无奈我在这个文件中没有发现和AC还有Power关键字相关的任何和通电自启的条目。但是在Power下有一个Wake on PMEWake on Modem RingModem Ring好像和电话线相关的,应该是通过打电话开启电脑?另外的一个PME Event Wake Up:Short for Power Management Event(电源管理事件),就是通过操作鼠标、键盘等设备进行开机,而Wake on Lan也是其中一种。
结合文章Step to UEFI (146)Grayoutif ,Suppressif和Setup联动的探索中提到的:

这两个选项都不会影响被设置的Item的设定值,比如,选项隐藏之前是 Enabled 的,那么虽然隐藏掉了, 实际取值还是 Enabled。上面的结论可以通过设置之后进入 Shell 使用 dmpstore 命令查看对应的变量来验证。

虽然BIOS条目被隐藏了,但是实际上变量都是有值的。而在反编译出的文件中,刚好Wake on PME条目的默认值是Enabled。

0xB7854 			Setting: Wake on PME, Variable: 0x86 {05 91 16 15 17 15 02 04 34 12 86 00 04 10 00 01 00}
0xB7865 				Option: Disabled, Value: 0x0 {09 07 0B 03 00 00 00}
0xB786C 				Option: Enabled, Value: 0x1 (default) {09 07 0C 03 10 00 01}
0xB7873 			End of Options {29 02}

没有Wake on AC,而Wake on PME。所以我的解决方案就变成了,不修改BIOS,通过天猫精灵这样的智能家居平台联动Wake on Lan开机。我找到了下面两篇文章:
使用天猫精灵实现计算机WOL网络唤醒
小爱同学网络唤醒(Wake on Lan,WOL)启动电脑

借用第一篇文章里的方案图:
在这里插入图片描述
这里需要家里要有一个软路由或者小型服务器,而我平常没有玩软路由。但是在第二篇文章,提到了他的网件路由器里面刷了梅林?我刚好有一个很垃圾网件路由器躺着吃灰。所以我才发现网件是可以刷软路由的。。。而且在Openwrt官网上找到了对应型号的固件。那就开始着手Wake on Lan

5.Wake on Lan原理

关于Wake on Lan,这里有篇文章写得很全面(有个要点:睡眠模式下的网络唤醒是操作系统负责处理的,而关机后,系统没有运行了嘛,所以网络唤醒交由主板处理):
WOL 网络唤醒避坑指南:常见问题的分析与内容补充
Wake on Lan缩写WOL,大概是关机后,主板仍对网卡保持微弱的供电,在外面看的时候就是关机后网卡灯还亮着,网卡会监听4343。然后我们可以发送一个特定格式的UDP包,一般叫做魔术包,包的格式是用6个FF开头(6个字节),后面跟上网卡的MAC地址重复16遍。网卡的Mac地址也是6个字节。所以加起来就是6+16*6=102个字节。当对应网卡收到这个包的时候,就会开机。
上面提到的智能家居的联动,需要一个家庭路由器/服务器,就是需要我们在上面跑一个API,当智能家居平台调用这个API时,就会触发向内网中发送一个魔术包。具体实现的话,这个API其实就是跑一个服务器,然后暴露一个接口,接口的具体功能就是发送魔术包。上面的文章用的是python脚本写,然而用java、python都是可以写的,很简单。
这里需要注意的一点是,平常我们的路由器使用DHCP服务器,所以网卡的IP地址可能会变。导致我们的魔术包发送不到准确的ip上。有些教程提到可以在路由上绑定网卡的ip和mac地址。以前我有这么试过,但可能是交换机的问题,直接把包发送给对应的ip,有时候不生效。
所以还有另外一个办法,就是向局域网中发送广播包。例如要给192.168.1.1发送魔术包,但是我们不指定这个ip地址,而是发给192.168.1.255,这样在这个局域网192.168.1.0/24内所有的在线的ip都会收到这个包,当然只有mac地址匹配了,对应的机器才会开机。至于局域网内有哪些设备是在线的?直接登录路由器后台就可以看到了

6.尝试Wake on Lan失败

Wake on Lan在Windows下的配置,就是在设备管理器下,选择有线网卡,编辑里面和WOL相关的几个参数,并且勾选Allow this device to wake the computer。我有一个小工具叫做WakeOnLanMonitor,可以监听4343的UDP端口。可以打开这个小工具,然后在安卓端下载WakeOnLan的App,向局域网广播魔术包。这时WakeOnLanMonitor就可以收到魔术包并显示出来。这个工具可以用来检查我们发送的魔术包是否正确。
当设置好网卡后,可以让系统进入Sleep(睡眠),然后测试在Windows系统睡眠的情况下是否能通过网络唤醒。这一步我可以成功。系统进入睡眠后,发送魔术包,键盘灯马上就能亮起。但是关机后,则无法唤醒。这个时候通过登录路由器后台,可以发现,当电脑完成关机后,会马上从路由器后台的在线设备上下掉。说明关机后,主板并没有向网卡供电。
查阅资料后,尝试了以下的办法:

  • 在电源管理中,将"快速启动"取消勾选
  • 在电源管理中,修改高级电源设置,将Link State Power ManagementSettingOff修改为Moderate power saving
    在这里插入图片描述
  • 网卡的属性>高级选项卡中,Green EthernetEnergy-Efficient EthernetPower Saving Mode这些关于节能的选项统统设为Disabled
    无奈尝试了诸多方法,反复开关机后,都无法解决关机后网卡断电的问题,无奈只能回到BIOS的思路上来。因为问题最有可能出在BIOS上

7.修改BIOS成功

我在B站又找到了这个视频:
联想拯救者R9000P 解锁BIOS高级选项 升级内存
视频下方提供了一个国外大神只做的工具:
[TOOL] Lenovo (H20) Bios Unlocker and Locker
视频里和帖子里的拯救者都是最近的较新的型号,用的是最新的图形化BIOS。但是我在帖子里看到,有位老铁的Y700 15-ISK用这个工具解锁成功。这个型号和我的电脑差不多是同一个时间点推出的。抱着试一试的心态,不行的话要么买编程器回来,要么RNM618直接换新了。。。
下载了exe工具下来,以管理员身份运行,运行完后提示The system could not find the environment option that was entere。但是帖子里有提到这一点。所以直接重启按F2,欧了

8.查找唤醒相关的BIOS参数

解锁菜单后,由于BIOS中的条目是在纷繁复杂,由于在SetupUtility的反编译文件同样为我们提供了关于菜单相关的条目,所以从这个文件中找线索。
在这里插入图片描述
搜索Power,最后是直接搜索Wake,发现了这堆内容,厚礼蟹~

0x9FB88 		Suppress If: {0A 82}
0x9FB8A 			Variable 0xAD8 equals 0x20 {12 06 D8 0A 20 00}
0x9FB90 			Setting: DeepSx Power Policies, Variable: 0x4 {05 91 72 0A 73 0A F6 02 05 00 04 00 10 10 00 06 00}
0x9FBA1 				Option: Disabled, Value: 0x0 {09 07 04 00 30 00 00}
0x9FBA8 				Suppress If: {0A 82}
0x9FBAA 					Variable 0xAE3 equals 0x2 {12 86 E3 0A 02 00}
0x9FBB0 						Variable 0xAE3 equals 0x4 {12 06 E3 0A 04 00}
0x9FBB6 						Or {16 02}
0x9FBB8 						Variable 0xAE3 equals 0x3 {12 06 E3 0A 03 00}
0x9FBBE 						Or {16 02}
0x9FBC0 					End {29 02}
0x9FBC2 					Option: Enabled in S4-S5/Battery, Value: 0x3 {09 07 74 0A 00 00 03}
0x9FBC9 					Option: Enabled in S3-S4-S5/Battery, Value: 0x5 {09 07 76 0A 00 00 05}
0x9FBD0 					Option: Enabled in S3-S4-S5, Value: 0x6 {09 07 77 0A 00 00 06}
0x9FBD7 				End If {29 02}
0x9FBD9 				Option: Enabled in S4-S5, Value: 0x4 {09 07 75 0A 00 00 04}
0x9FBE0 			End of Options {29 02}
0x9FBE2 		End If {29 02}
0x9FBE4 		Setting: LAN Wake From DeepSx, Variable: 0x5 {05 91 78 0A 79 0A F7 02 05 00 05 00 10 10 00 01 00}
0x9FBF5 			Option: Enabled, Value: 0x1 {09 07 03 00 00 00 01}
0x9FBFC 			Option: Disabled, Value: 0x0 {09 07 04 00 30 00 00}
0x9FC03 		End of Options {29 02}
0x9FC05 		Suppress If: {0A 82}
0x9FC07 			Variable 0x2F4 equals 0x0 {12 06 F4 02 00 00}
0x9FC0D 			Setting: Wake on LAN Enable, Variable: 0xC {05 91 E9 04 EA 04 F8 02 05 00 0C 00 10 10 00 01 00}
0x9FC1E 				Option: Enabled, Value: 0x1 {09 07 03 00 30 00 01}
0x9FC25 				Option: Disabled, Value: 0x0 {09 07 04 00 00 00 00}
0x9FC2C 			End of Options {29 02}
0x9FC2E 			Setting: SLP_LAN# Low on DC Power, Variable: 0xD {05 91 ED 04 EE 04 F9 02 05 00 0D 00 10 10 00 01 00}
0x9FC3F 				Option: Enabled, Value: 0x1 {09 07 03 00 30 00 01}
0x9FC46 				Option: Disabled, Value: 0x0 {09 07 04 00 00 00 00}
0x9FC4D 			End of Options {29 02}
0x9FC4F 			Setting: K1 off, Variable: 0xE {05 91 EB 04 EC 04 FA 02 05 00 0E 00 10 10 00 01 00}
0x9FC60 				Default: Other {5B 85 00 00 08}
0x9FC65 					Value {5A 82}
0x9FC67 						Variable 0xAD8 equals value in list (0x73, 0x74) {14 8A D8 0A 02 00 73 00 74 00}
0x9FC71 							64 Bit Unsigned Int: 0x1 {45 0A 01 00 00 00 00 00 00 00}
0x9FC7B 							64 Bit Unsigned Int: 0x0 {45 0A 00 00 00 00 00 00 00 00}
0x9FC85 							Conditional {50 02}
0x9FC87 						End {29 02}
0x9FC89 					End {29 02}
0x9FC8B 				End {29 02}
0x9FC8D 				Option: Enabled, Value: 0x1 {09 07 03 00 30 00 01}
0x9FC94 				Option: Disabled, Value: 0x0 {09 07 04 00 00 00 00}
0x9FC9B 			End of Options {29 02}
0x9FC9D 			Setting: EFI Network, Variable: 0x210 {05 91 F9 04 FA 04 FB 02 34 12 10 02 10 10 00 01 00}
0x9FCAE 				Option: Enabled, Value: 0x1 {09 07 03 00 00 00 01}
0x9FCB5 				Option: Disabled, Value: 0x0 {09 07 04 00 30 00 00}
0x9FCBC 			End of Options {29 02}
0x9FCBE 		End If {29 02}
0x9FCC0 		Setting: Wake on WLAN and BT Enable, Variable: 0xF {05 91 EF 04 F0 04 FC 02 05 00 0F 00 10 10 00 01 00}
0x9FCD1 			Option: Enabled, Value: 0x1 {09 07 03 00 00 00 01}
0x9FCD8 			Option: Disabled, Value: 0x0 {09 07 04 00 30 00 00}
0x9FCDF 		End of Options {29 02}
0x9FCE1 		Suppress If: {0A 82}
0x9FCE3 			Variable 0x2FC equals 0x0 {12 06 FC 02 00 00}
0x9FCE9 			Setting: DeepSx Wake on WLAN and BT Enable, Variable: 0x10 {05 91 F1 04 F2 04 FD 02 05 00 10 00 10 10 00 01 00}
0x9FCFA 				Option: Enabled, Value: 0x1 {09 07 03 00 00 00 01}
0x9FD01 				Option: Disabled, Value: 0x0 {09 07 04 00 30 00 00}
0x9FD08 			End of Options {29 02}
0x9FD0A 		End If {29 02}

在BIOS下找到对应的条目,藏在Advanced>PCH-IO Configuration下。百度了下,pch全称为Platform Controller Hub,是intel公司的集成南桥。我没搞懂为什么会藏在这里?
在这里插入图片描述

挨个解释下这三条内容

  • DeepSx Power Policies:
    网上搜到的文件:ipc_bios_user_manual_en-US.pdf
    里面提到了:If enabled (Enabled), the devices switches itself to idle state, a mode with the lowest power consumption.如果启用 (Enabled),设备会将自身切换到空闲状态,这是一种功耗最低的模式。
    这个条目一共有如下的选项
    在这里插入图片描述
  • LAN Wake From DeepSx
    DeepSx的意思是Deep Sleep State,直译过来就是深度睡眠状态,所以LAN Wake From DeepSx整句话翻译过来就是深度睡眠状态下的局域网唤醒
  • Wake on WLAN and BT Enable:
    WLAN:就是无线拉,BT就是Bluetooth蓝牙

找到这里,基本上可以认为离成功只差一步之遥了。首先DeepSx Power Policies肯定要开的,看字面意思,直接S4-S5就可以,S4是休眠状态,S5是关机状态。关于这部分内容,上面这篇文章有提到:WOL 网络唤醒避坑指南:常见问题的分析与内容补充。然后就是LAN Wake From DeepSx要Enabled,这就解决了嘛~

结果却出乎意料:在漫长的开机关机过程中,尝试了这三个条目的所有选项,都没能搞定关机后网卡断电的问题。怀疑是在Power的选项上出了问题:主板是硬件,而BIOS是软件,当修改了具体的BIOS参数后,硬件肯定无法主动识别到相关的修改,肯定是由BIOS去触发相应的电路开关进行修改。而曾经的Power选项是隐藏的,是否BIOS从未触发修改过这些隐藏的数值?所以尝试,将Wake on PME的Enabled设置为Disabled,开关机后,重新设置为Enabled,仍然无效

9.Wake on AC

折腾到这里已经晚上11点了,累的一笔。打算放弃,洗澡上床睡觉。结果洗澡的时候灵光闪现,恍恍惚惚中想到了偶然看到的State After G3这个参数。
这里头点进去,有两个选项,S0和S5,分别对应开机和关机

在这里插入图片描述
State After G3:G3这个状态好像是系统异常关机,例如停电之类的偶然事件导致的关机。所以为啥里头有一个S0呢?试试看?把这个值设置为S0,行不行就看G3这个状态如何定义了。如果关机后关闭插座电源也属于G3状态,那就妥了。但是又觉得不太合理?洗完澡,抱着试一试的心态,已经不抱什么希望了。关机,关电源插座,开插座,键盘灯亮了,它居然亮了?

最后就是在天猫精灵中设置每天晚上0点关闭插座,这样第二天只要唤醒插座,电脑就会自动开机了


总结

State After G3

虽然成功实现了通电自启,但是这个开关State After G3看名字好像不是给通电开机用的。不知道打开这个东西会不会对硬件造成损坏(电压不稳之类的),然而我对硬件也不太懂,有机会再做进一步研究把,但愿我的拯救者还能再活五百年

Wake on Lan

折腾Wake on Lan花了很长时间,最后没有效果很郁闷,想了下大概有几个原因把,等有机会再来更新:

  • 我用FPTW64刷BIOS刷出问题了
  • 大神的Unlock执行文件把BIOS改出问题了
  • 要实现WOL,还有其它BIOS开关要打开(感觉是这个)
  • 这个BIOS对WOL的适配有问题
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33265520/article/details/125344593

智能推荐

class和struct的区别-程序员宅基地

文章浏览阅读101次。4.class可以有⽆参的构造函数,struct不可以,必须是有参的构造函数,⽽且在有参的构造函数必须初始。2.Struct适⽤于作为经常使⽤的⼀些数据组合成的新类型,表示诸如点、矩形等主要⽤来存储数据的轻量。1.Class⽐较适合⼤的和复杂的数据,表现抽象和多级别的对象层次时。2.class允许继承、被继承,struct不允许,只能继承接⼝。3.Struct有性能优势,Class有⾯向对象的扩展优势。3.class可以初始化变量,struct不可以。1.class是引⽤类型,struct是值类型。

android使用json后闪退,应用闪退问题:从json信息的解析开始就会闪退-程序员宅基地

文章浏览阅读586次。想实现的功能是点击顶部按钮之后按关键字进行搜索,已经可以从服务器收到反馈的json信息,但从json信息的解析开始就会闪退,加载listview也不知道行不行public abstract class loadlistview{public ListView plv;public String js;public int listlength;public int listvisit;public..._rton转json为什么会闪退

如何使用wordnet词典,得到英文句子的同义句_get_synonyms wordnet-程序员宅基地

文章浏览阅读219次。如何使用wordnet词典,得到英文句子的同义句_get_synonyms wordnet

系统项目报表导出功能开发_积木报表 多线程-程序员宅基地

文章浏览阅读521次。系统项目报表导出 导出任务队列表 + 定时扫描 + 多线程_积木报表 多线程

ajax 如何从服务器上获取数据?_ajax 获取http数据-程序员宅基地

文章浏览阅读1.1k次,点赞9次,收藏9次。使用AJAX技术的好处之一是它能够提供更好的用户体验,因为它允许在不重新加载整个页面的情况下更新网页的某一部分。另外,AJAX还使得开发人员能够创建更复杂、更动态的Web应用程序,因为它们可以在后台与服务器进行通信,而不需要打断用户的浏览体验。在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种常用的技术,用于在不重新加载整个页面的情况下,从服务器获取数据并更新网页的某一部分。使用AJAX,你可以创建异步请求,从而提供更快的响应和更好的用户体验。_ajax 获取http数据

Linux图形终端与字符终端-程序员宅基地

文章浏览阅读2.8k次。登录退出、修改密码、关机重启_字符终端

随便推点

Python与Arduino绘制超声波雷达扫描_超声波扫描建模 python库-程序员宅基地

文章浏览阅读3.8k次,点赞3次,收藏51次。前段时间看到一位发烧友制作的超声波雷达扫描神器,用到了Arduino和Processing,可惜啊,我不会Processing更看不懂人家的程序,咋办呢?嘿嘿,所以我就换了个思路解决,因为我会一点Python啊,那就动手吧!在做这个案例之前先要搞明白一个问题:怎么将Arduino通过超声波检测到的距离反馈到Python端?这个嘛,我首先想到了串行通信接口。没错!就是串口。只要Arduino将数据发送给COM口,然后Python能从COM口读取到这个数据就可以啦!我先写了一个测试程序试了一下,OK!搞定_超声波扫描建模 python库

凯撒加密方法介绍及实例说明-程序员宅基地

文章浏览阅读4.2k次。端—端加密指信息由发送端自动加密,并且由TCP/IP进行数据包封装,然后作为不可阅读和不可识别的数据穿过互联网,当这些信息到达目的地,将被自动重组、解密,而成为可读的数据。不可逆加密算法的特征是加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据是无法被解密的,只有重新输入明文,并再次经过同样不可逆的加密算法处理,得到相同的加密密文并被系统重新识别后,才能真正解密。2.使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。_凯撒加密

工控协议--cip--协议解析基本记录_cip协议embedded_service_error-程序员宅基地

文章浏览阅读5.7k次。CIP报文解析常用到的几个字段:普通类型服务类型:[0x00], CIP对象:[0x02 Message Router], ioi segments:[XX]PCCC(带cmd和func)服务类型:[0x00], CIP对象:[0x02 Message Router], cmd:[0x101], fnc:[0x101]..._cip协议embedded_service_error

如何在vs2019及以后版本(如vs2022)上添加 添加ActiveX控件中的MFC类_vs添加mfc库-程序员宅基地

文章浏览阅读2.4k次,点赞9次,收藏13次。有时候我们在MFC项目开发过程中,需要用到一些微软已经提供的功能,如VC++使用EXCEL功能,这时候我们就能直接通过VS2019到如EXCEL.EXE方式,生成对应的OLE头文件,然后直接使用功能,那么,我们上篇文章中介绍了vs2017及以前的版本如何来添加。但由于微软某些方面考虑,这种方式已被放弃。从上图中可以看出,这一功能,在从vs2017版本15.9开始,后续版本已经删除了此功能。那么我们如果仍需要此功能,我们如何在新版本中添加呢。_vs添加mfc库

frame_size (1536) was not respected for a non-last frame_frame_size (1024) was not respected for a non-last-程序员宅基地

文章浏览阅读785次。用ac3编码,执行编码函数时报错入如下:[ac3 @ 0x7fed7800f200] frame_size (1536) was not respected for anon-last frame (avcodec_encode_audio2)用ac3编码时每次送入编码器的音频采样数应该是1536个采样,不然就会报上述错误。这个数字并非刻意固定,而是跟ac3内部的编码算法原理相关。全网找不到,国内音视频之路还有很长的路,音视频人一起加油吧~......_frame_size (1024) was not respected for a non-last frame

Android移动应用开发入门_在安卓移动应用开发中要在活动类文件中声迷你一个复选框变量-程序员宅基地

文章浏览阅读230次,点赞2次,收藏2次。创建Android应用程序一个项目里面可以有很多模块,而每一个模块就对应了一个应用程序。项目结构介绍_在安卓移动应用开发中要在活动类文件中声迷你一个复选框变量

推荐文章

热门文章

相关标签