版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/glw0223/article/details/89328359
macOS下基于FFMPEG的播放器(一)
1、编译ffmpeg
- 下载ffmpeg,参考FFMEPG 只git clone 最后一次提交
- 编译ffmpeg
配置
./configure --disable-optimizations --prefix=/Users/gaoliwen/work/ffmpeg_temp --enable-static --disable-shared
编译
make -j
make install
这是安装后的文件
2、建立xcode工程
- 建立一个命令行工程,这是main.cpp
//
// main.cpp
// saishizhichuang
//
// Created by gaoliwen on 2019/4/15.
// Copyright © 2019 gaoliwen. All rights reserved.
//
#include <iostream>
extern "C"
{
#include<libavformat/avformat.h>
}
int main(int argc, const char * argv[]) {
// insert code here...
std::cout << "Hello, World!\n";
char filepath[]="/Users/gaoliwen/work/testfile/gaoliwen.flv";
AVFormatContext *pFromatCtx = nullptr;
pFromatCtx = avformat_alloc_context();
int ret = avformat_open_input(&pFromatCtx, filepath, nullptr, nullptr);
std::cout<<"result is "<< ret<<std::endl;
avformat_close_input(&pFromatCtx);
avformat_free_context(pFromatCtx);
pFromatCtx = nullptr;
return 0;
}
-
添加头文件和库的查找地址
这里的路径就是上面ffmpeg的安装路径。 -
添加依赖库
注:开始时,不知道依赖哪些库,只能编译,提示缺少啥,就在这里添加有行。
- 编译、运行
cmd+b:编译
cmd+r:运行
运行结果:
3、makefile测试
- main函数代码
#include <stdio.h>
extern "C"
{
#include "libavcodec/avcodec.h"//用c++调用,所以这里使用extern "C"
}
int main()
{
printf("hello world\r\n");
printf("%s\n", avcodec_configuration());
return 0;
}
- 在xcode工程里开发依赖的framework
拷贝出来就是
-liconv -llzma -lbz2 -lz -lavcodec -lavdevice -lavfilter -lavformat -lavutil -lswresample -lswscale -framework MediaToolbox -framework CoreMedia -framework Foundation -framework AVFoundation -framework CoreFoundation -framework SecurityFoundation -framework CoreImage -framework CoreVideo -framework CoreAudio -framework VideoToolbox -framework AudioToolbox
- 编译
clang 和 g++都行
g++ -I /Users/gaoliwen/work/ffmpeg_temp/include -o main main.cpp /Users/gaoliwen/work/ffmpeg_temp/lib/libavcodec.a /Users/gaoliwen/work/ffmpeg_temp/lib/libavutil.a -liconv -llzma -lbz2 -lz -lavcodec -lavdevice -lavfilter -lavformat -lavutil -lswresample -lswscale -framework MediaToolbox -framework CoreMedia -framework Foundation -framework AVFoundation -framework CoreFoundation -framework SecurityFoundation -framework CoreImage -framework CoreVideo -framework CoreAudio -framework VideoToolbox -framework AudioToolbox
- 结果