1. 環(huán)境
Win10 + Visual Stdio 2017
2. 材料
Windows版本的FFMPEG庫
下載地址:https://ffmpeg.zeranoe.com/builds/
如圖1所示,下載Windows64位的4.0.2版本的Shared和Dev版本,Dev包含的是開發(fā)ffmpeg程序所需要的頭文件及鏈接庫,在編譯時會用到;Shared包含的是運行程序時調(diào)用到的ffmpeg的動態(tài)庫,在運行時用到。這兩個都要下載。

3 開發(fā)環(huán)境配置
- 創(chuàng)建解決方案
打開Visual Studio 2017,創(chuàng)建一個live的解決方案,如圖2所示,

- 創(chuàng)建項目
如圖3,

項目結(jié)構(gòu)如圖4所示。

- 運行
此時點本地Windows調(diào)試器按鍵運行一下,如果彈出的控制臺有打印Hello World, 則項目創(chuàng)建成功。
VS默認(rèn)為Debug環(huán)境為x86配置,我們可以將其手動改為x64平臺。如圖5所示,再次點本地Windows調(diào)試器按鍵運行一下,看是否還會成功打印Hello World,答案當(dāng)然是肯定的啦。

接下來我們把ffmpeg加入到我們的解決方案中,在我們的live目錄下創(chuàng)建一個ffmpeg的目錄來存放庫及頭文件,還有運行動態(tài)庫。將ffmpeg-4.0.2-win64-dev文件夾下的include和lib,還有ffmpeg-4.0.2-win64-shared文件夾下的bin目錄都復(fù)制到ffmpeg目錄下。
接下來就是把它們配置到我們的live解決方案中
3.1 配置include和lib目錄
右擊項目,屬性 --> C/C++ --> 常規(guī) 添加include目錄 如圖6

鏈接器-->常規(guī)-->附加庫目錄 添加lib目錄 如圖7

鏈接器--》輸入--》附加依賴項--》編輯,輸入lib目錄中所有的.lib文件名,如圖8,9所示。


運行環(huán)境配置:配置屬性-->高度-->環(huán)境-->輸入path=ffmpeg bin目錄 如圖10所示

至此,所有的配置完成。
3.2 導(dǎo)入源碼
我們這次的推流工程項目StreamPusher是直接拿雷神的simplest_ffmpeg_streamer的工程來升級的,雷神的simplest_ffmpeg_streamer的github地址為https://github.com/leixiaohua1020/simplest_ffmpeg_streamer, 它這個工程是在2014年10月份寫的,當(dāng)時的ffmpeg版本為2.3.6, https://ffmpeg.org/olddownload.html,如圖11。

這次我們嘗試著給它升級到4.0.2,看它能不能正常運行。
首先將雷神的simplest_ffmpeg_streamer項目中的simplest_ffmpeg_streamer.cpp復(fù)制到我們的StreamPusher.cpp里,編譯時主要碰到三個問題,
-
預(yù)編譯頭錯誤
解決方法
- 在解決方案資源管理器中,右擊相應(yīng)的.cpp文件,點擊“屬性”
- 在左側(cè)配置屬性中,點開“C/C++”,單擊“預(yù)編譯頭”
- 更改右側(cè)第一行的“創(chuàng)建/使用預(yù)編譯頭”,把選項從“使用預(yù)編譯頭(/Yu)”改成“不使用預(yù)編譯頭”
如下圖所示

- CODEC_FLAG_GLOBAL_HEADER找不到
在4.0.2版本中,它已被替換成AV_CODEC_FLAG_GLOBAL_HEADER。
- 變量/類被聲明已否決
發(fā)現(xiàn)報非常多的變量/類被聲明已否決,先暫時關(guān)掉SDL試一下,
3.3 驗證
編譯成功后,再搭建一個SRS流媒體服務(wù)器驗證一下(網(wǎng)上有許多博客可參考,比較簡單),推流成功。
如下圖所示:

下一節(jié),我們將打開SDL,通過修改代碼,實現(xiàn)將此工程升級到4.0.3版本。
完整代碼可到我的github下載:
https://github.com/onroadtech/live
branch: master
