如何在ffmpeg 2.6.3中调用avformat_alloc_output_context2?

我正在开发一个使用ffmpeg播放音频/视频的c/C++应用程序。现在我想增强应用程序以允许用户从视频中提取音频并保存它。我跟着这个https://ffmpeg.org/doxygen/trunk/muxing_8c-source.html保存部分,但现在问题是与avformat_alloc_output_context2()。我收到一个错误:“未定义的引用”avformat_alloc_output_context2' “。有谁知道正确的方式ffmpeg的版本叫 'avformat_alloc_output_context2' 2.6.3如何在ffmpeg 2.6.3中调用avformat_alloc_output_context2?

回答:

请记住,包括

extern "C" 

{

#include "libavformat/avformat.h"

}

之后,你可以叫

* @param *ctx is set to the created format context, or to NULL in 

* case of failure

* @param oformat format to use for allocating the context, if NULL

* format_name and filename are used instead

* @param format_name the name of output format to use for allocating the

* context, if NULL filename is used instead

* @param filename the name of the filename to use for allocating the

* context, may be NULL

* @return >= 0 in case of success, a negative AVERROR code in case of

* failure

*/

int avformat_alloc_output_context2(AVFormatContext **ctx, AVOutputFormat *oformat, const char *format_name, const char *filename);

例如:

static const char* output_formats[] = { NULL, "mp3", "ogg", "wav" }; 

AVFormatContext* formatCtx = NULL;

QString outputFileName = "insert here your output file name";

avformat_alloc_output_context2(&formatCtx, NULL, output_formats[1], outputFileName.toStdString().c_str());

if(formatCtx == NULL)

{

//allocation have failed

}

回答:

另外git grep avformat_alloc_output_context2在01之下的源代码示例中。几场比赛:

  • https://github.com/FFmpeg/FFmpeg/blob/n3.0/doc/examples/remuxing.c#L79
  • https://github.com/FFmpeg/FFmpeg/blob/n3.0/doc/examples/muxing.c#L569

然后,您可以清楚地看到它们是如何内置:

make V=1 examples 

在顶层。这个版本可以在Ubuntu 15.10上运行,所以你可以将它与你的版本进行比较,看看有什么不对。

以上是 如何在ffmpeg 2.6.3中调用avformat_alloc_output_context2? 的全部内容, 来源链接: utcz.com/qa/263366.html

回到顶部