1.在terminal,安装ffmpeg开源库

#brew install ffmpeg

2.新建一个目录first_ffmpeg,并在first_ffmpeg目录下新建ffmpeg目录

3.拷贝/usr/local/Cellar/ffmpeg/4.1.1/下的lib和include文件夹到上一步中的ffmpeg目录

4.在first_ffmpeg,创建如下内容的CMakeLists.txt


cmake_minimum_required(VERSION 2.8) project(first_ffmpeg) include_directories("/The/path/to/first_ffmpeg/ffmpeg/include")
link_directories("/The/path/to/first_ffmpeg/ffmpeg/lib")
link_libraries(libavcodec.a)
link_libraries(libavdevice.a)
link_libraries(libavfilter.a)
link_libraries(libavformat.a)
link_libraries(libavutil.a)
link_libraries(libpostproc.a)
link_libraries(libswresample.a)
link_libraries(libswscale.a) add_executable(${PROJECT_NAME} "main.cpp")

5.书写main函数如下

#include <iostream>

using namespace std;

extern "C"
{
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"
#include "libavdevice/avdevice.h"
} int main()
{
cout << "Hello FFmpeg!" << endl;
av_register_all();
unsigned int version = avcodec_version();
cout << "FFmpeg version is:" << version << endl;
cout << "Hello World!" << endl;
return 0;
}

6.编译运行

#mkdir build
#cd build
#cmake ..
#make
#./first_ffmpeg

输出:

Hello FFmpeg!
FFmpeg version is:3810148
Hello World!

7.工程first_ffmpeg目录结构如下

#first_ffmpeg tree -L 2

.

├── CMakeLists.txt

├── build

│   ├── CMakeCache.txt

│   ├── CMakeFiles

│   ├── Makefile

│   ├── cmake_install.cmake

│   └── first_ffmpeg

├── ffmpeg

│   ├── include

│   └── lib

└── main.cpp

ffmpeg 入门教程的更多相关文章

  1. FFmpeg 入门(7):Seeking

    本文转自:FFmpeg 入门(7):Seeking | www.samirchen.com 处理 seek 命令 我们将为播放器添加 seek 的能力.这个过程中,我们会看到 av_seek_fram ...

  2. FFmpeg 入门(6):音频同步

    本文转自:FFmpeg 入门(6):音频同步 | www.samirchen.com 音频同步 上一节我们做了将视频同步到音频时钟,这一节我们反过来,将音频同步到视频.首先,我们要实现一个视频时钟来跟 ...

  3. FFmpeg 入门(5):视频同步

    本文转自:FFmpeg 入门(5):视频同步 | www.samirchen.com 视频如何同步 在之前的教程中,我们已经可以开始播放视频了,也已经可以开始播放音频了,但是视频和音频的播放还未同步, ...

  4. FFmpeg 入门(4):线程分治

    本文转自:FFmpeg 入门(4):线程分治 | www.samirchen.com 概览 上一节教程中,我们使用 SDL 的音频相关的函数来支持音频播放.SDL 起了一个线程来在需要音频数据的时候去 ...

  5. FFmpeg 入门(2):输出视频到屏幕

    本文转自:FFmpeg 入门(2):输出视频到屏幕 | www.samirchen.com SDL 我们这里使用 SDL 来渲染视频到屏幕.SDL 是 Simple Direct Layer 的缩写, ...

  6. FFmpeg 入门(3):播放音频

    本文转自:FFmpeg 入门(3):播放音频 | www.samirchen.com 音频 SDL 提供了播放音频的方法.SDL_OpenAudio 函数用来让设备播放音频,它需要我们传入一个包含了所 ...

  7. FFmpeg 入门(1):截取视频帧

    本文转自:FFmpeg 入门(1):截取视频帧 | www.samirchen.com 背景 在 Mac OS 上如果要运行教程中的相关代码需要先安装 FFmpeg,建议使用 brew 来安装: // ...

  8. Fakeapp 入门教程(1):安装篇!

    在众多AI换脸软件中Fakeapp是流传最广,操作最简单的一款,当然他同样也是源于Deepfakes. 这款软件在设计上确实是花了一些心事,只要稍加点拨,哪怕是再小白的人也能学会.下面我就做一个入门教 ...

  9. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

随机推荐

  1. Flutter main future mirotask 的执行顺序

    下面这段代码的输出是什么? import 'dart:async'; main() { print('main #1 of 2'); scheduleMicrotask(() => print( ...

  2. [Dart] Flutter 上传文件

    /** * 请求响应数据 */ class MsgResponse { int code; // 状态代码,0 表示没有错误 Object data; // 数据内容,一般为字符串 String er ...

  3. 温故而知新复习下PHP面向对象

    面向对象在PHP中是以类的形势展示的 PHP中的类是单继承的,用关键字extends来实现继承父类, 关键字public protected private 第一个是公开的 谁都可以访问,第二个只能本 ...

  4. MySQL Windows 安装与配置

    <01> 下载解压 MySQL 至 D盘, 将文件夹改名为 MySQL <02> 控制台状态下进入 MySQL/bin 目录 输入 mysqld -install  回车 安装 ...

  5. C# ADO.NET 封装的增删改查

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. VisualSVN:允许修改svn提交日志(pre-revpro-change hook)

    有时候需要对之前版本提交的错误的日志信息进行修改或者进行补充描述: 1.在windows 7( 64位 )下使用TortoiseSVN客户端,选中代码目录,点击右键,选择<显示日志> 在出 ...

  7. myeclipse 保存失败

    Save FailedCompilation unit name must end with .java, or one of the registered Java-like extensions ...

  8. VB6 padleft padright

    Public Function PadLeft(ByVal s As String, ByVal i As Integer, ByVal c As String)    If i > LenB( ...

  9. as3 区别中文 英文 数字

    1)英文a-z是65-90,A-Z是97-112 2)数字是0-9是,48-57 3)上万的都是中文字符 var str:String = "hello world! 你好世界! 88!&q ...

  10. table边框和td的width失效

    table元素有一个属性border,可设置table的边框.这个边框对内部元素有效. 不同于style:border,这个仅仅是外边框. table{ width:60%; border-colla ...