如何解决如何在没有segfault的情况下使用ffmpeg的`avformat_open_input`打开远程广播流?
我正处于编写小型应用程序以流式传输互联网广播电台的初期阶段。目前,我只是想获取检测到的输入流信息。虽然我可以通过命令行工具({
"_id": {
"$oid": "5f2d9ec5053d4a754d6790e8"
},"name": "Bob","email": "bob@gmail.com","__v": 31,"places": [{
"_id": {
"$oid": "5f3577d511d3f56b7082d320"
},"location": {
"longitude": 48.137565,"latitude": 11.575502
},"saved_at": {
"$date": "2020-08-13T17:26:45.312Z"
}
},{
"_id": {
"$oid": "5f3577ee11d3f56b7082d321"
},"location": {
"longitude": 48.863129,"latitude": 2.294873
},"saved_at": {
"$date": "2020-08-13T17:27:10.594Z"
}
}]
}
成功获取所有流的详细信息,但调用库的ffmpeg -i ${URL}
方法调用会导致SEGFAULT(在valgrind中检入时,堆栈会很精确)
尽管在命令行实用程序和库调用中传递本地文件url都可以正常工作。
这是一个最小的例子:
avformat_open_input(...)
如果对使用C语言中的 ffmpeg 库获取远程流有经验的人有一些见解,我将不胜感激。预先感谢。
我正在Linux上使用 ffmpeg v4.3.1 。
解决方法
对于任何用C语言蘸脚趾的人:
所以,一个有趣的故事……我使用的调用方法的名称为connect()
,似乎与ffmpeg库中的某些内容(可能是网络套接字连接调用)冲突,而该内容未由avformat.h
标头。一旦我更改了方法名称,事情就开始起作用... -_-'
当您使用具有名称空间的语言作为背景时,C语言的陷阱之一。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。