【音視頻】Qt中引入FFmpeg


音視頻有關的部分都是使用標准C++的,只有界面的部分才會使用Qt的內容。這樣也是為了方便以后移植到其他系統上。

 

  音視頻開發中最常做的就是編解碼的操作。以H.264為例:如果想要自己實現編碼h.264,需要對H.264非常的了解。可以選擇去看H.264的文檔,也可以使用別人已經寫好的源代碼。

  主流的H.264編碼器:x264、t264等

但對於新手來說,由於對h.264不是很了解,因此在使用x264上有點困難,出了問題通常不知道如何解決。並且這些庫都只能編碼一種格式,所以一開始不推薦使用。 而是推薦使用FFMPEG。

 

FFMPEG  

  FFMPEG是一個集成了各種編解碼器的庫,可以說是一個全能型的工具,從視頻采集、視頻編碼到視頻傳輸(包括RTP、RTCP、RTMP、RTSP等等協議)都可以直接使用FFMPEG來完成,更重要的一點FFMPEG是跨平台的,Windows、Linux、Aandroid、IOS這些主流系統通吃。因此初期強烈建議直接使用FFMPEG。

 

1、下載FFMPEG:https://ffmpeg.zeranoe.com/builds/

  • Static :靜態庫版本
  • Shared:動態庫版本
  • Dev:提供給開發者用的lib文件

下載Dev文件和Shared文件

 只留下include和lib這2個文件夾,其他的都刪了

 

 創建Qt的純C++項目,在.pro文件中鏈接庫文件(在dev文件的lib文件夾下)

 

 再將shared/bin文件夾中的dll文件,復制到當前qt工程debug文件中

 

測試一下,輸出版本號

#pragma execution_character_set("utf-8")
#include <iostream>
using namespace std;

extern "C"
{
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"
#include "libavdevice/avdevice.h"
}
///而FFMPEG是C的庫
///由於我們建立的是C++的工程
///編譯的時候使用的C++的編譯器編譯
///因此這里需要加上extern "C"
///否則會提示各種未定義

int main(int argc, char *argv[])
{
    cout << "Test FFmpeg!" << endl;

    av_register_all();
    unsigned version = avcodec_version();
    cout << "version :" << version;

    return 0;
}

 

 


免責聲明!

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



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