ffmpeg avformat_open_input始终返回“未找到协议”rv =( - 1330794744)

时间:2013-02-16 20:10:21

标签: windows visual-studio-2010 visual-c++ ffmpeg

尝试让ffmpeg在Visual Studio 2010中工作。到目前为止,所有ffmpeg头文件和库都已加载,不会出现错误或警告。

avcodec_register_all();
AVFormatContext *pFormatCtx = NULL;
char errbuf[256];
pFormatCtx = avformat_alloc_context();
int rv = avformat_open_input(&pFormatCtx, "myfile.ext", NULL, NULL);
if (rv!=0){                              
    av_strerror(rv, errbuf, sizeof(errbuf));
}

问题是,avformat_open_input总是返回-1330794744(errbuf =“未找到协议”)。试过x86& 32位XP和64位W7上的x64标头和库。无论我为“myfile.ext”(试过“file1.avi”,“file = c:\ file1.avi”,“http://www.someweb.com/file1.avi”,甚至是空的char *“”),响应始终是“协议不是”发现”。有什么想法吗?

3 个答案:

答案 0 :(得分:8)

我遇到了同样的问题。正确的初始化是

av_register_all();

答案 1 :(得分:0)

我希望他能帮助某人。由于我遇到了同样的问题,我的代码可以在Android和Linux上运行,但不能在macOS上运行,并且由于av_register_all现在(FFMpeg version > 4.0已弃用), discomurray 的答案没有为我解决问题。

在我的情况下无法正常工作的原因是,我的系统上已经安装了 libavformat ,该系统位于/usr/local/lib/下,但不幸的是,该配置没有针对我的情况进行正确配置(或与我自己编译的版本不匹配)。

我要做的是,在执行命令之前,我将构建路径添加到DYLD_LIBRARY_PATH(macOS):

export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/Users/xxx/projects/FFmpeg/libavformat

在Linux上,您可以使用LD_LIBRARY_PATH

做同样的事情

答案 2 :(得分:0)

try to change file path 
"/home/user/video.mp4" -> "file:/home/usr/video.mp4"

,除非协议
,否则您应该转义':'char 检查此链接ffmpeg-protocols#file