Select Page
WordPress站長必學:Windows環境下利用FFmpeg壓縮WebP/WebM格式檔案提升效能

WordPress站長必學:Windows環境下利用FFmpeg壓縮WebP/WebM格式檔案提升效能

隨著網絡速度的提升和視覺內容的普及,高效的多媒體處理成為了網站管理的重要環節。對於WordPress網站來說,使用高效的圖片和視頻格式,如WebP和WebM,可以顯著提高頁面加載速度,改善用戶體驗。FFmpeg是一款強大的開源工具,它可以讓你在Windows環境下輕鬆地進行多媒體文件的轉換和壓縮。本文將引導您完成在Windows下安裝FFmpeg的過程,並教您如何壓縮WebP和WebM格式的檔案。

步驟1:下載FFmpeg

  1. 首先,前往FFmpeg的官方網站(ffmpeg.org)。
  2. 想要找編譯好的可以直接到https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z
  3. 下載 Windows 對應的版本。
FFMPEG在github鐘的最新編譯版本
FFMPEG在github鐘的最新編譯版本

步驟2:安裝FFmpeg

  1. 下載完成後,解壓縮zip文件到您希望存放FFmpeg的文件夾,例如 C:\FFmpeg
  2. 將FFmpeg添加到系統環境變量,便於命令行使用:
    • 右鍵點擊“我的電腦”或“此電腦”,選擇“屬性”。
    • 點擊“高級系統設置”,然後點擊“環境變量”。
    • 在“系統變量”下,找到“Path”變量,選擇“編輯”。
    • 點擊“新建”,添加FFmpeg的bin目錄路徑,例如 C:\FFmpeg\bin
    • 確認後關閉所有對話框。

步驟3:檢查FFmpeg是否安裝成功

  1. 打開命令提示符(cmd)。
  2. 輸入 ffmpeg -version 並按回車,如果安裝正確,它將顯示FFmpeg的版本信息。
ffmpeg -version

步驟4:使用FFmpeg壓縮WebP格式圖片

  1. 使用命令提示符,導航到包含您圖片的文件夾。
  2. 輸入以下命令來壓縮圖片為WebP格式:
ffmpeg -i input.jpg -compression_level 60 output.webp

步驟5:使用FFmpeg壓縮WebM格式視頻

  1. 在命令提示符中,定位到包含您視頻的文件夾。
  2. 壓縮視頻為WebM格式,輸入以下命令:
ffmpeg -i input.mp4 -c:v libvpx -b:v 1M -c:a libvorbis output.webm

以下是命令中的參數解釋:

  • -i input.mp4:這是輸入文件的名稱(MP4檔案名)。
  • -c:v libvpx:這個參數選擇了WebM視頻編解碼器libvpx。
  • -b:v 1M:這個參數設置了視頻比特率為1 Mbps。

執行此命令後,FFmpeg將開始轉換MP4文件,並將其儲存為WebM格式。你可以根據需要自定義命令以滿足特定的要求,例如更改視頻比特率、解析度等。

採用 Nvida CUDA 來加速

如果你有 Nvida 的顯卡,可以加入 -hwaccel cuda 來提供編碼速度,但因為目前 Nvida 還沒支援 webm 的編碼器,指令只能加速一小段,等以後有支援就可以享受顯卡加速的快樂

ffmpeg -hwaccel cuda -i input.mp4 -c:v libvpx -b:v 1M -c:a libvorbis output.webm

批次轉換

如果你跟我一樣有大量轉換需求,那你可用我編寫的 .bat 檔案,一次性大量轉換

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

:: 設置FFmpeg的路徑,假設FFmpeg已經加到了系統環境變量,否則你需要指定完整的路徑,如 C:\path\to\ffmpeg\bin\ffmpeg.exe
SET "ffmpeg_path=C:\ffmpeg\bin\ffmpeg.exe"

:: 設置目錄路徑,這裡用 . 代表當前目錄
SET "source_dir=."

:: 設置輸出目錄,這裡也用 . 代表當前目錄,你可以修改為任何你想要的目錄
SET "output_dir=."

:: 轉換目錄下的所有.mp4檔案為.webm
FOR %%A IN ("%source_dir%\*.mp4") DO (
    SET "filename=%%~nA"
    SET "output_file=!filename!.webm"
    ECHO 正在轉換: "%%A"
    "!ffmpeg_path!" -hwaccel cuda -i "%%A" -c:v libvpx -b:v 1M -c:a libvorbis "%output_dir%\!output_file!"
    ECHO 轉換完成: "!output_file!"
)

ECHO 所有檔案轉換完成!
PAUSE

直接下載

將上述代碼保存為 .bat 文件,然後將這個批次檔放在含有你想要轉換的 .mp4 文件的目錄中,雙擊運行即可開始轉換過程。轉換後的 .webm 文件將會保存在設定的輸出目錄中。

注意事項:

  • 請根據你的情況替換ffmpeg_pathsource_dir,和output_dir變量。
  • -c:v libvpx -c:a libvorbis 是指定使用 VP8/Vorbis 編碼器進行視頻和音頻的轉碼。你可以根據需要修改這些參數,例如使用 VP9 編碼器則是 -c:v libvpx-vp9
  • 如果你在執行過程中遇到問題,請檢查FFmpeg是否正確安裝並添加到了系統環境變量中,或者在批次檔案中指定了正確的FFmpeg路徑。
  • -b:v 1M 是代表編碼率是1M,這參數可以不用有,有的話是可以更精確的指定畫質以及檔案大小

延伸閱讀

IIS 主機上限制 ApplicationPool 記憶體的方法

IIS 主機上限制 ApplicationPool 記憶體的方法

最近遇到 PHP 太吃記憶體的問題,我除了在php.ini 中設定 limit memory 以外,也打算在 IIS 中把總量的記憶體限制住,避免讓主機的記憶體爆滿,而當機,可以在記憶題超過限制後,把自己行程回收。

設定方法

在管理介面中,找到 「Advanced Settings」 ,進去後往下滑找到 「Private Memory Limit (KB)」 ,這邊這個數值是 KB 為主,如果希望將 Private Memory Limit (KB) 設定為 10GB,您需要將其設定為 10485760 KB 設定公式如下

10 GB = 10 * 1024 * 1024 KB = 10485760 KB

我設定的邏輯是觀察主機上所有的 Application Pool 會用到多少的記憶體,然後去分配她

iis web 將 http 協定導引成 https 協定(http to https)

iis web 將 http 協定導引成 https 協定(http to https)

現在的網站一定都要有https的協定才會是安全的,SEO的分數也才會高,在IIS內可以直接透過 URL rewrite 來將 http 連線都轉換成 https 連線,過程比 nginx 要麻煩一點,但有圖形化的介面設定,也是蠻容易上手的

打開 IIS Manager 找到 URL Rewrite

先假設你已經完成了 URL Rewrite 的安裝,則可以在介面中看到 URL Rewrite的設定

建立新的規則 (Add Rule)

在右邊的 Actions 選擇 Add Rule(s),並且選擇 Blank rule

建立 Inbound Rule

如下圖,下拉方塊中選擇 Match URL,並且在 Pattern 中填入 (.*) ,然後移到下方 Conditions 選擇 Add

並且在 Condition input 填入 {HTTPS} ,在 Pattern 中填入 ^OFF$ ,下拉選單中則是選擇 Matches the Pattern

設定 Action

輸入網址的條件設定完之後,要來設定符合的網址要如何處理,如何做動作,參考下圖,Action type 的下拉選單,選擇 Redirect

並且在 Redirect URL 中,填入 https://{HTTP_HOST}/{R:1} ,並且到 Redirect type 下拉選單中選擇 Permanent(301) 後即可以存檔 (Apply)

Web.Config 中的 rewrite

用 iis manager 設定完畢後,你就可以在 web.config 中看到剛剛所做的設定

        <rewrite>
            <rules>
                <clear />
                <rule name="http2https" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{HTTPS}" pattern="^OFF$" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
                </rule>
            </rules>
        </rewrite>

參考資料

https://aboutssl.org/iis-redirection-http-to-https/

如何解決 cFosSpeed Driver Error (Windows11)

如何解決 cFosSpeed Driver Error (Windows11)

如果你在升級或是安裝Windows 11的時候,出現 cFosSpeed Driver 不支援的錯誤訊息的話,又跟我一樣是華碩的電腦,因為華碩的安裝程式會預設幫你安裝 Turbo LAN ,這套軟體是 ASUS 跟 cFosSpeed 取得授權並且提供給使用者用,但無奈的是會跟 Windows 11 起衝突,要解決問題的話,可以跟著我的步驟來解決這件事情。

cFosSpeed Driver 跟 windows 11 起衝突

1.先檢查你的網路連線 Network Connections

用 Win+R ,輸入 ncpa.cpl ,然後找到你正在使用的網路,並且移除 cFosSpeed 連線

移除 cFosSpeed 連線

2.開啟工作管理員移除開機就執行 cFosSpeed

停用 cFosSpeed Window 服務

3.到應用程式與功能中移除 Turbo LAN

移除 Turbo LAN 程式

4.安裝最新版本的 cFos Speed

https://www.cfos.de/zh-tw/cfosspeed/cfosspeed.htm

5.利用新版本的 cFos Speed 的移除程式,解除安裝即可

參考資料

https://www.technewstoday.com/cfosspeed-driver-windows-11/

windows server iis 下的 wordpress web.config 設定

在 windows server 的 iis 下,預設情況下安裝 php 架構的 wordpress 總是會遇到很多的困難,像是如果遭遇到想要訪問 wordpress 目錄下的目錄資料,例如:https://rain.tips/uploads/,會跟你說找不到資料,原因是wordpress所有的入口要先透由 index.php 去做路由,解決方案則是用 web.config 去指定路由要透過 index.php 即可

請在web.config檔案中添加 rewrite rules

    <rewrite>
      <rules>
			<rule name="WordPress: https://yoururl.com" patternSyntax="Wildcard">
				<match url="*"/>
					<conditions>
						<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
						<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
					</conditions>
				<action type="Rewrite" url="index.php"/>
			</rule></rules>
    </rewrite>

最後會長成這樣子

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
			<rule name="WordPress: https://yoururl.com" patternSyntax="Wildcard">
				<match url="*"/>
					<conditions>
						<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
						<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
					</conditions>
				<action type="Rewrite" url="index.php"/>
			</rule></rules>
    </rewrite>
  </system.webServer>
</configuration>

同場加映

如何在 Azure VM中打開 ping request/ICMP Port

如何在 Azure VM中打開 ping request/ICMP Port

預設在 Microsoft Azure 的 VM 中,ICMP服務協定是關閉的,但常常有需要用ping指令來確認服務是否還存在,打開方法不講的話要找很久,原則上只要在 Azure 中設定,並且到 VM 中將防火牆打開即可

1.Azure中的設定

找到「VM」的「網路」,選擇「新增輸入連接埠規則」

並且輸入any和*

2.Windows Server Firewall 防火牆設定

新增 Inbound Rules ,把ICMPv4和ICMPv6兩個協定加入即可

ICMP 協定