Blackbing Playground

[node-webkit] video mp4 format support

node-webkit 不支援 mp4/mp3 format

最近在玩 node-webkit 遇到一個問題,就是 video 不支援 mp4,原本在瀏覽器開發的好好的,丟到 node-webkit 執行就會死掉。追了一下原來有這個 issue,而且還寫了 wiki Support mp3 and h264 in video and audio tag。大意是說因為 License 的關係,node-webkit 並不會把這些有專利的影音格式支援 build 進去,若您的應用程式需要支援這些有專利的影音格式,可以用以下的解決方式,但風險自負。

詳細看了一下 wiki,最簡單的方式是將 libffmpegsumo.so 取代至 build 出來的專案中。但一定要跟 node-webkit 的 chromium 版本相同,若你自己的 chrome 是最新版的並不保證支援。

於是我在 build 完再把 libffmpegsumo 複製過去取代,重新開啟之後發現影片出現了,但是沒有聲音,WTF。
而在 windows 上的症頭是程式無回應。WTF。
不過這也是 wiki 上寫的並不保證支援最新版本的 chrome。

WebM format

突然想到,這麼麻煩解 mp4 的問題幹嘛,就轉成支援的格式就好了,於是我突然想到可以用 WebM的格式,而且大部分瀏覽器都已經 support 了。所以我就先把 mp4 轉成 webm,沒想到最大的 benefit 就是檔案大小,從原本的 13M 降低成 2.8M,真是嚇死我了,因為當初想要用 node-webkit 包起來有個主要原因就是影片的檔案大小問題,想說可以跑在本機執行的話會比較順暢。不過 anyway,加上一個 source 之後就可以在 node-webkit 上順利執行了,也不用在 build process 中加入奇怪的取代 lib 的動作,非常的好。

1
2
3
4
<video>
<source src="video.webm" type="video/webm">
<source src="video.mp4" type="video/mp4">
</video>

小結

在想解決問題的方法時,不一定要執著在問題的本身,有時候回頭去思考問題或者轉個方向,搞不好就很快的迎刃而解了。想當初我為了要解決播放 mp4 的問題,花了很多時間搜尋 node-webkit mp4 的問題(目光含淚),但其實以我的需求根本不需要直接去解決這個問題。以上。