c++调用ffmpeg实现转码初体验

  |   0 评论   |   0 浏览

背景

第一个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);
}

参考