在PPAPI中使用FFMPEG库:使用FFMPEG的Naclports



我已经配置了Webports,ffmpeg;我已经为当前项目创建了以下Makefile。然而,我遇到了一些关于ffmpeg库链接的问题。

$ TOOLCHAIN=pnacl make
  LINK pnacl/Release/client_unstripped.bc
pnacl/Release/src/client.o: error: undefined reference to 'av_register_all'
make: *** [pnacl/Release/client_unstripped.bc] Error 1

你能告诉我我在这里做错了什么吗?我的Makefile如下所示:

VALID_TOOLCHAINS:=pnacl glibc clang newlib赢得

NACL_SDK_ROOT?=$(abspath$(CURDIR)/../..)

TARGET=客户端

OTHERDIR=src

INC_DIR=包括

FFMPEG_INC_DIR=..//工具链/mac_pnacl/le32-nacl/usr/include

INCLUDES=-I$(INC_DIR)-I$(FFMPEG_INC_DIR

包括$(NACL_SDK_ROOT)/tools/common.mk

CHROME_ARGS+=--允许nacl套接字api=localhost

LIBS=nacl_io ppapi_cpp ppapi

CFLAGS=-墙-g-O2$(包括)-L.//工具链/mac_pnacl/le32-nacl/usr/lib-lavformat\-lvpx-lvorbisenc-lvorbis-logg-ltheoraenc-ltheoradec-logg-lmp3lame-lm-pthread-lavcodec-lvpx\-ltheoraenc-ltheoradec-logg-lmp3lame-lm-pthread-lswreseample-lm-lavotil-lm-lavdevice-lavfilter

SOURCES=$(OTHERDIR)/tcp_util.cc$(OTTHERDIR)/tpool.cc$(OTHERDIR)/net.cc$(OTHERDIR)/rtsp_response.cc\$(OTHERDIR)/rtsp.cc$(OTHERDIR)/rtsp_common.cc\$(OTHERDIR)/retsp_client.cc$(OTHERDIR)/udp_util.cc\$(OTHERDIR)/client.cc

#从common.mk生成由宏生成的规则:

$(foreach src,$(SOURCES),$(eval$(callCOMPILE_RULE,$(src),$(CFLAGS))

#PNaCl工作流程使用未剥离和最终确定/剥离的二进制文件。#在NaCl上,只为Release配置生成剥离的二进制文件(而不是Debug)。ifneq(,$(或$(findstring-pnacl,$(TOOLCHAIN)),$(findstringRelease,$(CONFIG)))$(eval$(调用LINK_RULE,$(TARGET)_unstrip,$(SOURCES),$(LIBS),美元(DEPS))$(eval$(调用STRIP_RULE、$(TARGET)、$(TARGET)_unststrip))其他$(eval$(调用LINK_RULE,$(TARGET),$(SOURCES),$

$(eval$(调用NMF_RULE,$(TARGET),))

下面是库在类上下文中的使用方式。

class VideoDecodePack {
public:
    VideoDecodePack() {
        av_register_all();
    }
};
class ClientInstance : public pp::Instance {
 public:
  explicit ClientInstance(PP_Instance instance) : pp::Instance(instance){
    cses = InitRtspClientSession();
    _videoDecoder = new VideoDecodePack();
  }
...

我通过添加与FFMPEG:vpx、vorbis、lame的附加库的链接解决了这个问题。保持链接库的秩序是非常重要的。

.....
...
TARGET = client
INC_DIR := inc
include $(NACL_SDK_ROOT)/tools/common.mk
DEPS = ppapi_simple nacl_io
LIBS = ppapi_simple nacl_io ppapi pthread 
avformat vpx vorbisenc vorbis ogg theoraenc 
theoradec mp3lame m avcodec swresample avutil 
avdevice avfilter
OTHERDIR = src
CFLAGS = -Wall
# -I$(INC_DIR)
SOURCES = $(OTHERDIR)/client.cc
# Build rules generated by macros from common.mk:
$(foreach dep,$(DEPS),$(eval $(call DEPEND_RULE,$(dep))))
$(foreach src,$(SOURCES),$(eval $(call COMPILE_RULE,$(src),$(CFLAGS))))
....
...   

相关内容

  • 没有找到相关文章

最新更新