流媒體編碼(Streaming encoding)是將音頻或視頻數據轉換為壓縮格式,以便通過互聯網或其他數據通信通道進行即時傳輸的過程。這一過程需要將原始的音頻或視頻數據轉換為更小的數據流,同時保持足夠的質量,以確保觀眾能夠在即時播放的同時獲得良好的觀看體驗,以下將針對影片編碼原理及知識作介紹:

流媒體協議(Streaming Protocol)

流媒體協議(Streaming Protocol)是一種用於在網路上傳輸音訊和視訊的通訊協定。這些協定通常被用於實現即時傳輸,允許用戶在資料流正在下載的同時開始觀看或聆聽內容,而無需等待整個檔案完全下載。

以下是一些常見的流媒體協定:

  1. HTTP Live Streaming (HLS):
    • HLS是由蘋果公司開發的流媒體協定,廣泛應用於iOS和macOS裝置。它使用HTTP協定,將視訊分割為小片段,並通過連續的HTTP請求提供給客戶端。
  2. Dynamic Adaptive Streaming over HTTP (DASH):
    • DASH是一種由MPEG制定的流媒體標準,使用HTTP協定。它允許動態調整串流的位元率,以適應不同的網路條件和設備能力。
  3. Real-Time Streaming Protocol (RTSP):
    • RTSP是一種用於控制多媒體播放的網路協定,它允許客戶端播放來自伺服器的流式媒體。RTSP常與RTP(Real-Time Protocol)結合使用。
  4. Smooth Streaming:
    • Smooth Streaming是由微軟開發的一種流媒體協定,用於Microsoft Silverlight技術。它通過動態適應位元率和分段化的方式提供高質量的串流。Smooth Streaming是由微软开发的一种流媒体协议,用于Microsoft Silverlight技术。它通过动态适应位元率和分段化的方式提供高质量的串流。
  5. RTMP (Real-Time Messaging Protocol):
    • RTMP是Adobe公司開發的一種流媒體協定,用於實時視訊和音訊傳輸。它已經被許多平臺廣泛使用,但隨著時間的推移,被取代和淘汰。
  6. WebRTC (Web Real-Time Communication):
    • WebRTC是一種用於實時通信的開放標準,通常用於視訊會議和即時通訊。它允許直接在瀏覽器中進行點對點的音訊和視訊通信,無需外部插件。

每種流媒體協定都有其獨特的特性和應用場景,選擇適當的協定取決於特定的需求,如平臺支援、網路狀態、編解碼支援等。

使用FFmpeg進行流媒體串流時,你可以選擇不同的流媒體協定,如HLS(HTTP Live Streaming)和DASH(Dynamic Adaptive Streaming over HTTP)。以下是使用FFmpeg進行HLS和DASH串流的簡單例子:

HLS

ffmpeg -i input.mp4 -c:v libx264 -c:a aac -strict experimental -f hls output.m3u8

DASH

ffmpeg -i input.mp4 -c:v libx264 -c:a aac -strict experimental -f dash output.mpd

DRM solution

Google、Apple 和 Microsoft 是三家主要的科技公司,它們都提供了自家的 DRM 解決方案,用於保護其相應平臺上的數位內容。以下是它們各自的 DRM 系統:

  1. Google Widevine:

    • Widevine 是由 Google 開發的 DRM 系統,主要用於保護 Android 平臺上的數位內容。它支援不同的安全等級,包括 L1(硬體級別的保護)和 L3(軟體級別的保護)。Widevine 還用於 Google Chrome 瀏覽器以及其他支援 Widevine 的平臺。

      裝置上的 DRM 支援情況

    • Android: 主要用於 Android 設備,包括手機和平板。Widevine 在 Android 平臺上運作。Widevine 使用三個安全等級:L1、L2 和 L3。L1 提供硬體級的安全性,通常用於支援高清和 4K 的設備。L2 和 L3 提供較低級別的安全性,L3 主要用於較老的設備。Widevine 使用 DRM 模組(Content Decryption Module,CDM)來解密和播放受保護的內容。

    • Google Chrome: 在 Google Chrome 瀏覽器中使用,廣泛用於桌面和行動裝置。在桌面上,Google Chrome 瀏覽器通常內建支援 Widevine CDM。當你在 Chrome 中觀看受 Widevine 保護的串流內容時,Chrome 將使用 Widevine CDM 來解密和播放該內容。

    • 智慧電視和串流裝置: 一些支援 Android TV 和其他串流裝置。

    • 瀏覽器: 主要用於 Chrome 瀏覽器,也可能在其他 Chromium-based 瀏覽器中使用。

  2. Apple FairPlay:

    • FairPlay 是 Apple 的 DRM 系統,主要用於保護 iOS、macOS 和 tvOS 上的數位內容。它被用於 Apple Music、iTunes、以及其他 Apple 服務。FairPlay 通常與 Apple 的硬體和軟體生態系統緊密結合。觀看受 FairPlay 保護的內容時,FairPlay 會在裝置上進行解密和播放。FairPlay 使用裝置的硬體和軟體特性來確保安全性。

      裝置上的 DRM 支援情況

    • iOS: 支援所有運行 iOS 的裝置,包括 iPhone 和 iPad。

    • macOS: 在 macOS 上支援。

    • tvOS: 支援 Apple TV 上的數位內容。

    • 瀏覽器: 主要用於 Safari 瀏覽器,但僅限於在 Apple 生態系統中使用。

  3. Microsoft PlayReady:

    • PlayReady 是由 Microsoft 開發的 DRM 系統,支援多個平臺,包括 Windows、Xbox、以及一些智能電視和流媒體裝置。PlayReady 提供強大的安全性和授權管理功能,並廣泛應用於 Microsoft 的數位內容平臺。

      裝置上的 DRM 支援情況

    • Windows: 支援 Windows 電腦上的應用,包括 Windows 10 和先前的版本。它使用硬體和軟體特性確保安全性。

    • Xbox: 在 Xbox 遊戲機上使用。

    • 智慧電視和串流裝置: 一些支援 Microsoft PlayReady 的智慧電視和串流裝置。

    • 瀏覽器: Internet Explorer 和 Microsoft Edge 瀏覽器可能支援 PlayReady。Firefox 並非 PlayReady 的首要支援平臺,但可能存在某些輔助性方法或插件可供使用。

這些 DRM 系統在相應公司的生態系統中發揮著關鍵作用,確保用戶僅能在合法授權的情況下訪問和使用數位內容。若要在相應平臺上使用這些 DRM 系統,開發者需要遵循相應公司的開發者文檔和指南。值得注意的是,使用這些 DRM 系統可能涉及一定的成本和合規要求。

舉例來說,Widevine 為例,在 ffmpeg encoding HLS,到 player 播放,受到 drm 限制的系統設計,系統通常涉及到以下步驟:

(在使用FFmpeg進行HLS編碼並整合Widevine DRM時,可使用Bento4工具提供的mp4encrypt命令來加密視訊檔案)

  1. 申請Widevine DRM API存取權限:

    首先,需要與Google Widevine DRM服務提供商建立聯繫,並向其申請Widevine DRM API存取權限。這通常涉及向Google提交相應的申請,並等待批准。

  2. 取得API金鑰:

    一旦獲得API存取權限,就可以通過Google Developer Console或相應的管理介面生成API金鑰。這個API金鑰將用於在應用程序中訪問Widevine DRM服務。

  3. 設置DRM參數: 使用Widevine DRM服務提供商的管理介面,可以設置DRM保護的相關參數。這些參數可能包括:

    • 加密金鑰設定: 配置Widevine DRM如何生成和管理加密金鑰。
    • 設備配對: 選擇是否需要將特定設備與Widevine DRM進行配對,以確保只有特定設備能夠解密和播放內容。
    • 授權機制: 配置Widevine DRM的授權機制,確保只有經授權的用戶能夠解密內容。

    使用 Widevine 工具生成一對公私鑰,這對鍵通常是 RSA 鍵。這是一個簡單的例子:

    widevine_keygen --gen-key-pair --private-key output/private.key --public-key output/public.key
    
  4. **使用 FFmpeg 進行 HLS 編碼:**使用FFmpeg進行HLS編碼,生成HLS串流,但還未加密。

    ffmpeg -i input.mp4 -c:v libx264 -c:a aac -hls_time 10 -hls_list_size 0 -hls_segment_filename 'segment_%03d.ts' -f hls output.m3u8
    
  5. **使用 Bento4 mp4encrypt 加密 HLS 串流:**使用mp4encrypt命令將HLS串流加密,並生成包含DRM信息的m3u8文件。

    bento4/bin/mp4encrypt \
    --method MPEG-CENC \
    --key 1:your_key_id:your_key_file.key:your_key_file.iv \
    --property 1:KID:your_key_id \
    --global-option mpeg-cenc.eme-pssh:true \
    output.m3u8
    
  6. 更新播放列表: 更新 HLS 播放列表(例如,index.m3u8)以包含 Widevine 加密後的.ts 文件的相對路徑和其他必要的信息。

  7. 提供 Widevine 金鑰: 將生成的 Widevine 金鑰提供給 Widevine 服務端。播放器將通過 Widevine 服務端獲取授權金鑰,以解密播放內容。

Bento4 對 DASH, HLS 加密

Bento4 可以用於對 DASH 和 HLS 串流進行不同 DRM 系統的加密,包括 PlayReady、Widevine 和 FairPlay。以下是各個 DRM 系統的簡單範例,請注意這僅是基本的示範,實際應用中可能需要根據你的環境和需求進行更詳細的配置。

PlayReady 加密示例:

bento4/bin/mp4-dash.py \
  --playready \
  --playready-license-server-url "https://playready-license-url.com" \
  --playready-key "your_playready_key" \
  input.mp4

Widevine 加密示例:

bento4/bin/mp4-dash.py \
  --widevine \
  --widevine-license-server-url "https://widevine-license-url.com" \
  --widevine-key "your_widevine_key" \
  input.mp4

FairPlay 加密示例:

bento4/bin/mp4-dash.py \
  --fairplay \
  --fairplay-ask "https://fairplay-ask-url.com" \
  --fairplay-pssh "your_fairplay_pssh_data" \
  input.mp4

在這些示例中:

–playready: 啟用 PlayReady 加密。

–playready-license-server-url: 指定 PlayReady 的許可伺服器 URL。

–playready-key: 指定 PlayReady 加密金鑰。

–widevine: 啟用 Widevine 加密。

–widevine-license-server-url: 指定 Widevine 的許可伺服器 URL。

–widevine-key: 指定 Widevine 加密金鑰。

–fairplay: 啟用 FairPlay 加密。

–fairplay-ask: 指定 FairPlay 詢問金鑰的 URL。

–fairplay-pssh: 指定 FairPlay 的 PSSH(Protection System Specific Header)數據。

這只是基本的範例,實際的配置可能需要更多的參數,具體取決於 DRM 服務的要求和特定的應用情境。確保參考 Bento4 和相應 DRM 系統的官方文檔以獲取更詳細和準確的資訊。

視頻編解碼器(Video Codec)

視頻編解碼器(Video Codec)是一種用於編碼和解碼數字視頻的軟體、硬體或一組規範。這些編解碼器的目標是將數位視頻轉換為有效的壓縮格式以進行存儲、傳輸或播放。當我們看視頻時,編解碼器的工作是將大量的視訊數據進行壓縮,以節省帶寬和存儲空間。

以下是一些常見的視頻編解碼器:

  1. H.264 / AVC(Advanced Video Coding):
    • H.264又稱為 AVC(Advanced Video Coding)是一種廣泛使用的高效視頻編碼標準,被廣泛應用在網絡視頻、藍光、數字電視等方面。
  2. H.265 / HEVC(High Efficiency Video Coding):
    • H.265是H.264的後繼標準,提供更高的壓縮效率,適用於4K和8K視頻。
  3. VP9:
    • VP9是由Google開發的開源視頻編解碼器,被廣泛應用於YouTube等平台,提供高效的壓縮效果。
  4. AV1:
    • AV1是一種開放、免費的視頻編解碼器,由Alliance for Open Media(AOMedia)開發,旨在提供高效的壓縮並應對未來的高分辨率和高動態範圍(HDR)內容。
  5. MPEG-2:
    • MPEG-2是一種老的但仍在使用的視頻編解碼標準,常見於DVD、數位電視等。
  6. MPEG-4:
    • MPEG-4包含多種編解碼器,如DivX和Xvid。它支持高壓縮率和多種功能,常見於視訊會議、網絡流媒體等。
  7. Theora:
    • Theora是一種開源的視頻編解碼器,主要用於網頁上的視頻播放。

每種編解碼器都有其特定的優勢和適用場景,選擇適當的編解碼器取決於用途、效能需求和相容性等因素。

H.264 / AVC 特點和編碼、解碼工作原理

H.264又稱為 AVC(Advanced Video Coding)是一種廣泛使用的高效視頻編碼標準,由ITU-T Video Coding Experts Group(VCEG)和ISO/IEC Moving Picture Experts Group(MPEG)共同制定。H.264於2003年正式公佈,它的主要目標是提供更高的壓縮效率,同時保持高質量的視頻,被廣泛應用在網絡視頻、藍光、數字電視等方面。

  1. 高效的壓縮:
    • H.264使用先進的壓縮技術,包括運動補償、變換編碼和熵編碼等,以實現更高的壓縮率。這使得相同質量的視頻文件相對於以前的編解碼標準更小,更適合在有限帶寬的網絡上進行傳輸。
  2. 運動補償:
    • H.264使用運動補償技術,該技術允許編碼器在連續的幀之間檢測並利用運動的區塊。這減少了需要儲存或傳輸的信息,因為只需記錄運動的部分,而不是每個畫面的完整信息。
  3. 變換編碼:
    • H.264使用多種變換技術,如8x8整數變換,以有效地捕捉視頻中的細微細節。這有助於提高視頻的編碼效率,減少失真。
  4. 熵編碼:
    • 熵編碼是一種有效編碼數據的方式,H.264使用了多種熵編碼技術,如上下文自適應二進制算法(CABAC)和上下文自適應算法(CAVLC)。這有助於進一步減少視頻數據的大小。
  5. 支援多種應用:
    • H.264廣泛應用於各種應用,包括廣播、視訊會議、視訊流媒體、藍光光碟、數碼電視、攝像頭等。它是許多網絡流媒體平台和設備的標準之一。

H.264編碼:

  1. 攝影機和攝像頭: 在攝影機和攝像頭中,H.264編碼通常用於將即時捕獲的影像轉換為數位格式。這使得攝像機能夠以高效率編碼並傳輸視訊數據。
  2. 視訊編輯軟體: 視訊編輯軟體使用H.264進行視訊編碼,以壓縮和保存視訊文件。這有助於節省存儲空間並加快視訊文件的上傳和下載速度。
  3. 視訊串流: 在網絡視訊串流中,H.264編碼用於將視訊流傳輸到網際網路。這樣可以節省帶寬,同時提供高質量的串流。

H.264解碼:

  1. 電視和影片播放器: 大多數現代電視、藍光播放器和流媒體裝置都內建H.264解碼器。這允許它們解碼和播放由H.264編碼的高質量視訊。
  2. 個人電腦: 常見的視訊播放軟體(如VLC、Windows Media Player)以及網頁瀏覽器內建的視訊解碼器支援H.264。這使得個人電腦能夠播放存儲在H.264格式中的視訊。
  3. 行動設備: 智能手機、平板電腦和其他行動設備通常內建H.264解碼器,使它們能夠播放高效編碼的視訊文件。

總的來說,H.264在許多不同的裝置和流程中都扮演著重要的角色,無論是在捕捉、編輯、傳輸還是播放視訊。其高效的壓縮性能和廣泛的相容性使其成為視訊應用的常見選擇。

音頻編解碼器(Audio Codec)

音頻編解碼器(Audio Codec)是一種用於壓縮和解壓縮數位音訊的軟體、硬體或一組規範。這些編解碼器的目標是將音訊數據轉換為有效的壓縮格式,以節省帶寬和存儲空間,同時保持高質量的音訊。

以下是一些常見的音訊編解碼器:

  1. MP3(MPEG Audio Layer III): MP3是一種廣泛使用的音訊編解碼標準,提供了有效的音訊壓縮,通常用於音樂存儲和流媒體。
  2. AAC(Advanced Audio Coding): AAC是一種高效的音訊編解碼標準,常見於iTunes、YouTube和各種流媒體服務,提供了更好的音質和更小的檔案大小。
  3. FLAC(Free Lossless Audio Codec): FLAC是一種無損音訊編解碼標準,它可以無損地壓縮音訊數據,保持原始音質,通常用於音樂存檔和音響發燒友的需求。
  4. WAV(Waveform Audio File Format): WAV是一種無壓縮的音訊格式,保留了原始音頻數據,常用於專業音頻編輯和錄音。
  5. Opus: Opus是一種開放、免費的音訊編解碼標準,廣泛應用於即時通訊、視訊會議和網絡串流,提供低延遲和高音質。
  6. WMA(Windows Media Audio): WMA是由微軟開發的音訊編解碼標準,常見於Windows Media Player和Windows Media格式的音訊檔案。
  7. OGG Vorbis: OGG Vorbis是一種開源的音訊編解碼標準,提供了高質量的音頻壓縮,通常用於音樂存儲和串流。

這些音訊編解碼器在不同的應用場景中發揮著重要的作用,具有不同的特性,包括壓縮效率、音質、檔案大小和相容性等。選擇適當的音訊編解碼器取決於具體的應用需求。

音訊編解碼器的取樣率(Sampling Rate)

音訊編解碼器的取樣率(Sampling Rate)是指每秒鐘採集並記錄的音訊樣本數量,通常以千赫茲(kHz)為單位。取樣率直接影響到音訊的頻寬和音質,更高的取樣率通常可以提供更好的音質,但同時也需要更多的存儲空間。

以下是一些常見的音訊編解碼器的取樣率:

  1. CD音質:
    • CD音質的標準取樣率是44.1 kHz。這是由Compact Disc(CD)標準所採用的取樣率,它能夠有效地重現人耳可感知的音訊範圍。
  2. MP3:
    • MP3常見的取樣率包括44.1 kHz、48 kHz等。使用不同的取樣率可以平衡音訊質量和檔案大小。
  3. AAC:
    • AAC支援多種取樣率,包括8 kHz、16 kHz、44.1 kHz、48 kHz等。取樣率的選擇取決於應用的需求,例如,音樂、視訊或通訊。
  4. FLAC:
    • FLAC作為一種無損音訊編解碼標準,可以支援多種取樣率,包括44.1 kHz、48 kHz等。
  5. Opus:
    • Opus是一種支援多種取樣率的音訊編解碼標準,包括8 kHz至48 kHz。
  6. WAV:
    • WAV格式可以包含多種取樣率,常見的有44.1 kHz、48 kHz等。

選擇適當的取樣率通常取決於應用的需求,例如所需的音質水平、檔案大小、存儲空間和設備相容性。高取樣率通常能夠更好地保留音頻細節,但也會增加檔案的大小。

Video Resolution 常見的 垂直像素(Vertical) 與 水平像素(Horizontal)

影片分辨率通常以水平和垂直像素數來表示,形成一個(水平像素 x 垂直像素)的格式。以下是一些常見的影片分辨率及其水平和垂直像素數:

  1. HD 分辨率:
    • 720p: 1280 x 720 像素(水平 x 垂直)
    • 1080p: 1920 x 1080 像素(水平 x 垂直)
  2. 2K 分辨率:
    • 2048 x 1080 像素是 2K 的一個常見形式,特別是在電影製作中。
  3. 4K 分辨率:
    • 3840 x 2160 像素(通常被稱為UHD或2160p)是常見的家用4K分辨率。
    • 4096 x 2160 像素是在數碼電影製作中使用的 DCI 4K 標準。
  4. 8K 分辨率:
    • 7680 x 4320 像素是8K的常見分辨率,提供極高的視覺細節。
  5. 其他分辨率:
    • 640 x 480 像素是標準的 VGA 分辨率。
    • 1280 x 1024 像素是常見的 SXGA 分辨率。

這些分辨率中,數字表示水平像素的數量,而 p 或 i 則表示逐行(progressive scan)或隔行(interlaced scan)。例如,720p 表示每次刷新所有的垂直像素,而 1080i 表示每次只刷新一半的垂直像素,然後在下一次刷新時刷新另一半,這是一種隔行掃描的方式。

像素格式(Pixel format)

像素格式(Pixel Format)代表視訊的色彩表示方式,指的是在數位圖像中用來表示每個像素的數據的方式。每個像素都包含有關顏色和亮度的信息,而像素格式確定了這些信息的排列和表示方式。

不同的像素格式使用不同的方式來表示色彩信息,這可能包括亮度(Luma)、色度(Chroma)以及透明度等。

一些常見的像素格式包括:

  1. RGB: 在RGB格式中,每個像素由紅色(R)、綠色(G)和藍色(B)三個分量組成。
  2. RGBA: 類似於RGB,但多了一個額外的透明度(Alpha)分量,用於表示像素的透明程度。
  3. YUV: YUV是一種將亮度(Y)和色度(UV)分開表示的格式。Y表示亮度,而UV表示色度。“yuv420p” 是YUV的一種變種,表示每4個像素共用一個UV樣本。
  4. GRAY: 灰度格式僅包含亮度信息,通常用於表示黑白圖像。
  5. CMYK: 用於印刷的顏色模型,包含青色(C)、洋紅色(M)、黃色(Y)和黑色(K)四個分量。

在視訊編解碼的上下文中,像素格式也與壓縮和編碼標準有關。例如,“yuv420p” 是一種在視訊編碼中常見的像素格式,用於表示視訊中的色彩信息。通过理解和選擇合適的像素格式,可以確保在視訊處理、編碼和解碼過程中維持良好的視覺品質。

以 FFmpeg 為例,在FFmpeg中,“yuv420p” 是一種 YUV 4:2:0 像素格式,代表視訊的色彩表示方式。當你使用FFmpeg進行視訊處理、轉碼或編解碼時,你可能會遇到 “yuv420p” 這個像素格式。

在FFmpeg的指令中,你可能會看到類似以下的內容:

ffmpeg -i input.mp4 -c:v libx264 -pix_fmt yuv420p output.mp4

這個指令中,"-c:v libx264" 表示使用H.264編碼器,而 “-pix_fmt yuv420p” 指定了輸出的像素格式為 yuv420p。

這種像素格式的選擇在視訊編碼中很常見,因為它在保持相對高視覺品質的同時,能夠有效地減小檔案大小。在 “yuv420p” 中,色度採樣比較低,這意味著色彩信息的樣本數相對較少,從而實現了壓縮。

Video resolution 的 DAR, PAR 意思是什麼

在影片分辨率的上下文中,DAR(Display Aspect Ratio)和PAR(Pixel Aspect Ratio)是兩個與畫面比例有關的重要概念。

  1. DAR(Display Aspect Ratio):
    • DAR是指在顯示或播放時,影片的寬高比。它表示影片在屏幕上的寬度和高度之比,而不考慮像素的形狀或異常變形。
    • 例如,一個影片的DAR為16:9表示,寬度是高度的16/9倍,這是常見的寬螢幕比例。
  2. PAR(Pixel Aspect Ratio):
    • PAR是指像素的寬高比,即寬度和高度的比例。有時,影片可能使用非正方形像素,這導致像素的形狀與寬高比不同。
    • PAR用來校正畫素的形狀,以確保在播放時影片的DAR得到正確的顯示。如果PAR不是1:1,則畫素的形狀可能會被拉伸或壓縮,這會影響影片的外觀。

簡而言之,DAR描述的是影片在屏幕上顯示的比例,而PAR描述的是影片中像素的形狀。兩者的組合確保在不同的顯示設備上,影片都能以正確的比例顯示,而不會出現拉伸或壓縮變形。在處理影片時,了解和設定DAR和PAR是確保影片正確顯示的重要步驟。

Video 常見的 Bitrate

影片的位元率(Bitrate)通常取決於多個因素,包括分辨率、編碼方式、畫面幀率、壓縮等級,以及影片內容的複雜性。以下是一些常見的影片位元率範圍,這些數值僅供參考,實際值可能會有所不同:

  1. SD(標準清晰度):
    • 480p(SD):500 kbps - 2 Mbps
  2. HD(高清晰度):
    • 720p(HD):2 Mbps - 5 Mbps
    • 1080p(Full HD):5 Mbps - 10 Mbps
  3. Full HD 3D:
    • 1080p 3D:10 Mbps - 20 Mbps
  4. 4K(超高清晰度):
    • 2160p(UHD):20 Mbps - 50 Mbps
    • 4K DCI(電影標準):30 Mbps - 100 Mbps
  5. 8K:
    • 4320p(8K):50 Mbps - 200 Mbps

這些數值是一般情況下的估算範圍,實際的位元率可能會根據使用的編碼器、壓縮算法、影片內容等因素而有所不同。在影片串流、儲存或傳輸過程中,選擇合適的位元率是平衡影片質量和流量(或存儲)需求的一個重要考慮因素。高位元率通常會提供更好的影片質量,但也需要更大的儲存空間或更高的網絡帶寬。

1 Mbps(兆位元每秒)等於 1,000 kbps(千位元每秒)。這是因為"兆"(Mega)是一個十進位前綴,表示1,000,000(10^6),而"kilo"(千)表示1,000(10^3)。因此,1 Mbps等於1,000 kbps。這種轉換是基於十進位的,與二進位轉換不同,二進位轉換中1 Mbps等於約 953.674 kbps。在一般的網絡和數據傳輸上下文中,通常使用十進位轉換。

Bit Rate Control | CBR

“Rate Control” 指的是視訊編碼過程中控制比特率的技術。在視訊編碼中,比特率是指每秒傳輸的位元數,通常以kbps(千位元每秒)為單位。而"CBR"則是"恆定位元速率"(Constant Bit Rate)的縮寫,它表示在整個視訊序列中,每秒傳輸的位元數保持恆定,不會有波動。

在 CBR 下,編碼器試圖保持穩定的比特率,無論視訊內容的複雜性有多大。這通常用於需要確保固定傳輸帶寬的應用,例如在實時視訊會議、直播等情境下。CBR 有助於確保在特定帶寬條件下穩定的傳輸,但可能會浪費一些位元率,因為在簡單場景中可能不需要使用全部分配的位元率。

在一些視訊編碼標準中,比如H.264,你可以透過設定編碼器的 “bitrate” 參數,來指定 CBR 模式下的目標比特率。這樣可以確保在整個視訊序列中,每秒傳輸的位元數維持在指定的數值。

在FFmpeg中,要使用 CBR(Constant Bit Rate)模式進行視訊編碼,你需要使用 -b:v 參數設定目標比特率。以下是一個簡單的例子:

ffmpeg -i input.mp4 -c:v libx264 -b:v 2000k -minrate 2000k -maxrate 2000k -bufsize 2000k -c:a aac -strict experimental -b:a 128k output.mp4

這個命令的解釋如下:

  • -i input.mp4:指定輸入視訊檔案。
  • -c:v libx264:選擇視訊編碼器為libx264。
  • -b:v 2000k:設定視訊的目標比特率為2000kbps。
  • -minrate 2000k:指定最小比特率。
  • -maxrate 2000k:指定最大比特率。
  • -bufsize 2000k:指定緩衝區大小。
  • -c:a aac:選擇音訊編碼器為AAC。
  • -strict experimental:允許使用實驗性的AAC編碼器。
  • -b:a 128k:設定音訊的目標比特率為128kbps。
  • output.mp4:指定輸出檔案名稱。

這個例子中,視訊的比特率被固定在2000kbps,這就是CBR模式。你可以根據需要調整目標比特率和其他相關參數。請注意,使用 CBR 可能會造成一些視訊場景中的浪費,因為某些場景可能不需要使用整個分配的位元率。