前言

在日常工作中、歸檔案管理或資料處理的過程中,常常需要將檔案從一種格式轉換為另一種格式。
雖然市面上有許多圖形化的轉檔工具,但使用命令列工具進行轉檔具有以下優點:

  • 效率:命令列工具通常比圖形化工具更快,特別是在處理大量檔案時。
  • 自動化:可以將轉檔過程自動化,透過腳本或批次檔來執行,減少人工操作的時間與錯誤。
  • 靈活性:命令列工具通常提供更多的選項與參數,可以更精細地控制轉檔過程。
  • 跨平台:許多命令列工具支援多種作業系統,方便在不同環境中使用。

因此,學習使用命令列工具進行檔案轉換是提升工作效率與自動化能力的重要技能。
特別在當前生成式 AI 能夠幫我們生成相關的腳本或指令的情況下,學習如何使用這些工具將能夠更好地利用 AI 的能力來提升工作效率。

本筆記目的在於整理一些常用的命令列工具,並補充個人在使用的優缺點與使用心得。而不在詳細介紹每個工具的使用方式,因為這些工具的使用方式都可以在官方網站或其他網路資源中找到。

安裝命令列工具注意事項

在安裝命令列工具時,需注意以下事項:

  1. 來源可靠性:確保從官方網站可信賴的來源下載工具,以避免下載到包含惡意軟體的版本。
  2. 版本選擇:選擇適合自己作業系統的版本,並確認工具的最新版本,以獲得最佳的性能與安全性。
  3. 安裝過程:仔細閱讀安裝說明,確保安裝過程順利完成,並且確認工具已正確安裝在系統中。
  4. 環境變數設定:有些命令列工具需要將其的執行路徑加入系統的環境變數中,以便在任何位置都能使用該工具。確保按照說明正確設定環境變數。
    • Windows 操作說明
      設定 > 系統 > 系統資訊 > 進階系統設定 > 進階 > 環境變數 > 系統變數或使用者變數中找到 Path 變數,雙擊進入 > 新增工具的安裝路徑 > 確定。
      操作完成後,建議重新啟動電腦或至少重新啟動命令提示字元,以確保環境變數的變更生效。
  5. 測試:安裝完成後,建議先執行一些基本的命令來測試工具是否正常運作,確保可以順利使用。

影音轉檔工具-FFmpeg

FFmpeg 是一個開源的多媒體框架,可以用來錄製、轉換數位音頻、視頻,以及將其轉換成流式媒體。
可以根本上的取代如格式工廠等轉檔或一些來路不明的轉檔、剪片工具。減少了電腦中不必要的軟體安裝造成的廣告、惡意軟體的風險。

常用的功能包括:

  • 容器轉換:支持多種音頻和視頻格式之間的轉換,如 MP4、AVI、MKV、MP3、WAV 等。
  • 編碼轉換:支持不同編碼器之間的轉換,如 H.264、H.265、AAC、AV1 等,進行影音壓縮或品質調整。
  • 影音分離與合併:可以將音頻和視頻分離或合併,方便進行後續的編輯或處理。
  • 剪輯與合併:可以對影音檔案進行剪輯、合併銜接、添加字幕等操作,滿足不同的編輯需求。

安裝

可以從 FFmpeg 的官方網站下載適合自己作業系統的版本,並按照說明進行安裝。

其中,Windows 使用者有二種編譯版本可以選擇,分別為 gyan.devBtbN,兩者的功能與性能相似,可以根據個人喜好選擇其中一個版本進行安裝。其差異比較如下:

  • gyan.dev:提供了較為簡潔的安裝包,適合一般使用者。
    • full 版本包含了所有的功能與編碼器,適合需要使用 FFmpeg 全部功能的使用者。
    • essentials 版本則是精簡版,去除了部分不常用的功能與編碼器,適合只需要基本轉檔功能的使用者。
  • BtbN:提供了較為完整的功能與編碼器,適合需要使用 FFmpeg 全部功能的使用者。
    • gpl 授權版本功能較為完整,適合個人使用者。
    • lgpl 授權版本則是去除了部分功能與編碼器,適合商業使用者。

安裝方式原則上都是下載後解壓縮即可,如果要在任意位置使用 FFmpeg,則需要將 FFmpeg 的安裝路徑加入系統的環境變數中。具體的操作方式可以參考前面提到的安裝命令列工具注意事項中的環境變數設定部分。

驗證安裝是否成功,可以在命令提示字元中輸入 ffmpeg -version,如果能夠顯示 FFmpeg 的版本資訊,則表示安裝成功。

Linux 使用者則可依照自己使用的 Linux 架構與發行版,從包管理器中安裝 FFmpeg,這部分相信 Linux 使用者都不會有問題,這裡就不再贅述。

使用範例

以下是一些常見的 FFmpeg 使用範例:

  • 將 MP4 轉換為 MKVffmpeg -i input.mp4 output.mkv
    • 保持原有的編碼器與品質不變:ffmpeg -i input.mp4 -c copy output.mkv
  • 壓縮影片尺寸
    • 壓縮成 1080p:ffmpeg -i input.mp4 -vf scale=-1:1080 output.mp4
    • 壓縮成 720p:ffmpeg -i input.mp4 -vf scale=-1:720 output.mp4
  • 重新使用編碼器壓縮影片
    • 用 H.265 編碼器壓縮影片:ffmpeg -i input.mp4 -c:v libx265 output.mp4
    • 用 AV1 編碼器壓縮影片:ffmpeg -i input.mp4 -c:v libsvtav1 output.mp4
    • 備註:如果有使用硬體加速編碼器的版本,可以使用對應的硬體加速編碼器來提升轉檔效率。

其他仍有許多進階選項如壓縮品質調整等,這裡就不再贅述。網路上有許多命令生成器可以幫助我們生成 FFmpeg 的指令(上網查詢 FFmpeg command generator 就可以找到很多相關的工具),也可以直接詢問生成式 AI 來幫我們生成相關的指令。

而使用命令列工具的好處在於,我們可以將這些指令寫成腳本或批次檔,來實現自動化的轉檔流程,特別是在需要處理大量檔案時,可以大幅提升效率。
像是以下為一個簡單的批次檔範例,可以將此批次執行目錄的 original 資料夾中的所有 MKV、MP4 檔案格式使用 AV1 編碼器根據指定的壓縮品質(命令中的 -crf 23 代表壓縮品質,數值越小代表品質越高,檔案也會越大,反之亦然)轉換成 MKV 格式,並輸出到 output 資料夾中:

if not exist "output" mkdir "output"
for %%i in (.\original\*.mkv .\original\*.mp4) do (
    echo Processing %%i
    ffmpeg -i "%%i" -c:v libsvtav1 -crf 23 -c:a aac "./output/out_%%~ni.mkv"
)
@pause

音訊轉檔工具-SoX

Sound eXchange(SoX) 是一個開源的跨平台音訊處理工具,可以用來轉換、處理和分析音訊檔案。相比於 FFmpeg,SoX 更專注於音訊處理,提供了更多的音訊處理功能與選項,如音訊剪輯、混音、效果處理等。

不過在轉檔方面,FFmpeg 的功能內建的較為全面,在某些環境中若要處理 mp3 等受專利保護的格式,SoX 可能需要額外安裝相關的編碼器或解碼器才能進行轉檔,而 FFmpeg 通常已經內建了這些編碼器與解碼器,可以直接使用。

安裝

可以從 SoX 的官方網站下載適合自己作業系統的版本,並按照說明進行安裝。

補充說明:在 Windows 環境中,SoX 需要額外安裝 LAME 編碼器才能進行 mp3 的處理。個人使用 RAREWARES 提供的 LAME 編碼器「libmp3lame」,下載後將檔案 libmp3lame-X.XXXx86.zip 內容解壓縮到 SoX 的安裝路徑下即可。

文件轉檔工具-Pandoc

Pandoc 是一個開源的文件轉換工具,可以用來將文件從一種格式轉換為另一種格式。支持的格式非常多,包括 Markdown、HTML、LaTeX、PDF、Word 等等。

這個工具可以在其 Online Demo 頁面上直接使用,也可以在本地安裝後使用命令列來進行轉檔。Demo 頁面 上也提供了許多使用範例,可以參考這些範例來學習如何使用 Pandoc 進行文件轉換。因此,相關的安裝、使用說明與範例就不再贅述。

文件轉換成 Markdown 工具-Markitdown

Markitdown 是一個由微軟開發的開源工具,可以將各種文件格式(如 Word、PDF、PowerPoint 等)轉換成 Markdown 格式。
儘管 Pandoc 也能進行文件轉換成 Markdown 的操作且更為全面可靠,而 Markitdown 的應用目的則在於將文件轉換成 Markdown 後可以更容易的被生成式 AI 進行處理與分析。因此,Markitdown 存在另外的 LLM-OCR 模組、音訊/Youtube 轉文字模組等功能,來協助使用者將非純文字的內容轉換成 Markdown 格式,方便後續的處理與分析。

安裝

可以從 Markitdown 的官方 GitHub 頁面閱讀安裝說明,並按照說明進行安裝。

  1. 安裝 Python 3.10 或以上版本。(可使用 Python、uv、conda 等方式安裝)
  2. 使用 pip 安裝 Markitdown:pip install markitdown[all]。(或從原始碼安裝)

如要安裝 Markitdown 的 LLM-OCR 模組,則另外進行以下安裝: 註:撰文當下版本(0.1.6)該功能命令列工具無法正常使用,需使用 Python 程式碼來呼叫相關功能。

  1. 確保已安裝 Markitdown。
  2. 確保已安裝 FFmpeg 並可在命令列中使用。(或 avconv)
  3. 安裝 markitdown-ocr 模組:pip install markitdown-ocr
  4. 安裝 OpenAI 客戶端:pip install openai

使用範例

以下是一些常見的 Markitdown 使用範例:

  • 將 Word 文件轉換成 Markdownmarkitdown "input.docx" > "output.md"
  • 將 PDF 文件轉換成 Markdownmarkitdown "input.pdf" > "output.md"
  • 將 PDF 文件使用 LLM-OCR 模組呼叫 ollama 轉換成 Markdown 之代碼範例
    import os
    from markitdown import MarkItDown
    from openai import OpenAI
     
    md = MarkItDown(
    enable_plugins=True,
    llm_client=OpenAI(
        base_url="ollama 伺服器的 URL,例如: http://localhost:11434/v1",
        api_key="ollama"
    ),
    llm_model="支援視覺輸入的模型名稱"
    )
     
    target_file = "input.pdf"
     
    base_name = os.path.splitext(target_file)[0]
    output_file = f"{base_name}.md"
     
    try:
        result = md.convert(target_file)
     
        with open(output_file, "w", encoding="utf-8") as f:
            f.write(result.text_content)
     
    except Exception:
        pass