生活随笔
收集整理的這篇文章主要介紹了
FFMPEG系列课程(一)打开视频解码器
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
測試環(huán)境:windows10?
開發(fā)工具:VS2013
? ? ? ? 從今天開始準備些FFmpeg的系列教程,今天是第一課我們研究下打開視頻文件和視頻×××。演示環(huán)境在windows上,在linux上代碼也是一樣。
? ? ? ?windows上可以不編譯ffmpeg源碼,后面我會分別講解在linux和在windows上如何編譯ffmpeg,直接在FFmpeg官網(wǎng)下載已經(jīng)編譯好的dll和lib文件,下載地址https://ffmpeg.zeranoe.com/builds/ 里面有32位和64位的,我下載的32位。
//引用ffmpeg頭文件,我這邊是C++必須加上extern?"C",ffmpeg都是c語言函數(shù),
//不加會鏈接失敗,找不到定義
extern?"C"
{#include<libavformat/avformat.h>
}
//引用lib庫,也可以在項目中設(shè)置,打開視頻只需要用到這三個庫
#pragma?comment(lib,"avformat.lib")
#pragma?comment(lib,"avutil.lib")
#pragma?comment(lib,"avcodec.lib")
#include?<iostream>
using?namespace?std;
int?main(int?argc,char?*argv[])
{//初始化所以ffmpeg的×××av_register_all();char?path[1024]?=?"video.mp4";//用來存放打開的視頻流信息AVFormatContext?*ic?=?NULL;//用來存儲視頻流索引int?videoStream?=?0;//打開視頻播放流//path參數(shù)表示打開的視頻路徑,這個路徑可以包括各種視頻文件//也包括rtsp和http網(wǎng)絡(luò)視頻流//第三個參數(shù)表示傳入的視頻格式,我這邊不傳遞有FFmpeg內(nèi)部獲取//最后一個參數(shù)是設(shè)置,我們這里也不傳遞int?re?=?avformat_open_input(&ic,?path,?0,?0);
if?(re?!=?0)
{//獲取到FFmpeg的錯誤信息char?errorbuf[1024]?=?{0}
av_strerror(re,?errorbuf,?sizeof(errorbuf));
printf("open?%s?failed:?%s\n",?path,?errorbuf);
return?-1;
}
//遍歷視頻流,里面包含音頻流,視頻流,或者字母流,我們這里只處理視頻
for?(int?i?=?0;?i?<?ic->nb_streams;?i++)
{
AVCodecContext?*enc?=?ic->streams[i]->codec;
//確認是視頻流
if?(enc->codec_type?==?AVMEDIA_TYPE_VIDEO)
{//存放視頻流索引,后面的代碼要用到videoStream?=?i;//找到×××,比如H264,×××的信息也是ffmpeg內(nèi)部獲取的AVCodec?*codec?=?avcodec_find_decoder(enc->codec_id);if?(!codec)
{
printf("video?code?not?find!\n");
return?-2;
}//打開視頻×××,打開音頻×××用的也是同一個函數(shù)
int?err?=?avcodec_open2(enc,?codec,?NULL);
if?(err?!=?0)
{
char?buf[1024]?=?{?0?};
av_strerror(err,?buf,?sizeof(buf));
printf(buf);
return?-3;
}}}
更多的資料也可以關(guān)注我51CTO上的視頻課程
夏老師的課堂?http://edu.51cto.com/lecturer/12016059.html
手把手教您開發(fā)視頻播放器
http://edu.51cto.com/course/course_id-8059.html
轉(zhuǎn)載于:https://blog.51cto.com/xiacaojun/1886399
超強干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達旦的技術(shù)人生
總結(jié)
以上是生活随笔為你收集整理的FFMPEG系列课程(一)打开视频解码器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。