You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -4,29 +4,38 @@ Wrapper for the FFmpeg that simplify usage it from C++ projects.
4
4
5
5
Currently covered next functionality:
6
6
7
-
- Core helper & utility classes (AVFrame -> av::AudioSample & av::VideoFrame, AVRational -> av::Rational and so on)
7
+
- Core helper & utility classes (`AVFrame` → `av::AudioSample` & `av::VideoFrame`, `AVRational` → `av::Rational` and so on)
8
8
- Container formats & contexts muxing and demuxing
9
9
- Codecs & codecs contexts: encoding and decoding
10
-
- Streams (AVStream -> av::Stream)
10
+
- Streams (`AVStream` → `av::Stream`)
11
11
- Filters (audio & video): parsing from string, manual adding filters to the graph & other
12
12
- SW Video & Audio resamplers
13
13
14
14
You can read the full documentation [here](https://h4tr3d.github.io/avcpp/).
15
15
16
16
## Requirements
17
17
18
-
- FFmpeg >= 2.0
19
-
- libavformat >= 54.x.x
20
-
- libavcodec >= 54.x.x
21
-
- libavfilter >= 3.x.x
22
-
- libavutil >= 51.x.x
23
-
- libswscale >= 2.x.x
24
-
- libswresample >= 0.x.x
25
-
- libpostproc >= 52.x.x
26
-
- GCC >= 5.0 (C++11 is required)
27
-
- CMake (> 3.19) or Meson(> 50.0)
18
+
- FFmpeg >= 4.0
19
+
- libavformat >= 58.x.x
20
+
- libavcodec >= 58.x.x
21
+
- libavdevice >= 58.x.x
22
+
- libavfilter >= 7.x.x
23
+
- libavutil >= 56.x.x
24
+
- libswscale >= 5.x.x
25
+
- libswresample >= 3.x.x
26
+
- libpostproc >= 55.x.x
27
+
- GCC >= 9.0 (C++17 is required. [See](https://gcc.gnu.org/projects/cxx-status.html#cxx17), GCC from 6.0 may built code, but unchecked)
28
+
- CMake (> 3.19)
28
29
29
-
### Debian, Ubuntu 19.10 and Linux Mint 20.x or newer
30
+
>
31
+
> [!NOTE]
32
+
> Oldest versions of the FFmpeg (at least >=2.0) may be successfully built and work but is it not checked for now. Same notes valid for the GCC version from 6.0.
33
+
34
+
### Debian, Ubuntu 19.10+ and Linux Mint 20.x or newer
35
+
36
+
> [!NOTE]
37
+
>
38
+
> Build verification done only for oldest Ubuntu version provided by the GitHub Flow. You can look it [here](https://github.com/h4tr3d/avcpp/blob/master/.github/workflows/cmake-ci.yml#L25). For now, it is 22.04.
30
39
31
40
You should install FFmpeg packages from the deb-multimedia.org site:
Note 2: Debian Wheezy repo contains only FFmpeg 1.0.8. I tested building only with 2.x. So it is strongly recoment use Wheezy back-ports repo.
57
+
> [!NOTE]
58
+
>
59
+
> **Note 2**: Debian Wheezy repo contains only FFmpeg 1.0.8. I tested building only with ~2.x~ 4.0. So it is strongly recommended use Wheezy back-ports repo.
47
60
48
61
### Ubuntu 18.04 and Linux Mint 19.x
49
62
@@ -58,10 +71,7 @@ After that just install the same packages as above.
58
71
59
72
------
60
73
61
-
## Build
62
-
63
-
There are two ways to compile either with CMake or with meson.
64
-
By default meson is faster, but if your project uses CMake, those instructions might be better for integration.
74
+
## Build & Usage
65
75
66
76
### Building with CMake
67
77
@@ -103,7 +113,119 @@ sudo make DESTDIR=<some_prefix> install
103
113
104
114
Refer to CMake documentation for more details that can cover some special cases.
105
115
106
-
### Building with meson
116
+
#### Useful configure directives
117
+
118
+
-`AV_ENABLE_STATIC` - Bool, enable static library build, On by default.
119
+
-`AV_ENABLE_SHARED` - Bool, enable shared library build, On by default.
120
+
-`AV_BUILD_EXAMPLES` - Bool, enable examples build, On by default.
121
+
- C++ related
122
+
-`CMAKE_CXX_STANDARD` - Can be defined globally to override default C++ version. C++17 required at least.
123
+
- FFmpeg related:
124
+
-`FFMPEG_PKG_CONFIG_SUFFIX` - String, TBD
125
+
-`PC_<component>_LIBRARY_DIRS` - Path, hint where FFmpeg component library looking
126
+
-`PC_FFMPEG_LIBRARY_DIRS` - Path, hint where a whole FFmpeg libraries looking
127
+
-`PC_<component>_INCLUDE_DIRS` - Path, hint where a FFmpeg component includes looking
128
+
-`PC_FFMPEG_INCLUDE_DIRS` - Path, hint where a whole FFmpeg includes looking
129
+
-`<component>` are:
130
+
-`AVCODEC`
131
+
-`AVDEVICE`
132
+
-`AVFORMAT`
133
+
-`AVFILTER`
134
+
-`AVUTIL`
135
+
-`POSTPROC`
136
+
-`SWSCALE`
137
+
-`SWRESAMPLE`
138
+
139
+
### Integrate to the CMake project as Git Submodule
140
+
141
+
AvCpp can be simple integrated into CMake-based project as Git submodule.
0 commit comments