c++调用ffmpeg实现转码初体验
背景
第一个ffmpeg的开发入门例子,实现从mp3转成wav格式。
基础知识
三方库
- libavcodec:编解码
- libavdevice:
- libavfilter:
- libavformat:video格式相关
- libavutil:
- libmp3lame:
- libswresample:
- libswscale:
间接实现
最简单的方法,是绕过库的内部具体实现,而直接调用ffmpeg命令。。具体如下:
#include <cstring>
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
if (argc < 2){
std::cout<<"usage: input.mp3 output.wav"<<std::endl;
return 0;
}
char* input = argv[1];
char* output = argv[2];
FILE *pipeout;
int length = strlen(input) + strlen(output) + 32;
char cmd[length];
sprintf(cmd, "ffmpeg -y -v error -i %s -ar 16000 %s", input, output);
pipeout = popen(cmd, "w");
pclose(pipeout);
}