如何在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