中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

怎么看網(wǎng)站做的外鏈百度app客服人工在線咨詢

怎么看網(wǎng)站做的外鏈,百度app客服人工在線咨詢,麗江做網(wǎng)站,如何做企業(yè)交易網(wǎng)站Flutter視頻渲染系列 第一章 Android使用Texture渲染視頻 第二章 Windows使用Texture渲染視頻 第三章 Linux使用Texture渲染視頻 第四章 全平臺(tái)FFICustomPainter渲染視頻 第五章 Windows使用Native窗口渲染視頻 第六章 桌面端使用texture_rgba_renderer渲染視頻 第七章 使用ff…

Flutter視頻渲染系列

第一章 Android使用Texture渲染視頻
第二章 Windows使用Texture渲染視頻
第三章 Linux使用Texture渲染視頻
第四章 全平臺(tái)FFI+CustomPainter渲染視頻
第五章 Windows使用Native窗口渲染視頻
第六章 桌面端使用texture_rgba_renderer渲染視頻
第七章 使用ffigen生成ffmpeg的dart接口(本章)


文章目錄

  • Flutter視頻渲染系列
  • 前言
  • 一、如何實(shí)現(xiàn)
    • 1、添加ffigen插件
    • 2、創(chuàng)建ffigen.yaml
    • 3、ffigen命令生成dart代碼
    • 4、關(guān)聯(lián)ffmpeg庫
  • 二、制作成插件
  • 三、使用示例
    • 1、添加插件
    • 2、調(diào)用ffmpeg
  • 總結(jié)


前言

前面幾章介紹了flutter各種視頻渲染的方法,視頻渲染前顯然是需要先獲取視頻流并解碼,這些操作就需要用到ffmpeg,前面的幾章的解碼都是通過c語言調(diào)用ffmpeg,再將數(shù)據(jù)傳輸?shù)絛art渲染的。本章將提供一種生成ffmpeg dart接口的方法,直接用dart就可以調(diào)用ffmpeg進(jìn)行拉流并解碼然后顯示。


一、如何實(shí)現(xiàn)

1、添加ffigen插件

插件的地址是https://pub-web.flutter-io.cn/packages/ffigen。我們直接在pubspec.yaml添加依賴即可。
依賴。ffigen不是運(yùn)行庫,是一個(gè)開發(fā)工具,通過執(zhí)行命令來生成dart代碼,所以放在dev_dependencies即可。

ffigen: ^12.0.0

在這里插入圖片描述

2、創(chuàng)建ffigen.yaml

創(chuàng)建一個(gè)yaml文件用于指定需要生成的頭文件以及生成的對(duì)象名稱等信息。ffigen.yaml的用法查看插件官網(wǎng):https://pub-web.flutter-io.cn/packages/ffigen
在這里插入圖片描述
編寫生成信息,需要指定頭文件、過濾規(guī)則、以及名稱轉(zhuǎn)換規(guī)則

#usage:cmdline "dart run ffigen --config ffmpeg_ffigen.yaml"  see more:https://pub-web.flutter-io.cn/packages/ffigen
name: FFmpegAutoGen#生成的dart類名
output:bindings: "lib/ffmpeg/ffmpeg_auto_gen.dart"#生成的dart文件路徑
headers:entry-points:#需要生成dart代碼的ffmpeg頭文件- "ffi/sdk/include/libavcodec/avcodec.h"#其他ffmpeg頭文件略include-directives:- "**.**"
compiler-opts:- "-I ffi/sdk/include"
#名稱過濾規(guī)則略
#名稱轉(zhuǎn)換規(guī)則略

3、ffigen命令生成dart代碼

ffmpeg_ffigen.yaml所在目錄,命令行在執(zhí)行。需要安裝lvvm,不同平臺(tái)具體查看https://pub-web.flutter-io.cn/packages/ffigen

dart run ffigen --config ffmpeg_ffigen.yaml

生成的dart文件
在這里插入圖片描述
生成的dart代碼
在這里插入圖片描述

4、關(guān)聯(lián)ffmpeg庫

新建一個(gè)ff.dart文件,將上述步驟生成代碼與ffmpeg庫關(guān)聯(lián)起來,下列是ffmpeg4.x的示例。

import 'dart:ffi';
import 'dart:io';
import 'package:ffmpeg_interface/ffmpeg/ffmpeg_auto_gen.dart';
import 'package:ffi/ffi.dart';List<DynamicLibrary> _libs4 = [DynamicLibrary.open(Platform.isWindows ? "avutil-56.dll" : "libavutil.so"),DynamicLibrary.open(Platform.isWindows ? "swresample-3.dll" : "libswresample.so"),DynamicLibrary.open(Platform.isWindows ? "avcodec-58.dll" : "libavcodec.so"),DynamicLibrary.open(Platform.isWindows ? "postproc-55.dll" : "libpostproc.so"),DynamicLibrary.open(Platform.isWindows ? "swscale-5.dll" : "libswscale.so"),DynamicLibrary.open(Platform.isWindows ? "avformat-58.dll" : "libavformat.so"),DynamicLibrary.open(Platform.isWindows ? "avfilter-7.dll" : "libavfilter.so"),DynamicLibrary.open(Platform.isWindows ? "avdevice-58.dll" : "libavdevice.so"),
];Pointer<T> _looup<T extends NativeType>(String symbolName) {for (final i in _libs4) {if (i.providesSymbol(symbolName)) {return i.lookup(symbolName);}}throw Exception("can not find the symbol $symbolName from library");
}final ff = FFmpegAutoGen.fromLookup(_looup);

調(diào)用方法是

final frame=ff.av_frame_alloc();

或者將自動(dòng)生成的FFmpegAutoGen對(duì)象去掉,直接將ffmpeg的方法都變成全局方法,方便調(diào)用,此處略。


二、制作成插件

將上述生成好的代碼放入插件中,方便使用。

flutter create ffmpeg_interface -t plugin --platforms windows,linux,android

制作好的插件
https://download.csdn.net/download/u013113678/89410377

注:插件名稱為ffmpeg_interface,包含ffmpeg的所有dart接口,ffmpeg接口版本為4.x,插件中只有ffmpeg接口,ffmpeg動(dòng)態(tài)庫(4.x)需要自行提供(因?yàn)榭紤]到不同項(xiàng)目需求不同,有些需要全功能的ffmpeg庫,有些需要最小體積的ffmpeg庫等,所以插件中不提供庫)。目前只支持windows、linux、android。不支持macos和ios(由于沒有設(shè)備,且網(wǎng)上暫時(shí)未搜索到VideoToolBox.h相關(guān)頭文件下載,因此無法生成蘋果相關(guān)的ffmpeg dart代碼)。


三、使用示例

ffmpeg_interface插件的使用示例

1、添加插件

因?yàn)槭潜镜夭寮?#xff0c;指定插件路徑即可。比如放在項(xiàng)目的plugins/ffmpeg_interface,則path: plugins/ffmpeg_interface
在這里插入圖片描述

2、調(diào)用ffmpeg

需要確保運(yùn)行目錄中有ffmpeg(4.x)的動(dòng)態(tài)庫。

引用

import 'package:ffmpeg_interface/ffmpeg/ffmpeg.dart';

顯示ffmpeg版本


Text('Running on: $_platformVersion\n ffmpeg version is ${av_version_info().cast<Utf8>().toDartString()}')

運(yùn)行效果
在這里插入圖片描述


總結(jié)

以上就是今天要講述的內(nèi)容,生成ffmpeg的dart代碼在有了ffigen的情況下,容易了很多,但是也有一些細(xì)節(jié)需要注意的,尤其是想要生成所的接口,就需要確保所有頭文件都包含,以及過濾掉不相關(guān)的符號(hào)以及將一些公有符號(hào)的下劃線前綴去掉避免在dart中無法使用。

http://www.risenshineclean.com/news/6309.html

相關(guān)文章:

  • 做網(wǎng)站推廣多少錢黑帽seo聯(lián)系方式
  • 怎么用ps做網(wǎng)站首頁關(guān)鍵詞排名方案
  • 河南省住房城鄉(xiāng)建設(shè)廳官方網(wǎng)站window優(yōu)化大師
  • 自己建網(wǎng)站的費(fèi)用百度搜索收錄入口
  • 國外網(wǎng)站空間租用費(fèi)用站長工具seo綜合查詢廣告
  • 泰州網(wǎng)站開發(fā)搜索引擎搜索
  • 廣州做企業(yè)網(wǎng)站找哪家公司好熱點(diǎn)新聞事件素材
  • 貴安新區(qū)網(wǎng)站建設(shè)地推一手項(xiàng)目平臺(tái)
  • 政府部門建設(shè)網(wǎng)站的必要性東營百度推廣公司
  • 網(wǎng)站建設(shè)專業(yè)品牌行業(yè)關(guān)鍵詞搜索排名
  • 企業(yè)網(wǎng)站seo策略關(guān)鍵詞優(yōu)化排名網(wǎng)站
  • 家居建材網(wǎng)站源碼seo 優(yōu)化案例
  • 在豬八戒網(wǎng)站如何做兼職谷歌seo服務(wù)商
  • 南通企業(yè)網(wǎng)站有哪些推廣普通話活動(dòng)方案
  • 網(wǎng)站建設(shè)南陽有沒有免費(fèi)的推廣網(wǎng)站
  • wordpress常見的15個(gè)問題鄭州seo優(yōu)化外包公司
  • 蘇州公司做網(wǎng)站qq關(guān)鍵詞排名優(yōu)化
  • 山東一建建設(shè)有限公司網(wǎng)站什么是企業(yè)營銷型網(wǎng)站
  • 呼和浩特市建設(shè)委員會(huì)官方網(wǎng)站網(wǎng)站建設(shè)需求模板
  • 如何注冊(cè)騰訊企業(yè)郵箱店鋪seo是什么意思
  • 下沙網(wǎng)站建設(shè)谷歌優(yōu)化seo
  • 網(wǎng)站建設(shè)合約網(wǎng)上學(xué)電腦培訓(xùn)中心
  • 江西住房和城鄉(xiāng)建設(shè)廳網(wǎng)站windows優(yōu)化大師免費(fèi)
  • 為什么做金融網(wǎng)站犯法seo是指搜索引擎營銷
  • 導(dǎo)航網(wǎng)站怎么做seo霸屏推廣
  • 做網(wǎng)站軟件j短視頻營銷成功的案例
  • 自助手機(jī)建站網(wǎng)站站點(diǎn)
  • 安徽專業(yè)網(wǎng)站建設(shè)大全推薦新網(wǎng)站推廣方法
  • 做網(wǎng)站商城必須要買空間嗎app運(yùn)營方案
  • 怎么查看網(wǎng)站的dns武漢網(wǎng)站運(yùn)營專業(yè)樂云seo