• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

libffmpeg: 基于项目https://gitee.com/smartavs/ffmpeg.git的代码库,支持使用FFMPEG ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

libffmpeg

开源软件地址:

https://gitee.com/smartavs/libffmpeg

开源软件介绍:

libffmpeg

1.介绍

项目是基于开源项目中的fftools模块进行移植和修改,主要目的

  • 支持FFMPEG的多线程调用;
  • 支持FFMPEG的API级别接口调用,且可进行业务功能的扩展;

注意:ffmpeg相关库是基于项目https://gitee.com/smartavs/ffmpeg.git编译的,并且也是基于该版本进行的测试和验证。理论上本项目的代码稍作修改是可兼容各个FFMPEG的版本,具体验证后续再说;

2.编译说明

2.1.源码下载

git clone https://gitee.com/smartavs/ffmpeg.gitgit clone https://gitee.com/smartavs/libffmpeg.git

2.2.FFMPEG库编译

  • 进入ffmpeg源码路径,创建脚本文件usr_complie.sh;

  • 脚本文件usr_complie.sh内加入以下内容;

#! /bin/bashprefix=/usr/local/mscoreexport PKG_CONFIG_PATH=${prefix}/lib/pkgconfig:$PKG_CONFIG_PATH##ffmpeg usesecho "Install libs(sdl,sdl2,fontconfig,fribidi,yasm) for ffmpeg"apt install -y  libsdl1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsdl-gfx1.2-dev libsdl2-* *fontconfig* *fribidi* yasmbash configure \    --prefix=${prefix} \    --extra-ldflags=-L${prefix}/lib \    --extra-cflags=-I${prefix}/include \    --enable-shared \    --disable-static \    --enable-x86asm \    --disable-doc \    --enable-gpl \    --enable-pthreadsmake && make install
  • 执行脚本文件usr_complie.sh,完成编译;

2.3.LIBFFMPEG库编译

  • 进入libffmpeg源码路径,然后执行指令make进行编译和安装;
  • 安装路径默认在/usr/local/mscore,可以通过修改Makefile文件进行配置(prefix_x8664=/usr/local/mscore);

2.4.LIBFFMPEG库样例编译和运行

  • 进入libffmpeg源码路径,然后执行指令make sample进行样例的编译;
  • 执行./out/bin/msffmpeg_api_sample进行功能测试;

3.使用说明

ffmpeg库的初始化和清理函数,程序只需要开始调用一次初始化和整个程序退出时释放一次即可;

extern int msffmepg_api_envinit();extern int msffmepg_api_envdeinit();

libffmpeg环境始化函数

函数功能说明:用于分配并初始化FFMPEGCONText

传入参数说明:

​ <1>char (*control_cbfunc)(void *control_cbfunc_arg)用于进行执行控制的回调函数,如授权控制,退出指令控制等。当回调函数返回0时,任务线程将会退出。如果不需要控制,则传入NULL;

​ <2>control_cbfunc_arg用于传入回调函数需要的程序变量结构体。如果不需要控制,则传入NULL;

​ <3>char (*bitrate_cbfunc)(void *bitrate_cbfunc_arg,int size,char flag_recv)用于获取接收和发送码率信息和运行时间等的回调函数,size传入本次回调的包大小,flag_recv表明当前回调是接收还是发送。如果不需要计算码率,则传入NULL;

​ <4>bitrate_cbfunc_arg用于传入回调函数需要的程序变量结构体。如果不需要计算码率,则传入NULL;

返回参数说明:失败返回NULL,成功则返回分配成功的FFMPEGCONText指针;

extern FFMPEGCONText *msffmepg_api_init(char (*control_cbfunc)(void *control_cbfunc_arg),void *control_cbfunc_arg,	char (*bitrate_cbfunc)(void *bitrate_cbfunc_arg,int size,char flag_recv),void *bitrate_cbfunc_arg);

libffmpeg清理函数

函数功能说明:释放FFMPEGCONText空间

extern void msffmepg_api_deinit(FFMPEGCONText **ppffmpeg_ctt);

命令执行接口函数1

函数功能说明:实际的命令执行函数,和msffmepg_api_run功能一样,只是传入参数有差异

传入参数说明:

​ <1>argc表示传入的参数个数,如ffmpeg -i input.mp3 output.ts,argc传入4;

​ <2>argv表示传入的具体参数;

​ <3>pffmpeg_ctt为通过接口msffmepg_api_init获取到的指针;

返回参数说明:无实际意义;

extern int msffmepg_api_runcmd(int argc,char** argv,FFMPEGCONText *pffmpeg_ctt);

命令执行接口函数2

函数功能说明:实际的命令执行函数,和msffmepg_api_runcmd功能一样,只是传入参数有差异

传入参数说明:

​ <1>cmdline命令行字符串,如ffmpeg -i input.mp3 output.ts,argc

​ <2>pffmpeg_ctt为通过接口msffmepg_api_init获取到的指针;

返回参数说明:无实际意义;

extern int msffmepg_api_run(char * cmdline,FFMPEGCONText *pffmpeg_ctt);

命令停止接口函数

传入参数说明:

​ <1>pffmpeg_ctt为通过接口msffmepg_api_init获取到的指针;

​ <2>flag_waitstop指明是否等待执行退出:1表示同步执行,阻塞等待执行退出或30秒超时;0表示异步执行;

返回参数说明:0表示停止成功;-1表示停止失败;1表示pffmpeg_ctt未空,停止失败;

extern char msffmepg_api_taskstop(FFMPEGCONText *pffmpeg_ctt,char flag_waitstop);

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap