gpt4 book ai didi

c - 如何在没有段错误的情况下使用 ffmpeg 的 `avformat_open_input` 打开远程 radio 流?

转载 作者:行者123 更新时间:2023-12-04 23:22:14 25 4
gpt4 key购买 nike

我正处于编写一个小应用程序以流式传输互联网广播电台的开始阶段。目前我只是想获取输入流的检测信息。虽然我通过命令行工具( ffmpeg -i ${URL} )成功获取了所有流的详细信息,但调用库的 avformat_open_input(...)方法调用导致 SEGFAULT(在 valgrind 中检查时精确的堆栈溢出)。
尽管在命令行实用程序和库调用中,传递本地文件 url 都可以正常工作。
这是一个最小的例子:

int test() {
const char * station_url = "http://stream.srg-ssr.ch/m/rsc_de/aacp_96";
const char * test_file = "test.mp3"; //works
AVFormatContext * av_ctx = avformat_alloc_context();
int ret = 0;

avformat_network_init();

if( ( ret = avformat_open_input( &av_ctx, station_url, NULL, NULL ) ) < 0 ) { //SEGFAULT
printf( "Could not open file '%s': %i", station_url, ret );
return -1;
}

printf( "Format %s, duration %ld us", av_ctx->iformat->long_name, av_ctx->duration );

avformat_network_deinit();
return 0;
}
如果任何有使用 C 中的 ffmpeg 库处理获取远程流的经验的人有一些见解,我将不胜感激。提前致谢。
我正在使用 ffmpeg v4.3.1 在 Linux 上。

最佳答案

对于其他涉足 C 语言的人:
所以,有趣的故事......我使用的调用方法的名称是connect()这似乎与 avformat.h 未明确公开的 ffmpeg 库中的某些内容(可能是网络套接字连接调用)发生冲突。标题。一旦我更改了方法名称,事情就开始起作用了...... -_-'
当您具有具有 namespace 的语言背景时,C 语言的缺陷之一。

关于c - 如何在没有段错误的情况下使用 ffmpeg 的 `avformat_open_input` 打开远程 radio 流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63381971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com