跳至主要内容

博文

目前显示的是标签为“Windows”的博文

Windows 调优 ffmpeg 转换视频

Windows 上给老掉牙的显卡更新了驱动,然后在 Gemini 的帮助下解决了一堆问题,总算是可以高效地处理视频文件的转换了。 以下命令用于将一个输入视频按照时间区块分段截取,并利用 CUDA 高效地转换尺寸为 720p 大小。老硬件上也效果飞起~ ```powershell Measure-Command -Expression { $ins="INPUT_FHD.mp4"; $ousprefix="output_720p"; ffmpeg -hwaccel cuda -hwaccel_output_format cuda -ss 00:01:02 -to 00:40:00 -i $ins -vf "scale_cuda=720:-2" -c:v hevc_nvenc -preset p4 -tune hq -rc vbr -cq 28 -b:v 0 -c:a copy "$ousprefix-part1.mp4"; ffmpeg -hwaccel cuda -hwaccel_output_format cuda -ss 01:08:56 -to 02:00:00 -i $ins -vf "scale_cuda=720:-2" -c:v hevc_nvenc -preset p4 -tune hq -rc vbr -cq 28 -b:v 0 -c:a copy "$ousprefix-part2.mp4"; } ```

调整网络适配器的优先级

参考[这篇文章](https://www.windowscentral.com/how-change-priority-order-network-adapters-windows-10) 重置了几个网络适配器的优先顺序。 Powershell命令: ``` > Get-NetIPInterface > Set-NetIPInterface -InterfaceIndex 30 -AutomaticMetric enabled ``` 根据文章描述,也可以手动修改每个网络适配器对应的Metrics (跃点数),数值越低则优先级越高。

Update Docker Desktop to use WSL2

PC 总算吃到了 Windows 10 的 2004 版本更新。 重启完毕之后 Docker Desktop 提示说可以将后端从 HyperV 虚拟机改为 WSL2,效能更佳。 听信了“广告”,下载了一个微软的内核更新程序,安装顺利,然后重启 Docker Desktop 就给跪了……错误信息说是 > 'C:\Users\john.doe\AppData\Local\Docker\vm-config\config.iso' 正由另一进程使用 搜索万能的 Google 后找到了这篇讨论: https://github.com/docker/for-win/issues/6822 简单来说就是 HyperV 仍旧在用,要么是到 HyperV 的管理器里头 shutdown 为 Docker 服务的那台虚拟机,并设置为不再随操作系统自动启动,然后重启一下 Docker Service;要么跑几个命令行分别关闭 Docker Desktop 和 WSL 再逆序启动。依据第一个方法速度解决了这个问题。

Fix Docker Desktop in Windows using MOFCOMP

前一段 Windows 10 上的 Docker Desktop 突然不工作了,卸载重装也无效。一开始以为是 HyperV 里面什么地方被折腾坏了,但是删光了自定义的网络和设备仍旧无助。 后来在[某处](https://www.soinside.com/question/YKwpTYAjjstuUjDSvdkKx9) 看到有人给了这么一条命令(需要以系统管理员权限执行): MOFCOMP %SYSTEMROOT%\System32\WindowsVirtualization.V2.mof 重启之后重装居然解决了! `mofcomp` 貌似是 Windows Management Instrumentation (WMI) 中的[一个命令行工具](https://docs.microsoft.com/en-us/windows/win32/wmisdk/mofcomp), > Mofcomp.exe 是一个操作系统工具,用于编译 MOF 文件,并将文件中包含的信息添加到 WMI 存储库中。 坦白说暂时还不清楚为什么这个命令管用,先记下来以备不时之需……

解决thinkpad e450 windows 10重灌后的启动问题

为LD的thinkpad e450更换了SSD 500GB,之后重装windows 10 home。利用微软的Media Creation Tool灌了一支安装U盘,不过一开始怎么都没法找到这个U盘。 上网查了之后得知这是由于BIOS里设定了Secure Boot和UEFI mode only,于是禁用,遂成功找到U盘,并顺利安装了系统。 不过发现Legacy Mode下启动的速度还是较慢,于是想要恢复到UEFI和Secure Boot,没料到这么一改居然又进不了系统了!!! 继续学习,较老的帖子是为了从Win8降级到Win7,他们本来就不要用UEFI。而有的帖子建议用PE重建启动分区,感觉还是很麻烦。 好在,最后[这个帖子的回答](https://www.dell.com/community/Inspiron/Used-Legacy-Boot-can-t-get-UEFI-w-Sec-Boot-back/m-p/5807869#M8113)让我发现微软非常非常非常好心的在win10内建了一个工具 [mbr2gpt](https://docs.microsoft.com/en-us/windows/deployment/mbr-to-gpt),只要进入windows 10系统就可以直接帮助切割一个EFI System Partition,所有的文件系统基本上都不会受到影响。 这篇回答非常精彩,摘抄如下: > Windows installs itself differently depending on whether it will be booted in Legacy or UEFI. The way that you booted the Windows installation media itself depends on how the OS that gets installed is set up. So it sounds like you booted your install media in Legacy mode, in which case Windows set up your disk in MBR partition layout intended for Legacy booting. You can...

解决 Windows 10 播放视频有声音但是黑屏的问题

上周在PC上打开一个mp4文件后发现Windows 10自带的播放器(程序名为“电影和电视”)居然只能出声,播放的是黑屏。当时没在意,换了手机来看。 今天又一次遇到了同样的问题,换了VLC播放还是如此,看来不是单个程序的问题。试着重装了VLC也没有用,可以排除和解码器有关的问题。 难道是微软近期的更新又出了幺蛾子?万能的谷歌再一次大发神威,在 answers.microsoft.com 上找到了一枚支持贴——[【windows 10播放本地视频只有声音没有影像】](https://answers.microsoft.com/zh-hans/windows/forum/windows_10-start/windows/06e3bad9-8238-4300-b6b9-997a90a7c373) > 这似乎是个共性的问题。请问您是什么样的设备配置?是否是AMD显卡的设备?是否是双显卡设备? > > 若是AMD显卡设备,请参考以下步骤: > > 1. 右击计算机桌面任意空白位置,选择“显示卡属性”选项,打开AMD显卡控制台; > 2. 选择“首选项”按钮,将“视图模式”改为“高级视图”; > 3. “视频”选项卡中取消勾选“覆盖程序设置”的选项,然后查看问题是否得到解决。 > 4. 若无效,可以尝试禁用显卡驱动。 > > 若不是AMD显卡的设备,一般不会出现该情况,建议您检查您的驱动程序版本,驱动程序版本并非最新的就是最好的,您需要下载适合您系统的驱动程序。 > > 若是双显卡设备,请禁用独立显卡。 几乎全中!立刻打开 AMD Catalyst Control Center,虽然没有找到上述提到的“覆盖程序设置”,不过捣鼓了一下重启后还是解决了。

Windows 10 卓越性能模式

Windows 10 升级到 version 1803 版本之后,可以打开一个隐藏的电源计划,也就是传说中的“卓越性能”模式。 具体操作是以管理员身份打开 PowerShell 窗口,输入以下指令: powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61 具体是哪里可以体现极限,媒体的报道也语焉不详: > “极限性能”模式是专门为高端台式系统打造的。 > 如果你想在电池供电的笔记本平台上使用,显然是无法享受到其所宣称的最佳体验的。 不过好歹俺的台式机N年前也算是还凑合的 [Intel i7-4790K](https://ark.intel.com/products/80807/Intel-Core-i7-4790K-Processor-8M-Cache-up-to-4_40-GHz),虽然生命周期已经 discontinued 了,不过期望多少可以压榨一点油水吧?

Windows 10 Version 1709 的累积更新失败

笔记本的Windows 10自动更新要求重启,但是重启之后提示说更新安装失败。再次尝试,重启后还是如此,于是陷入了这个魔咒无法脱身。 后来查了Google,发现都不如Windows自带的链接管用,根据KB的号码找文档,可以下载到相应的独立更新安装包。 另外还参考了一个[微软的官方客服回答](https://answers.microsoft.com/en-us/windows/forum/windows_10-windows_install/getting-error-0x80070bc2-doing-cumulative-update/24e80681-eb22-4439-8677-638fce437186?page=7)执行了如下cmd操作: ``` SC config wuauserv start=auto SC config bits start=auto SC config cryptsvc start=auto SC config trustedinstaller start=auto ```

PowerShell Exercises - Rename file names in batch

以前用TotalCommander来做batch rename的,GUI下输入pattern挺方便的。现在的PC上没有安装,于是要靠命令行了。 好在PowerShell的pipe也不算太糟糕: Get-ChildItem directory | Rename-Item -NewName { $_.Name -replace '^filename_+','' } 如果有多个 patterns 需要替换可以使用多组 `-replace` 表达式组合。

解决由ATI显卡驱动导致的爆音

一直以来电脑有个问题,在开始播放音乐或是看片的时候,音箱里首先一下爆音。如果播放的音频时间很短,那么干脆就听不见——甚至连Windows的开机声音也没有。 花了点儿功夫求助Google,初步得到的结论是由于PC上的ATI显卡驱动和主板的Realtek音频驱动有冲突导致的。后来找到了 [Realtek 官网所提供的 High Definition Audio Codecs](http://www.realtek.com.tw/downloads/downloadsCheck.aspx?langid=1&pfid=24&level=4&conn=3&downtypeid=3),其中有一个专门为 ATI 设备编写的驱动名为『ATI HDMI Audio Device』,版本是R2.70,虽然最后的更新时间是五年前(2012/6/2)不过这不重要,果断下载安装。 重启后一切搞定~

Docker in Windows 10

在 Windows 10 里头玩 docker,先安装 docker for windows 套件,然后直接可以用 PowerShell Console 来执行 `docker ps` 等指令。十分流畅地开始玩耍。 不过在尝试另一个 console - Windows 10 整合了 Ubuntu 的 bash,可以直接 Win+R 来执行 `bash` 打开命令行窗口。在里面就无法使用 docker,哪怕是 `sudo apt-get install docker` 也不成。 后来参考一个大牛的帖子 —— [Windows 10 bash & Windows docker 問題處理](https://blog.caesarchi.com/2017/05/15/windows-10-bash-windows-docker-intergrate_problem_solve/) 解决了。 摘录指令如下: ``` $ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" $ sudo apt-get update $ sudo apt-get install docker-ce ``` 总结一下:Win 10 总体来说比以前的 Windows (对Linux)友好了很多,但是小坑不少~

PowerShell Exercises - Merge files in folder

需要在Windows下做一些简单的文件操作,CMD显然已经过时了,开始试着用PowerShell。 如果是在Linux下面通常就是 find 之后 pipe 到 cat 完事。PowerShell的语法稍微复杂了点儿,不过也还是可以接受的: ``` Get-ChildItem -path . -recurse | ?{ $_.name.contains(".markdown") } | %{ Out-File -filepath ./cat-all.txt -Encoding UTF8 ` -inputobject (Get-Content $_.fullname -Encoding UTF8) -Append } ``` 『补充于2018年6月底』后来发现,`Get-Content` 的别名是 `cat`;还有一个与之对应的 `Set-Content` 别名是 `sc`,因此如果文件结构简单的情况下,可以把上面的命令简化为: ``` cat -Encoding UTF8 *.markdown | sc -Encoding UTF8 cat-all.txt ``` 另外如果需要执行类似于 `grep` 命令,例如,在 markdown 文件内使用正则表达式 `^## ` 查找二级 head : sls ^## .\cat-all.txt -ca

Windows 10 无法使用 Powershell 创建 NIC Team

主板上有两块网卡,一个是 Intel 的,另一个是 Killer 的。为了充分利用,将两个千兆口都连在了 Hub 上。 在网上看到 Windows 其实可以组建 `NIC Team`,将多块网卡绑定成一个 team,内部通过负载均衡算法来控制网卡的使用。这样整个操作系统的应用程序只通过 team 来发送和接收数据,具体分配到哪一块 NIC 则是由 Windows 来管理的。 这么美好的东西怎么可以错过呢,MSDN 告诉我可以[使用 Cmdlets 来创建 NIC Team](https://technet.microsoft.com/en-us/library/jj130849(v=wps.630).aspx),于是我激动的开始尝试使用 powershell 来执行一行行命令: PS C:\WINDOWS\system32> Get-NetAdapter -Name Nic* Name InterfaceDescription ifIndex Status ---- -------------------- ------- ------ NicIntel Intel(R) Ethernet Connection I217-V 16 Up NicKiller Killer e2200 PCI-E Gigabit Ethernet ... 11 Up PS C:\WINDOWS\system32> New-NetLbfoTeam -Name LinkNics -TeamingMode SwitchIndependent -TeamMembers NicIntel,NicKiller New-NetLbfoTeam : 参数错误。 所在位置 行:1 字符: 2 + New-NetLbfoTeam -Name LinkNics -TeamingMode SwitchIndependent -TeamM ... + ~~~~~~~~~~~~~~~~~...