【问题标题】:Asterisk module app_transcoder failed for libavcodec.so (undefined symbol avacodec_init)libavcodec.so 的星号模块 app_transcoder 失败(未定义符号 avacodec_init)
【发布时间】:2014-04-09 10:40:27
【问题描述】:

我正在尝试将 3G 视频网关与 Asterisk(1.4.0) 集成。

当我加载模块“app_transcoder.so”(执行实际的视频转码)时,然后

asterisk 挂起,我得到了“asterisk -vvvvvc”

星号:符号查找错误:/usr/lib/asterisk/modules/app_transcoder.so:未定义符号:avcodec_init

通过“ldd /usr/lib/asterisk/modules/app_transcoder.so”显示 app_transcoder.so 的依赖关系:

    linux-vdso.so.1 =>  (0x00007fff851ff000)
    libavcodec.so.54 => /usr/local/lib/libavcodec.so.54 (0x00007f8604ec3000) 
    libswscale.so.2 => /usr/local/lib/libswscale.so.2 (0x00007f8604c6e000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f86048d9000)
    libavutil.so.52 => /usr/local/lib/libavutil.so.52 (0x00007f86046a7000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f860448a000)
    libx264.so.142 => /usr/local/lib/libx264.so.142 (0x00007f86040d1000)
    libgsm.so.1 => /usr/lib/libgsm.so.1 (0x00007f8603ec6000)
    libm.so.6 => /lib64/libm.so.6 (0x00007f8603c42000)
    libz.so.1 => /lib64/libz.so.1 (0x00007f8603a2b000)
    /lib64/ld-linux-x86-64.so.2 (0x0000003b14200000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f8603827000)

“avcodec_init”来自 libavcodec.so 文件,但它没有来自命令的符号:

nm -a /usr/local/lib/libavcodec.so.54

给予:

nm: /usr/local/lib/libavcodec.so.54: 无符号

我按照Medooze的指示进行操作

CentOS-6.4

ffmpeg-1.2.6

星号-1.4.0

x264- 0.142x

ptlib-2.6.7

mpeg4ip-1.6.1

感谢任何建议。

【问题讨论】:

    标签: c++ ffmpeg asterisk transcoding


    【解决方案1】:

    /usr/local/lib 添加到您的库路径/etc/ld.so.conf

    之后,执行“ldconfig”

    重新编译星号。

    找到这个 ffmpeg 邮件列表:avcodec_init() 现在不使用了。而是使用avcodec_register_all()。看来你可能需要降级 ffmpeg。

    【讨论】:

    • 谢谢。它是较早添加并重新编译的。问题出在我提到的.so文件上。因为“avcodec_init”函数没有符号(因为符号表应包含所有函数定义)“ldconfig -v | grep libavcodec”显示:ldconfig:/etc/ld。 so.conf.d/kernel-2.6.32-431.5.1.el6.x86_64.conf:6: 复制 hwcap 1 nosegneg libavcodec.so.54 -> libavcodec.so.54.92.100 ldconfig: /usr/lib/libss7 .so.1 不是符号链接
    • 刚刚在 ffmpeg 邮件列表中找到 avcodec_init() 现在不使用了。而是使用 avcodec_register_all()。看来您可能需要降级 ffmpeg。
    • "avcodec_init() 现在已经被使用了。"不是在早期。非常感谢@moonstruck。它适用于 ffmpeg 0.10 版。请将您的评论附加到我可以给您的答案中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    • 2017-05-20
    • 2019-11-06
    • 2023-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多