请选择 进入手机版 | 继续访问电脑版

石家庄老站长

点击联系客服
客服QQ: 客服微信:
 找回密码
 立即注册
查看: 17|回复: 1

库的各种问题 如NDK编译FFMPEG库和MeadiaCodec

[复制链接]

1

主题

1

帖子

-7

积分

限制会员

积分
-7
发表于 2021-10-2 15:00:11 | 显示全部楼层 |阅读模式
最近进行新项目需要在C层实施多种音频视频逻辑,从网络上下载FFmpeg等并放入Android  Studio后,出现了各种问题,现在都在总结记录中~

1.连接外部UVC协议摄像头时,如果插入摄像头,会有显示设备列表,但不会出现屏幕。外部相机使用开源库的LibUvcCamera日志中也报告了这些错误。

[506 * uvc  camera  . CPP  33601723360 connect]: could  not  open  camera  3360 err=-1

E/Android  runtime  : Fatal  Exception  : Base  Activity

process  3360 com  . serenegiant  . USB  camera  test  0,PID  : 7753

Java  . lang  . unsupportedoperationexception  : open  failed  : result=-1

atcom  . serenegiant  . USB  . uvccamera  . open(uvccamera  . Java  3360204)

atcom  . serenegiant  . USB  camera  test  0 . main  activity  $ 2 $ 1 . run(main  activity  . Java  3360149)

atandroid  . OS  . handler  . handle  callback(handler  . Java  3360751)

atandroid  . OS  . handler  . dispatchmessage(handler  . Java  336095)

atandroid  . OS  . looper  . loop(looper  . Java  3360154)

atandroid  . OS  . handler  thread  . run(handler  thread  . Java  336061)

查了很多资料,让我换NDK版本,但说不行,后来又查了很多资料,国外一个论坛上有上帝说toolchain版本有关系,看到源代码后编译的Application.mk刚刚注释完毕,生效了。

NDK_TOOLCHAIN_VERSION  :=4.9

不报告错误,屏幕显示正常。以下是在Application.mk上修改的完整代码。

#/*

# * UVCCamera

# * library  and  sample  to  access  to  uvc  web  camera  on  non-rooted  Android  device

# *

# *版权所有(c)2014-2017 saki  t  _ saki  @ serenegiant.com

# *

# * File  name: Application.mk

# *

# * licensed  under  the  Apache  license,version  2.0(the  ' license  ');

# * you  may  not  use  this  file  except  in  compliance  with  the  license。

# * you  may  obtain  a  copy  of  the  license  at

# *

# * http://www  . Apache  . org/licenses/license-2.0

# *

# * applicable  law  or  agreed  to  in  writing,软件

# * distributed  under  the  license  is  distributed  on  an  ' as  is  ' basis,

# * without  warranties  or  conditions  of  any  kind,either  express  or  implied  .

# * see  the  license  for  the  specific  language  governing  permissions  and

# * limitations  under  the  License。

# *

# * all  files  in  the  folder  are  under  this  Apache许可证,版本2.0。

# * files  in  the  JNI/libjpeg、JNI/libusb、Jin/lib  uvc、JNI/rapid  JSON  folder  may  have  a  different  license;

# */

# this  is  just  for  MIPS,if  you  really  needs  MSA,un-comment  and  build  with  gcc。

# note  : supporting  gcc  on  ndk  is  already  deprecated  and  gcc  will  be  removed  from  ndk  soon  .

NDK_TOOLCHAIN_VERSION  :=4.9

App  _ platform3360=Android-14

# app  _ ABI  3360=arme  ABI  arme  ABI-v  7 ax  86 MIPS

APP  _ ABI  3360=arme  ABI-v7a

# app  _ optim3360=debug

App  _ optim  :=发行版本

然后,ffmpeg和meadiaCodec相关库:

error  : no  type  named  ' shared  _ ptr  ' in  namespace  ' STD  '

解决方法,添加到该文档:#includememory

error  : no  type  named  ' condition  _ variable  ' in  namespace  ' STD  '

添加到错误报告文档:#include  condition_variable

error  : use  of  undeclared  identifier  ' free  '

将#include  stdlib.h添加到错误报告文件标头

最后编译时,由于许多库是相互依赖的,因此会出现以下错误:

more  than  one  file  was  found  with  OS  independent  path  ' lib/arm  64-v8a/libyuv  . so  '。if  you  are  using  JNI  libs  and  cmake  ime

需要在Build.gradle中添加以下句子:

PackagingOptions  {

pick  first  ' lib/arm  64-v  8 a/libffmpeg  . so  '

pick  first  ' lib/arm  64-v  8 a/libyuv  . so  '

pick  first  ' lib/arme  ABI-v  7 a/libyuv  . so  '

pick  first  ' lib/arme  ABI-v  7 a/libffmpeg  . so  '

}

我是在这里给提示加的,没有提示的不必加。

PackagingOptions位于Android目录中
回复

使用道具 举报

0

主题

646

帖子

-629

积分

限制会员

积分
-629
发表于 2021-10-2 17:32:50 | 显示全部楼层
难得一见的好帖
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|无图版|手机版|小黑屋|石家庄@IT精英团

GMT+8, 2021-10-17 22:53 , Processed in 0.202800 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2021 Comsenz Inc.

快速回复 返回顶部 返回列表