8

试图让 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="Protocol not found")。在 32 位 XP 和 64 位 W7 上尝试了 x86 和 x64 标头和库。无论我为“myfile.ext”添加什么(尝试过“file1.avi”、“file=c:\file1.avi”、“ http://www.someweb.com/file1.avi ”,甚至是空的 char* ) ") 响应总是“找不到协议”。有任何想法吗?

4

3 回答 3

8

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

av_register_all();
于 2013-09-04T19:34:42.757 回答
1

我希望他能帮助别人。由于我的代码在 Android 和 Linux 上运行但在 macOS 上运行时遇到了同样的问题,并且av_register_all现在已弃用(对于FFMpeg 版本 > 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

于 2019-02-05T17:18:23.777 回答
0
try to change file path 
"/home/user/video.mp4" -> "file:/home/usr/video.mp4"


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

于 2019-06-07T10:50:12.233 回答