iT邦幫忙

2025 iThome 鐵人賽

DAY 11
0

Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~

在本系列文因為工作上的產品應用需求,進而探索到很多層面的點滴事。透過每篇 EP 的分享把這些點滴整理,看起來或許像是個獨立的小品抒發文、也或許是一系列技術研究文!?

總之,就當作的隨手雜記文吧!

本篇是 莫名其妙就跟世界等級的 OpenSource 專案攪和了!? 系列文的 EP11。


接續前回的指令:
gst-launch-1.0 filesrc location="c:/tmp/bbb_sunflower.mp4" ! qtdemux ! avdec_h264 ! x264enc ! filesink location="c:/tmp/new_bbb_sunflower.mp4"

如果能夠在接入 filesink 之前加上 h264parsemp4mux 的處理,這樣就可以透過 h264pars 正確地完成 H.264 位元串流封裝正確,並透過 mp4mux 按照 mp4 的檔案格式寫入到檔案中。

於是就形成如下指令:
gst-launch-1.0 filesrc location="c:/tmp/bbb_sunflower.mp4" ! qtdemux ! avdec_h264 ! x264enc ! h264parse ! mp4mux ! filesink location="c:/tmp/new_bbb_sunflower.mp4"

這時候,一般常用的多媒體影音撥放程式,應該就可以正常開啟該檔案。
mp4-01

不過,會發現轉出來的這個 new_bbb_sunflower.mp4 檔案比起原 bbb_sunflower.mp4 檔案的大小,小了許多。

仔細一聽會發現,整個檔案安靜無聲。

這就得提到前一回說 "qtdemux 先忽略" 的 qtdemux 了。

由於這個 qtdemux 會把 audio (音訊)與 video (影像)分離出來,而後續又只針對影像作檔案保存的處理,所以就得到這樣的結果了。

注意看下圖 new_bbb_sunflower.mp4 (右)的音訊資訊是完全沒有的。
mp4-02
(雖然造成檔案大小變小的主要原因不是因為沒有音訊)

另外,當電腦執行下列指令時:
gst-launch-1.0 filesrc location="c:/tmp/bbb_sunflower.mp4" ! qtdemux ! avdec_h264 ! x264enc ! h264parse ! mp4mux ! filesink location="c:/tmp/new_bbb_sunflower.mp4"

過程中會發現 CPU 的運算會突然飆高。
mp4-03

這就要問問扮演 encoder 的 x264enc。

由於 x264enc 是一套完全透過 CPU 計算處理的通用型編碼器,所以如果要在各種有 gstreamer 的平台上運作時,透過 x264enc 來進行編碼是沒問題的。

但是付出的代價就是要大量花費 CPU 的運算量。

由於目前使用的電腦只有內建 Intel® Iris® Xe Graphics 的這個 GPU,在 Intel 的台灣官網上只能看到有列出來,但連結點進去沒顯示任何東西。
mp4-04
(畫面擷取自 Intel 台灣官網)

但在 gstreamer 的 plugin 當中有 qsv 的元件是支援使用 Intel Quick Sync 的一系列 decoder/encoder 的。

所以指令可以更換成:
gst-launch-1.0 filesrc location="c:/tmp/bbb_sunflower.mp4" ! qtdemux ! avdec_h264 ! videoconvert ! qsvh264enc ! h264parse ! mp4mux ! filesink location="c:/tmp/new_bbb_sunflower.mp4"

這此執行的過程中就會發現 CPU 的運算下降,而 GPU 的運算也變高。
mp4-05

雖然是透過不太優秀的 GPU 來運算,但再怎麼樣都透過比 CPU 運算來的好,所以完整跑完整個檔案的時間也大幅縮短。
mp4-06-1
mp4-06-2

透過這樣子對比就可以理解到為什麼有硬體加速是很重要的了。

PS avdec_h264 也是一種軟體解碼(仰賴 CPU 運算)的跨平台通用型 decoder。

所以,如果可以的話選擇於硬體解碼的 decoder 會是比較好的方式。

而在 windows 平台上通常也都可選 d3d11h264decd3d12h264dec 這兩個 decoder 來處理。


上一篇
EP 10
系列文
莫名其妙就跟世界等級的 OpenSource 專案攪和了!?11
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言