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
Some tests need environment variables to be executed (otherwise they will be skipped):
86
+
*```AVTRANSCODER_TEST_VIDEO_AVI_FILE```
87
+
*```AVTRANSCODER_TEST_VIDEO_MP4_FILE```
88
+
*```AVTRANSCODER_TEST_VIDEO_MOV_FILE```
89
+
*```AVTRANSCODER_TEST_AUDIO_WAVE_FILE```
90
+
*```AVTRANSCODER_TEST_AUDIO_MOV_FILE```
91
+
*```AVTRANSCODER_TEST_IMAGE_PNG_FILE```
92
+
*```AVTRANSCODER_TEST_IMAGE_JPG_FILE```
93
+
94
+
Note: for continuous integration, we launch tests with media files contained in [avTranscoder-data](https://github.com/avTranscoder/avTranscoder-data) repository.
Copy file name to clipboardExpand all lines: README.md
+6-23Lines changed: 6 additions & 23 deletions
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# avTranscoder
2
2
3
-
C++ API for FFmpeg / Libav
3
+
High level API for FFmpeg / Libav.
4
4
5
5
Based on FFmpeg/Libav libraries to support various video and audio formats, avTranscoder provides the high level API to re-wrap or transcode media easily.
6
6
@@ -15,11 +15,11 @@ Click on the badge above to have a big picture view of what's in progress and ho
15
15
16
16
:warning: The latest avTranscoder API does not fit with libav.
17
17
18
-
#### What you need to know
19
-
* C++ library
20
-
*Java and Python bindings generated with SWIG
21
-
* multiplateform (Linux, MAC, Windows)
22
-
*your call to be based on Libav, FFmpeg, or your custom fork of one of these librairies
18
+
#### The basics
19
+
*avTranscoder is a C++ library.
20
+
*avTranscoder uses [SWIG](http://www.swig.org/) to generate __Java__ and __Python__ bindings.
21
+
*avTranscoder is multiplateform (Linux, MAC, Windows).
22
+
*avTranscoder could be based on [Libav](https://libav.org/), [FFmpeg](https://ffmpeg.org/), or your custom fork of one of these librairies.
23
23
24
24
#### License
25
25
See [**COPYING.md**](COPYING.md)
@@ -33,23 +33,6 @@ See [**Doxygen documentation**](http://avtranscoder.github.io/avTranscoder-doxyg
33
33
#### Compilation
34
34
See [**INSTALL.md**](INSTALL.md)
35
35
36
-
#### Tests
37
-
38
-
###### nosetests
39
-
Python tests using nosetests.
40
-
```
41
-
cd test/pyTest
42
-
nosetests
43
-
```
44
-
45
-
Some tests need environment variables to be executed (otherwise they will be skipped):
46
-
*```AVTRANSCODER_TEST_VIDEO_FILE```
47
-
*```AVTRANSCODER_TEST_AUDIO_WAVE_FILE```
48
-
*```AVTRANSCODER_TEST_AUDIO_MOV_FILE```
49
-
50
-
Note: for continuous integration, we launch tests with media files contained in ```avTranscoder-data``` repository.
The original code is in C++, but almost all the methods are translated into Java/Python without any changes.
10
+
So you should start having a look at the [C++ code](src/AvTranscoder) (since the generated Java/Python code is ugly).
11
+
12
+
In the sake of brevity, the example code of the following section is written in python.
13
+
14
+
#### At the beginning
15
+
Before starting anything, you need to register all the codecs, formats, filters which are enabled at configuration time.
16
+
So your first avTranscoder instruction should be:
17
+
```python
18
+
avtranscoder.preloadCodecsAndFormats()
16
19
```
17
-
Set environment:
20
+
21
+
#### Analyse media
22
+
To analyse a media, you can create an [__InputFile__](src/AvTranscoder/file/InputFile.hpp) and have access to all header [__properties__](src/AvTranscoder/properties).
Check out [__avmeta__](app/avMeta/avMeta.cpp) application to see a C++ example of this use case.
68
+
69
+
#### Process media
70
+
An important part of the API concerns media processing. The general overview of the workflow could be separated into two main cases:
71
+
*_transcoding_: demuxing, decoding, transform, encoding and muxing. Here we can update all parts of the media, from the container to the codec used to encode data.
72
+
See the [transcoding process](https://ffmpeg.org/ffmpeg.html#toc-Detailed-description) in ffmpeg documentation.
73
+
*_rewrap_: omit the decoding, transform and encoding steps. It is useful for changing the container format or modifying container-level metadata.
74
+
See the [copy](https://ffmpeg.org/ffmpeg.html#Stream-copy) paramer in ffmpeg documentation.
75
+
76
+
The main class to process media is the [__Transcoder__](src/AvTranscoder/transcoder/Transcoder.hpp).
77
+
78
+
Here a rewrapping example to update container (from AVI to MOV):
Check out [__avprocessor__](app/avProcessor/avProcessor.cpp) application to see a C++ example of this use case.
102
+
103
+
An other important parameter is the transcoding policy, which defines how we manage the process in case of several streams. By default the process ends at the end of the longest stream (so the shorter streams are filled with silence or black images).
104
+
To change the transcoding policy:
105
+
```python
106
+
# stop the process when the output stream at index 0 is finished
To wrap/unwrap/encode/decode, avTranscoder manipulates profiles.
31
115
A profile is a set of key-value given as parameters to the InputFile(unwrap), the OutputFile(wrap), the Video/AudioDecoder(decode) or the Video/AudioEncoder(encode).
32
116
There are two ways to manipulate profiles:
33
117
* create profiles inside your code, by instanciate ```Map``` structures.
34
-
* create profiles outside your code, by create text files.
118
+
* create profiles outside your code, by create text files. You have examples [here](avprofiles).
119
+
35
120
To indicate the path to the text files, export environment variable:
To go into more details about the avTranscoder API, take a look at the [__Doxygen documentation__](http://avtranscoder.github.io/avTranscoder-doxygen/).
TuttleOFX is a library to connect and batch operations with OpenFx plugins. It comes with a set of plugins that allows you to batch process on movies and file sequences.
185
+
TuttOFX uses avTranscoder for the [AudioVideo plugin](https://github.com/tuttleofx/TuttleOFX/tree/develop/plugins/image/io/AudioVideo), one of its io plugins.
186
+
187
+
#### PADdef / Slingshot
188
+
PADdef is a platform developed by [Mikros Image](http://www.mikrosimage.eu/) for France Télévisions's new digital distribution centers. Its purpose is to handle the delivery of ready-to-broadcast feature material.
189
+
Slingshot is its mirror project for Belgium broadcasters: Medialaan, RTBF and RTL.
190
+
PADdef / Slingshot uses avTranscoder in one of its application to transcode media in post-production labs.
191
+
192
+
#### Ploud
193
+
A set of applications developed by [Mikros Image](http://www.mikrosimage.eu/) to analyse, visualize and correct the loudness.
194
+
Ploud uses avTranscoder in [one of its application](https://github.com/mikrosimage/loudness_validator/tree/develop/app/mediaAnalyser) to give decoded data to the loudness analyser.
0 commit comments