VS2015編譯FFMPEG,修改FFmpeg緩沖區大小解決實時流解碼丟包問題,FFmpeg錯誤rtsp流地址卡死的問題,設置超時


之前嘗試過很多網上利用Windows編譯FFmpeg的文章,都沒有辦法編譯X64位的FFmpeg,有些教程中有專門提到編譯64位的FFmpeg需要下載mingw-w64-install,但是編譯的過程中總是遇到各種錯誤。嘗試了很久依然沒有成功。

然后在網上看見另外一篇教程:VS2015編譯FFMPEG。方法很簡答,並且成功編譯了X64位的FFmpeg。特此記錄:轉自:http://blog.csdn.net/gongxp123456/article/details/52879976

系統環境:Windows 10 64位
  需要安裝的軟件和工具:
  Visual Studio 2015 With Update 3
  MSYS2
  YASM
  一、VS2015
  安裝VS2015時,選擇Git。
   
  二、msys2
  1、到這里下載:
   http://msys2.github.io. 選擇第二個:msys2-x86_64-20160921.exe
  下載后,安裝默認安裝到C:\ msys64
  2.安裝后,到msys2窗口執行,安裝編譯程序: pacman -S make gcc diffutils
  3. 重命名C:\msys64\usr\bin\link.exe 為C: \msys64\usr\bin\link.bak, 避免和MSVC 的link.exe抵觸。
  三、YASM
  1. YASM下載地址: http://yasm.tortall.net/Download.html,下載其64位版本Win64 .exe (64 位 Windows 通用)。
  2、下載后,將下載回來的yasm-1.3.0-win64.exe 改名為yaml.exe,並放置於 MSYS2 安裝目錄中。就是放置到c:\msys64\usr\bin\ 中。
  四,ffmpeg
下載最新版本ffmpeg,本文是在2016.10.21下載,如果速度太慢,可以翻牆后再執行:
  進入windows命令行,在C:\FFMPEG目錄下執行:
  git clone git://source.ffmpeg.org/ffmpeg.git
  四,編譯ffmpeg
  1、使用VC2015編輯C:\msys64\msys2_shell.cmd,將其中的:
  rem set MSYS2_PATH_TYPE=inherit
  “rem”注釋刪除掉,成為:
  set MSYS2_PATH_TYPE=inherit
  2、到開始菜單,執行“Visual Studio 2015-> VS2015 x64 本機工具命令提示符”,在命令窗口下,CD \msys64,執行:msys2_shell.cmd -mingw64
  3、在啟動的 MSYS2 終端中分別運行一下命令觀察各便於工具組件是否被正確找到:
  
  5、修改msys2窗口代碼頁為GBK,避免編譯時顯示亂碼:
  
  4、編譯ffmpeg
  在msys2窗口:
  cd /
  cd /ffmpeg
  cd /ffmgeg
  進入下載ffmpeg目錄中
  ./configure  --toolchain=msvc  --arch=x86  --enable-yasm  --enable-asm --enable-shared  --disable-static
  make
  make install
  這樣以后,編譯生產的執行文件ffmpeg.exe和DLL文件在目錄C:\msys64\usr\local\bin中,開發頭文件在C:\msys64\usr\local\include中。
 
最后記錄一下問題:編譯FFmpeg是為了解決解碼實時流丟包的問題,想要修改緩沖區的大小,但是修改源碼之后編譯新的FFmpeg后依然丟包嚴重。
后來發現,FFmpeg留有修改緩沖區大小的接口,可以在代碼中直接修改。

 

 最近新提出了一個問題,解碼的時候傳入一個錯誤的rtsp流地址,會怎么樣?結果測試發現會卡死在avformat_open_input里,一直不返回。
后來在網上查發現,avformat_open_input是阻塞的,但是可以設置超時,設置的方法:
av_dict_set(&dic, "stimeout", "2000000", 0);
注意!是stimeout,網上有些寫的是timeout,不行的,寫timeout,無論是傳入正確的rtsp流地址還是錯誤的,都會返回無法連接的。改成stimeout就正確了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM