• 3

MP4 檔案 如何知道 是 CPU/GPU 編碼 產生的 ?

IQuit wrote:不合 邏輯,
所以 我 猜 是 CPU/GPU 轉 的 差異(7 樓 提到).

執著於這個是沒有意義的~

你可以確定片源1和片源2的原始影片是同一個的檔案轉出的嗎??

要作這類(CPU/GPU 轉 的 差異)的比較就是拿同一個高畫質檔案
把解析度/ 幀數(FPS)/ 位元速率(Bitrate)都調成一樣,但不同的解碼方式做轉出
如此才能比較解碼的差異性~

不要老是在張飛打岳飛了~~
這種問題,不能從頭到尾,自己做差異比較嗎 ?
nick667 wrote:
看影片大小就知道,
之前有謎片2K還壓到1GB..
看到直接砍掉. 傷眼還一堆廣告.

Sorcerer905020 wrote:
執著於這個是沒有意義的~

你可以確定片源1和片源2的原始影片是同一個的檔案轉出的嗎??

要作這類(CPU/GPU 轉 的 差異)的比較就是拿同一個高畫質檔案
把解析度/ 幀數(FPS)/ 位元速率(Bitrate)都調成一樣,但不同的解碼方式做轉出
如此才能比較解碼的差異性~

不要老是在張飛打岳飛了~~


網上 MP4 片源 不同.

你說的 差異性 我在 7 樓 有提到.
實測過.
nwcs wrote:
這種問題,不能從頭到尾,自己做差異比較嗎 ?


主要是 想知道 MP4 有無方法 能知道 是 CPU/GPU 編碼 產生的.
IQuit wrote:
主要是 想知道 MP4 有無方法 能知道 是 CPU/GPU 編碼 產生的.

你可以從 PSNR 和檔案容量去分析
同樣的編碼格式,通常軟編碼出來的檔案會更小
硬編碼是速度更快,但同畫質下的檔案容量會比軟編碼的大兩三倍
前提是你要有原始影片可以對照分析
tyf000 wrote:
你可以從 PSNR 和檔案容量去分析
同樣的編碼格式,通常軟編碼出來的檔案會更小
硬編碼是速度更快,但同畫質下的檔案容量會比軟編碼的大兩三倍
前提是你要有原始影片可以對照分析


查了 Google PSNR 是 啥玩意,
問題是 若是從 網上抓的影片 來源賊多,
即使是同 1 個 來源 通常只有 轉後的 結果 無從比較.

試過 Nvidia/Intel 硬轉 比較過,
我 只用 CPU 軟轉.

PS:
理想狀況 是 透過 CMD 方式(FFMpeg/MediaInfo) 分析影片,
主要 是用在 批次檔,
但 影片 沒有 硬性規定的欄位 寫入 軟轉/硬轉 的 資訊.

如圖 所示 :

簡單的作法,我用 ffmpeg 示範
找一個影片 origin.mp4,用不同畫質去編碼出 test [CRFxx].mp4

#!/bin/zsh

# 編碼用 HEVC Constant Quality 模式,輸出 CRF22.0 ~ CRF28.0 七個不同畫質的影片
for i in {22..28}; do
ffmpeg -nostdin -y -i 'origin.mp4' -c:V libx265 -crf "${i}.0" -ac 2 -c:a aac -vbr 3 -tag:v:0 hvc1 'test [CRF'${i}'.0].mp4'
done

# 比對編碼後的影片跟原始影片,計算 PSNR
for i in {22..28}; do
ffmpeg -i 'test [CRF'${i}'.0].mp4' -i 'origin.mp4' -filter_complex 'psnr' -f null /dev/null 2>&1 | grep Parsed_psnr
done


PSNR 比對結果像這樣
CRF22.0 - [Parsed_psnr_0 @ 0x60000205c000] PSNR y:46.994510 u:48.561735 v:48.166431 average:47.403643 min:45.107905 max:50.592698
CRF23.0 - [Parsed_psnr_0 @ 0x6000001fc160] PSNR y:46.348772 u:47.962046 v:47.570330 average:46.770672 min:44.401065 max:50.043355
CRF24.0 - [Parsed_psnr_0 @ 0x600001d7c000] PSNR y:45.708005 u:47.372539 v:46.967450 average:46.141606 min:43.687044 max:49.445153
CRF25.0 - [Parsed_psnr_0 @ 0x6000001d8160] PSNR y:45.062010 u:46.717148 v:46.307008 average:45.492437 min:42.889671 max:48.782690
CRF26.0 - [Parsed_psnr_0 @ 0x600002d48210] PSNR y:44.423775 u:46.131675 v:45.723862 average:44.868381 min:42.218560 max:48.132573
CRF27.0 - [Parsed_psnr_0 @ 0x600000df8160] PSNR y:43.786076 u:45.599734 v:45.205310 average:44.259884 min:41.561134 max:47.556072
CRF28.0 - [Parsed_psnr_0 @ 0x600002cc8420] PSNR y:43.151528 u:45.030974 v:44.646004 average:43.643367 min:40.871993 max:46.970365


你可以用同樣的方式,硬編碼幾個不同畫質的影片
然後計算軟編碼和硬編碼的 PSNR,把 PSNR 相近的拉出來比對 (average的差距<0.2),看看兩種檔案的其它差異


如果你只有一個不知來源的檔案,沒有任何能比對的,那就沒辦法
但如果你能從上面可控的測試中找出些不同的 pattern 特徵,那就能套用到一般檔案的判定
tyf000 wrote:
簡單的作法,我用 ffmpeg 示範
找一個影片 origin.mp4,用不同畫質去編碼出 test [CRFxx].mp4

#!/bin/zsh

# 編碼用 HEVC Constant Quality 模式,輸出 CRF22.0 ~ CRF28.0 七個不同畫質的影片
for i in {22..28}; do
ffmpeg -nostdin -y -i 'origin.mp4' -c:V libx265 -crf "${i}.0" -ac 2 -c:a aac -vbr 3 -tag:v:0 hvc1 'test [CRF'${i}'.0].mp4'
done

# 比對編碼後的影片跟原始影片,計算 PSNR
for i in {22..28}; do
ffmpeg -v error -i 'test [CRF'${i}'.0].mp4' -i 'origin.mp4' -filter_complex 'psnr' -f null /dev/null
done

PSNR 比對結果像這樣
CRF22.0 - [Parsed_psnr_0 @ 0x60000205c000] PSNR y:46.994510 u:48.561735 v:48.166431 average:47.403643 min:45.107905 max:50.592698
CRF23.0 - [Parsed_psnr_0 @ 0x6000001fc160] PSNR y:46.348772 u:47.962046 v:47.570330 average:46.770672 min:44.401065 max:50.043355
CRF24.0 - [Parsed_psnr_0 @ 0x600001d7c000] PSNR y:45.708005 u:47.372539 v:46.967450 average:46.141606 min:43.687044 max:49.445153
CRF25.0 - [Parsed_psnr_0 @ 0x6000001d8160] PSNR y:45.062010 u:46.717148 v:46.307008 average:45.492437 min:42.889671 max:48.782690
CRF26.0 - [Parsed_psnr_0 @ 0x600002d48210] PSNR y:44.423775 u:46.131675 v:45.723862 average:44.868381 min:42.218560 max:48.132573
CRF27.0 - [Parsed_psnr_0 @ 0x600000df8160] PSNR y:43.786076 u:45.599734 v:45.205310 average:44.259884 min:41.561134 max:47.556072
CRF28.0 - [Parsed_psnr_0 @ 0x600002cc8420] PSNR y:43.151528 u:45.030974 v:44.646004 average:43.643367 min:40.871993 max:46.970365

你可以用同樣的方式,硬編碼幾個不同畫質的影片
然後計算軟編碼和硬編碼的 PSNR,把 PSNR 相近的拉出來比對 (average的差距<0.2),看看兩種檔案的其它差異

如果你只有一個不知來源的檔案,沒有任何能比對的,那就沒辦法
但如果你能從上面可控的測試中找出些不同的 pattern 特徵,那就能套用到一般檔案的判定


基本上 看到 高解析 品質差 的 影片,
我 直覺 就是 硬編碼,
因為 之前 實驗過 參數接近的 軟/硬編碼,
軟編碼 除了轉檔稍久 其它都完勝.
IQuit wrote:
因為 之前 實驗過 參數接近的 軟/硬編碼,
軟編碼 除了轉檔稍久 其它都完勝.

也不能這樣下結論,重點還是要看後面的用途
如果是要封存的東西,用軟編碼確實較好.
但如果是一般影音工作者,客戶要求兩天內就要剪好編好出片給他,這時就是要硬編碼拼速度.
客戶可能馬上就要公開放送出去,要是你用軟編碼慢慢壓,就直接開天窗了

軟編碼或硬編碼沒有高低,能轉換成金錢的東西才是最好的
  • 3
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?