中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ffmpeg的編譯和使用

發布時間:2020-07-22 02:22:54 來源:網絡 閱讀:392 作者:卓行天下 欄目:移動開發

最近由于項目需要,接觸了一下ffmpeg的編譯和使用。

由于之前的版本ffmpeg編譯的庫比較老,對新設備,5s及5s以后的設備支持不太好,重新編譯了ffmpeg靜態庫。

一,下載并在終端中運行腳本編譯ffmpeg

腳本參考git上的:https://github.com/kewlbear/FFmpeg-iOS-build-script;

終端進入剛剛下載后的腳本文件夾下,運行sh:build-ffmpeg.sh 自動編譯,有缺少yasm的按照提示操作,安裝yasm

編譯的是ffmpeg2.5.3版本,Xcode6下iOS8.1。

按照腳本編譯完后的靜態庫目錄如下:ffmpeg的編譯和使用

其中的.a文件為靜態庫文件,include文件夾內的是頭文件

二,將編譯好的ffmpeg文件拖人工程,并設置相應的路徑

新建工程,將編譯好后包含include和lib文件夾拖進工程

ffmpeg的編譯和使用

我這里先將FFmpeg-iOS文件夾copy了一分放在工程目錄下,并重新命名為ffmpegNew,路徑如下圖:

到這里要修改工程的Header Search Paths ,要不然會報 

include“libavformat/avformat.h” file not found  錯誤

根據Library Search Paths 中的lib的路徑:

ffmpeg的編譯和使用

復制路徑,添加一份到Header Search Paths 中,再將lib改為include

改好如下:

ffmpeg的編譯和使用

 

三,導入其他庫文件

其中libz.dylib libbz2.dylib libiconv.dylib 貌似是必須要導入的,其他的按照需求配置

個人配置好后的如下供參考:

ffmpeg的編譯和使用

四,將第三方代碼導入工程

根據工程的定制化需求,這里選擇了iFrameExtractor,git代碼參考:https://github.com/lajos/iFrameExtractor 或者 RTSPPlayer    https://github.com/SutanKasturi/RTSPPlayer

我這里用的后者的demo里面的代碼,直接將(AudioStreamer  RTSPPlayer  Utilities)六個文件拖入工程使用

ffmpeg的編譯和使用

 

五,實現播放,實現方法可以參考demo中的代碼

其中的self.playUrl為視頻流的地址本工程用的是RTSP 數據流  示例:

self.playUrl = @"rtsp://xxx.xxx.xxx.xxx/xxx.sdp";

實現播放的代碼:

 

 

self.videoView = [[RTSPPlayer allocinitWithVideo:self.playUrl usesTcp:YES];

 

    self.videoView.outputHeight = self.playImage.frame.size.height;

 

    self.videoView.outputWidth  = self.playImage.frame.size.width;

 

    __weak TestViewController *weakself = self;

 

    dispatch_async(dispatch_get_main_queue(), ^{

 

        weakself.playTimer = [NSTimer scheduledTimerWithTimeInterval:1/30.0

 

                                                          target:weakself

 

                                                        selector:@selector(displayNextFrame:)

 

                                                        userInfo:nil

 

                                                         repeats:YES];

 

    });

-(void)displayNextFrame:(NSTimer *)timer {    

    if (![self.videoView stepFrame]) {

        [timer invalidate];

        return;

    }

    

    if (startframecount < 48) {

        startframecount++;

    } else {

        startframecount++;

        [self playVideo];

    }

}

 

-(void)playVideo

{

//    NSLog(@"%p,%d",__FUNCTION__,__LINE__);

    //主線程更改視圖

    //視頻源尺寸為352*288

    __weak TestViewController *weakself = self;

    dispatch_async(dispatch_get_main_queue(), ^{

    weakself.playImage.p_w_picpath =  weakself.videoView.currentImage;

//        NSLog(@"%d,%d",self.videoView.sourceWidth,self.videoView.sourceHeight);

    });

}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

体育| 安远县| 乌拉特中旗| 陈巴尔虎旗| 庆阳市| 三门县| 武川县| 安康市| 怀化市| 新晃| 五寨县| 仁寿县| 霍山县| 江北区| 中阳县| 沂水县| 深水埗区| 肇源县| 桂阳县| 武定县| 阿克陶县| 长兴县| 平顶山市| 名山县| 巧家县| 江孜县| 华阴市| 昆明市| 永安市| 阜南县| 泰顺县| 竹北市| 海丰县| 靖江市| 肥东县| 榆社县| 隆昌县| 棋牌| 渝北区| 青浦区| 札达县|