[C/C++] SDL 與 FFMEPG 播放影片
SDL (Simple DirectMedia Layer) 和 FFmpeg (Fast Forward mepg) 是兩個獨立的函式庫,可以結合使用以實現視訊播放。
SDL (Simple DirectMedia Layer) 和 FFmpeg (Fast Forward mepg) 是兩個獨立的函式庫,可以結合使用以實現視訊播放。
透過 Flutter 框架開發的 App (含 iOS 與 Android) 已經上線,開始要追蹤用戶使用時,是否有發生不預期的狀況。
如同開發原生 iOS App 那樣,我將 Firebase Crashlytics 導入 Flutter App 中,一旦有任何崩潰、例外狀況,就會被記錄且上傳到 Firebase,讓我每天能明確掌握 App 使用狀況,並在適當時機修正並釋出新版本。🙃
這是我開啟記錄「例外」事件功能後,在 Firebase 上所搜集統計的資料。在沒有開啟此功能前是一片祥和,幾乎沒有「崩潰」事件。然而我為了優化 App 各種不預期的使用狀況,便有需要去了解會有哪些「例外」事件。🤔
(繼續閱讀…)想要實現 SDL 和 FFmpeg 非同步方式播放影片,涉及到在一個單獨的線程中解碼影片幀,並在主線程中更新 SDL 視窗。之後做到同時播放影片,還能偵測滑鼠點擊事件。
有時候在寫 C/C++ 程式,引用了某些 Library,編譯會出現錯誤,後來查找原因
FFmpeg 編譯: undefined reference to ‘av_frame_alloc()’
原來該 Library 是以純 C 寫的,需要以 extern "C"
來讓編譯器識別。
看來我真的對 C/C++ 不熟呢~😜
(繼續閱讀…)最近有個任務是寫回調函式 (Callback Function)。在寫 App 已經用過類似的機制,被包裝得相當容易使用。這次就來實現比較底層的作法。
在日常生活中,回調函式就像一個「代理人」。當你需要某人幫忙做一件事情,但你自己又不能做的時候,你就可以請一個「代理人」來幫你。
例如,你想去一個地方,但你不知道路。你可以請一個朋友來幫你帶路。在這個例子中,你的朋友就是你的「代理人」。
在程式設計中,回調函式也是一樣。當你需要某個函式在完成某些工作後通知你,但你自己又不能做的時候,你可以使用回調函式。
例如,你想下載一個文件。你可以使用一個函式來下載文件,並在下載完成後通知你。在這個例子中,下載文件的函式就是你的「代理人」。
以下是一些日常生活中的回調函式的例子:
在這些例子中,服務生、商家和銀行都扮演著「代理人」的角色。他們在完成某些工作後通知你。
(繼續閱讀…)Git 版本控制是軟體開發非常重要的工具,而 git 指令有非常多妙用,可根據自身需求來使用。其中 git merge 和 git rebase 差異會是我想要了解的地方。因為有同事和老闆(會寫程式)比較偏好 git rebase 來合併分支,讓我覺得有必要了解其原因。🤔
(繼續閱讀…)我個人喜好將複雜的技術簡單化,所以若能有圖解的方式來呈現,肯定會讓我學習的更輕鬆愉快。
每隔一段時間,我會想回顧我正在使用的技能,是否能有優化的空間。Git 指令是我平常開發時,一定會用到的版本控制工具。
(繼續閱讀…)網頁已有的功能,想要完整移植到 App,可以怎麼做呢?刻一個原生的,會是個較佳的選項,因為使用者體驗可以很棒!然而就是得花時間去實現。🤪
我們想到可以在 App 載入網頁檔案,省去從頭刻畫面的時間,再來實現 WebView 與 App 互動的部分。
(繼續閱讀…)善用運算符號,可以減少寫些程式碼。在使用之前,必須了解它是怎麼運作,之後就能得心應手囉~
我目前只會 IF ELSE 來使用問號運算符,趁這時候多學點語法糖,讓我可少寫幾行程式碼,也可達到些成就感。🙃
Flutter 是以 Dart 程式語言來運行,線上可以直接測試程式碼:https://dartpad.dartlang.org/
(繼續閱讀…)
HappyMan・迴響