ffmpeg - 为什么在尝试使用 libavcodec.57 和 libopus-1.2~alpha2-1 解码音频时出现 SIGSEGV?
问题描述
我正在使用 FFMPEG libavcodec 的函数avcodec_decode_audio4()解码音频。在 Windows 和 Ubuntu 18.04 上一切正常,但是当我尝试在 Debian 9 上运行相同的应用程序时收到分段错误。我用 gdb 调试了我的代码,它显示了这个结果:
Thread 24 "SDLAudioDev2" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff7fea700 (LWP 1657)]
0x00007fffecdd6eff in ?? () from /usr/lib/x86_64-linux-gnu/libopus.so.0
(gdb) bt
#0 0x00007fffecdd6eff in ?? ()
from /usr/lib/x86_64-linux-gnu/libopus.so.0
#1 0x00007fffecde0b18 in ?? ()
from /usr/lib/x86_64-linux-gnu/libopus.so.0
#2 0x00007fffece04ac1 in ?? ()
from /usr/lib/x86_64-linux-gnu/libopus.so.0
#3 0x00007fffece05b5b in ?? ()
from /usr/lib/x86_64-linux-gnu/libopus.so.0
#4 0x00007fffece0e87e in ?? ()
from /usr/lib/x86_64-linux-gnu/libopus.so.0
#5 0x00007fffece0eba7 in opus_multistream_decode ()
from /usr/lib/x86_64-linux-gnu/libopus.so.0
#6 0x00007ffff4f8a235 in ?? ()
from /usr/lib/x86_64-linux-gnu/libavcodec.so.57
#7 0x00007ffff51893fd in avcodec_decode_audio4 ()
from /usr/lib/x86_64-linux-gnu/libavcodec.so.57
#8 0x00007ffff5189e78 in ?? ()
from /usr/lib/x86_64-linux-gnu/libavcodec.so.57
#9 0x00007ffff518f098 in avcodec_send_packet ()
似乎数据竞争出现在某个地方。我试图删除avcodec_decode_audio4()并使用avcodec_send_packet()和avcodec_receive_frame()函数,但是在 FFMPEG ver.3.2.10 函数的 libavcodec.57 中,函数avcodec_send_packet()调用avcodec_decode_audio4()并且问题再次出现。
有人可以帮我解决我需要更改的内容以使其全部与 Debian 9 软件包的版本兼容吗?
在 Windows 我有 libavcodec.58,在 Ubuntu 18.04 libavcodec.57 ver.3.4.8
在 Debian 9 上,我有 libavcodec.57 ver.3.2.15
解决方案
推荐阅读
- python - python中的正则表达式在标签之间分割每个文本
- docker - Docker 构建无法加载元数据
- python - 我是 python 新手,我正在尝试制作一个 bmi 计算器
- javascript - 使用 VsCode 更漂亮
- r - 将 txt 文件读入列表,其中每个列表元素由以冒号结尾的行分隔
- python - Python 数字识别(在彩色屏幕上)
- google-analytics - 在 Google Analytics 中找出特定事件类别的会话数量?
- python - 使用 discord.py 创建一个单独的机器人
- sql - postgresql:关系不存在
- selenium-webdriver - JMeter jp@gc-WebDriver 采样器元素名称是动态的