PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

  回應
 
主題工具
沒問題
Major Member
 

加入日期: Dec 2015
文章: 211
引用:
作者a9607
這個圖表顯示的是

FFmpeg 在 單一線程(某些audio codec先天限制)下 比 PAT(你的多線程轉碼程式)慢

有損codec 大概慢了 5.7x~6.1x
無損codec 大概慢了 1.68x~1.83x

如果這樣來看的話, PAT的單執行緒效率其實是落後於FFmpeg的



以FFmpeg多核心的轉碼方法來測試的話,結果應該是FFmpeg反超PAT一截

(以有損code為例)

1、取得wav檔時間總長 9031秒,分成15段的話每段約602秒

2、用FFmpeg 的切塊指令 把原檔切成15個wave檔,然後用腳本一次叫出15個ffmpeg對個別切片檔作平行轉檔

3、這時 16核的cpu使用率應該都吃滿了

4、腳本監測 15個 task 都成功執行完畢後,把15個結果檔 用FFmpeg 依序 join成一個輸出檔

5、源檔、15個切片檔、15個轉碼檔、最終輸出檔 全都丟在 tmpfs(記憶體中),所有的讀寫都以接近記憶體寬的速率操作

根據以往的經驗,這種作法雖然達不到15倍...


對我而言,這個問題的重點是,當你把WAV切開,再編碼尤其是AAC及MP3時,會有兩個明顯的障礙:
1.你需要極大的RAM或硬碟空間,如果你的原始WAV是六聲道超高精度,32bits等等。
2.FFmpeg對音訊天生沒有多線程及綁定實體核心加速的編碼方式,因此縱使有你提到的Gapless問題,但他現在還是最快的。

gapless的問題,我在用AI寫這個轉碼器的時候就想過了。但是這是一個可以考慮改進的方向。
至於切塊轉碼沒有快過FFmpeg,這我還會再改進切塊的算法跟分配。

最後,我這個轉碼器會試著直接從AAC轉MP3,反之亦然。並沒有一定要靠WAV。
我是個懶人,有的人會說為什麼不做一個GUI的FFmpeg自動切塊多核心就好,是的,現在任何人都可以這樣做,我之所以做PAT是因為跟AI討論的時候,他自己就開始花我的token實作了,所以將錯就錯把它做完了。
     
      

此文章於 2026-09-15 11:55 AM 被 沒問題 編輯.
舊 2026-09-15, 11:49 AM #11
回應時引用此文章
沒問題離線中  
沒問題
Major Member
 

加入日期: Dec 2015
文章: 211
附帶提到一件事:
關於gapless的問題,當你將MP3先轉成WAV的時候是會失真的,這時候再把WAV切塊然後轉成AAC時,又會失真一次,而且還是會產生gapless的問題。反之亦然。

PAT的做法是直接轉成PCM,這是唯一不會失真的方法,但是仍然可能會有gapless的問題。
 

此文章於 2026-09-15 04:12 PM 被 沒問題 編輯.
舊 2026-09-15, 04:11 PM #12
回應時引用此文章
沒問題離線中  
che
Major Member
 
che的大頭照
 

加入日期: Mar 2009
文章: 129
請問你為什麼要實作這個音訊轉碼器 ?
通常使用的場景是 ?
__________________
舊 2026-09-15, 04:21 PM #13
回應時引用此文章
che現在在線上  
沒問題
Major Member
 

加入日期: Dec 2015
文章: 211
引用:
作者che
請問你為什麼要實作這個音訊轉碼器 ?
通常使用的場景是 ?


沒有什麼特別的使用場景,主要是不想浪費電腦的硬體,有這麼多的核心,又有這麼大的RAM,但是卻只能單線程,再加上超大檔的轉碼速度在單線程下其實有點慢,至少我懶得等。
事實證明,如果真的能多線程配合超大的RAM,得到的速度是值得的,雖然有gapless的問題。
舊 2026-09-15, 04:33 PM #14
回應時引用此文章
沒問題離線中  
ethan3330
Major Member
 
ethan3330的大頭照
 

加入日期: Apr 2002
文章: 198
簡單測試

真的有比較快

一首 FLAC 轉成 MP3

Parallel Audio Transcoder GPU 只需要 5 秒

FreemakeAudioConverter 需要 17 秒






可惜沒有批次轉檔
或是沒找到哪邊可以設定
舊 2026-09-15, 07:28 PM #15
回應時引用此文章
ethan3330離線中  
bpoff
Junior Member
 

加入日期: Dec 2008
文章: 801
ffmpeg 要發揮多核心主要是靠單一指令對多檔案同時處理,這個就不限格式全都有效,也就會吃倍數的記憶體。其實音訊壓縮如果真有很多檔案的話,用 ffmpeg 那種就行了,也沒有分割會有的問題。音訊檔案處理已經很快了,再快也就那樣,除非你能想出什麼真的全新的功能來做。

程式在讀取多語系名稱檔案有點問題,支援的輸入格式也不夠多,加上gui裡面的一些bug,只能說再加油吧,但加油到最後也就還是那樣,一個嶄新的輪子。
舊 2026-09-15, 08:08 PM #16
回應時引用此文章
bpoff離線中  
沒問題
Major Member
 

加入日期: Dec 2015
文章: 211
引用:
作者bpoff
ffmpeg 要發揮多核心主要是靠單一指令對多檔案同時處理,這個就不限格式全都有效,也就會吃倍數的記憶體。其實音訊壓縮如果真有很多檔案的話,用 ffmpeg 那種就行了,也沒有分割會有的問題。音訊檔案處理已經很快了,再快也就那樣,除非你能想出什麼真的全新的功能來做。

程式在讀取多語系名稱檔案有點問題,支援的輸入格式也不夠多,加上gui裡面的一些bug,只能說再加油吧,但加油到最後也就還是那樣,一個嶄新的輪子。


你好,對於很大的音檔,還是有價值。
我再考慮下一個版本,而且會嚴格要求gapless問題的減少。

gui的bug有哪些?

我到是沒想過用FFmpeg同時對多個檔案並行運算,這真是一個好思路。

另外還要再提一點,現在這個版本的MP3轉碼,其實已經嚴格限制gapless的發生。
不可能不會或永遠不發生gapless的問題,但是已經將問題減低到讓人聽不出來的程度。
至少是數學模型修正的合法容忍範圍內。一開始的時候,編碼器也修正改寫過,肯定不會時常發生gapless的問題,如果讓你遇上了,你應該去買樂透!

最後,說到嶄新的輪子這件事,或許對AI來說解決gapless是相對容易的事,但可惜的是人類最終在面對並行轉碼時選擇了單一線程這條路。這讓我想到三十年前,花一整晚去轉歌的日子。

此文章於 2026-09-15 08:44 PM 被 沒問題 編輯.
舊 2026-09-15, 08:37 PM #17
回應時引用此文章
沒問題離線中  
bpoff
Junior Member
 

加入日期: Dec 2008
文章: 801
gap 問題聽不出來是一回事,但如果已知可能的話一般人會直接避免,不會想要轉完還要檢查,檢查的時間比轉多上幾十倍可能都不只。gui 的問題例如恢復預設不會完全恢復預設,其他我沒認真看了,畢竟你的輸入格式太少,對我來說根本找不到用這個的理由。還有不需要用輸入格式來限制輸出格式,假如一個 flac 低壓縮想重新轉成高壓縮?這樣你限制就沒道理了。

像目前 libflac 已經有 multithread,也可以直接呼叫這個就好了。
舊 2026-09-15, 09:20 PM #18
回應時引用此文章
bpoff離線中  
沒問題
Major Member
 

加入日期: Dec 2015
文章: 211
引用:
作者bpoff
gap 問題聽不出來是一回事,但如果已知可能的話一般人會直接避免,不會想要轉完還要檢查,檢查的時間比轉多上幾十倍可能都不只。gui 的問題例如恢復預設不會完全恢復預設,其他我沒認真看了,畢竟你的輸入格式太少,對我來說根本找不到用這個的理由。還有不需要用輸入格式來限制輸出格式,假如一個 flac 低壓縮想重新轉成高壓縮?這樣你限制就沒道理了。

像目前 libflac 已經有 multithread,也可以直接呼叫這個就好了。


你希望再加入哪些格式?
舊 2026-09-15, 11:19 PM #19
回應時引用此文章
沒問題離線中  
bpoff
Junior Member
 

加入日期: Dec 2008
文章: 801
如你只是自用的話那不用再問我了,我只是隨便提供一點意見而已,坦白說這軟體我用不到。我覺得你看起來也只像是寫好玩的,所以你自己沒問題就可以了。除非你真的想要精益求精,那樣的話你該先多研究其他常見軟體能做到什麼。
舊 2026-09-16, 12:15 AM #20
回應時引用此文章
bpoff離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是01:39 PM.


vBulletin Version 3.0.1
powered_by_vbulletin 2026。