原创 十、FFmpeg視頻播放之快進快退

1、處理快進快退(seek)命令 本章我將給大家講解怎麼給我們的播放器添加快進、快退、定位功能,這也是幾乎所有播放器都有的功能。爲實現此功能,我們要用到av_seek_frame函數,這個函數非常簡單易用。 我們用鍵盤上的左右鍵分別表

原创 使用 AES 對稱加密算法對視頻文件進行加密解密(C++ 及 Java 實現)

因爲項目需要,最近學習了一下 AES 加密算法,並分別用 C++ 和 Java 實現了這個算法。用 Java 實現是因爲在 Android 項目上,需要對視頻文件進行 AES 加密解密,用 C++ 實現是因爲服務器需要對被加密過的視頻進行

原创 二叉查找樹即Binary Search Tree的查找和插入

我們簡單討論了 BST 的基本特性和操作。本章我們主要討論 BST 中的兩個基本操作 Search、Insertion。   1. Search a key 在 BST 中查找指定的 key,我們先把要查找的 key 和 root 節點比

原创 八、FFmpeg把音頻流同步到視頻流

1、同步音頻 現在我們已經有了一個比較像樣的播放器了,最後讓我們再來看一下剩下的一些簡單的細節。在上章中我們說過也可以把音頻同步到視頻的,本章我們就來實現這個功能。這和把視頻同步到音頻是類似的:用一個內部視頻時鐘記錄視頻線程播放了多久,然

原创 最小生成樹之Boruvka算法

Boruvka算法是求最小生成樹的最古老的算法,於1926年由Boruvka提出,那時計算機還沒出現呢。其時間複雜度和Prim、Kruskal算法一樣,也是O(ELogV)。而且Boruvka算法也和Prim、Kruskal一樣是貪心法。

原创 操作系統原理-進程和線程的區別

進程和線程是兩個緊密相關的概念,它們最主要的區別是線程是進程的一部分,一個進程可以包含多個線程,但是線程不能包含進程。每個可執行的程序都包含兩個基本部分,即進程和線程。它們都是用於執行一系列的指令,都是由程序或系統進行初始化。 進程是可執

原创 一、FFmpeg Linux開發環境搭建(附源碼)

1.根據官方文檔 https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu 先安裝相關依賴庫,執行下面的命令進行安裝即可 sudo apt-get update -qq && apt-get

原创 用動態規劃算法解決矩陣連乘問題

對一系列的矩陣進行乘法運算,求最佳的運算結合順序,使得所需的乘法總次數最少。 我們知道,矩陣連乘滿足結合律,如對於四個矩陣相乘 ABCD,有 ABCD = (ABC)D = (AB)(CD) = A(BCD) = ... 但是結合順序不同

原创 六、FFmpeg-優化音頻解碼播放流程

一、音頻解碼播放概述 前面我們用SDL處理了音頻流,SDL會啓動一個線程監聽音頻回調函數。本章中,我們仿照音頻的處理方式來處理視頻的顯示。這樣會使得代碼更加模塊化,易於開發維護。到我們對音視頻進行同步時,這種模塊化會使得同步的實現會非常方

原创 最長迴文子串問題(C C++及Java實現)

問題:給定一個字符串,設計算法找到它的最長迴文子串的長度。如 “BBABCBCAB”,它的最長迴文子串爲 “BABCBAB”,長度爲 7。“BBBBB” 和 “BBCBB” 也是迴文子串,但是它們的長度不是最長的。 分析:顯然如果用窮舉法

原创 數據結構-圖論基礎知識

“圖”是由一系列的點和連接這些點的線組成的,圖論中圖的概念有很多專業術語,如點、線、頂點、邊、頂點的度、圖的屬性等等。本章意在簡單的介紹這些基本概念和術語。   1.點(Point) 點代表了一維、二維或三維空間中的一個特定位置,通常用一

原创 圖的表示法:鄰接矩陣和鄰接鏈表的實現

本章主要來討論圖在數據結構中的表示方法。構成圖的兩個元素是頂點的有限集合和邊的有限集合,頂點也稱節點。邊的表示格式爲 (u, v),對於無向圖,邊是沒有順序的,所以 (u, v) 和 (v, u) 是相同的。但是在有向圖中,邊是有順序的,

原创 二叉樹的遍歷(C C++及Java算法實現)

二叉樹的遍歷,題目描述: 編一個程序,讀入用戶輸入的一串先序遍歷字符串,根據此字符串建立一個二叉樹(以指針方式存儲)。 例如如下的先序遍歷字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空樹。建立起此二叉樹以

原创 0-1揹包問題(C C++及Java實現)

0-1揹包問題,是說給定 n 個物體,每個物體都有一定的重量和價值,再給一個能容納最大重量爲 w 的揹包。求從 n 個物體中選出若干個放到揹包中,在所選物體總重量不超過 w 的情況下,所選物體的總價值最大。 注意:所有物體都不可分割。 分

原创 二、FFmpeg VS2017開發環境的搭建(附源碼)

1.下載FFmpeg相關源碼和lib文件 https://ffmpeg.zeranoe.com/builds/ 打開VS新建 -> Visual C++ -> Windows 桌面 -> Windows 控制檯應用程序(可根據需要選擇)