Update README.md

pull/686/head
Sahib 2 years ago committed by GitHub
parent 0dbca05746
commit a7b9906c03
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 151
      README.md

@ -22,4 +22,155 @@ It includes scripts to build `FFmpeg` native libraries, a wrapper library to run
## 2. Android (+Python)
### 1. Features
- Supports `API Level 24+` on Main releases and `API Level 16+` on LTS releases
- Includes `arm-v7a`, `arm-v7a-neon`, `arm64-v8a`, `x86` and `x86_64` architectures
- Can handle Storage Access Framework (SAF) Uris
- Camera access on [supported devices](https://developer.android.com/ndk/guides/stable_apis#camera)
- Builds shared native libraries (.so)
- Creates Android archive with .aar extension
### 2. BUILDING (Is after `Using with Python`)
### USE PREBUILT PACKAGE FROM RELEASES SECTION
### 3. Using With Python
##### 0) Add SmartExpetion Common and SmartExeption java from (https://github.com/tanersener/smart-exception/releases/tag/v0.2.1)
##### 1) and the aar from Releases tab or the one generated by you to your projects folder.
##### 2) In Buildozer spec file add jnius to requirements and the aar file. (Alongside what you already have)
```
requirements = jnius
android.add_aars = ffmpeg-kit-release.aar
android.add_jars = smart-exception-common-0.2.1.jar, smart-exception-java-0.2.1.jar
```
##### 3) Using Pyjnius, declare the variables in Python (https://pyjnius.readthedocs.io/en/stable/)
```
#IMPORTING jnius
from jnius import autoclass
from jnius import *
#Declaring Variable so it can be used
FFMPEG = autoclass('com.sahib.pyff.ffpy')
```
BOTH (FFMPEG and FFPROBE) RETURN OUTPUT OF THE COMMAND
##### 4) To Use FFMPEG
```
#EXECUTED FFMPEG COMMAND, COMMAND IS STRING
ffmpegCommand = FFMPEG.Run("COMMAND")
#PRINTS RETURN (OUTPUT OF THE COMMAND)
print(ffmpegCommand)
```
##### 5) To use FFProbe
```
#EXECUTED FFProbe COMMAND, COMMAND IS STRING
probeCommand = FFMPEG.RunProbe("Command")
#PRINTS RETURN (OUTPUT OF THE COMMAND)
print(probeCommand)
```
NOTE - FILTER_COMPLEX can not be used. (IDK why, if you have solution tell me please)
#### EXAMPLES
##### 1) FFMPEG
```
from jnius import autoclass
from jnius import *
#Declaring Variable so it can be used
FFMPEG = autoclass('com.sahib.pyff.ffpy')
#THIS COVERTS VIDEO INTO an audio file (MP4 TO WAV)
d = FFMPEG.Run(str("-i video.mp4 -ab 160k -ac 2 -ar 44100 -vn TEMP/audio.wav"))
#THIS PRINTS THE OUTPUT (I don't think you even need output in ffmpeg unless for trouble shooting)
print(d)
```
##### 2) FFProbe
```
from jnius import autoclass
from jnius import *
#Declaring Variable so it can be used
FFMPEG = autoclass('com.sahib.pyff.ffpy')
#Gets Framerate of video
frameRate = FFMPEG.RunProbe("-v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=r_frame_rate video.mp4")
#This command outputs 30/1 at 30 frames
frameRate = frameRate.split("/")[0]
#this makes it 30 instead of 30/1
frameRate = int(frameRate)
print(frameRate)
#Converts framerate to integer and prints it
```
### 2. Building (Skip this part and use prebuilt from RELEASES section)
Run `android.sh` at project root directory to build `ffmpeg-kit` and `ffmpeg` shared libraries.
Please note that `FFmpegKit` project repository includes the source code of `FFmpegKit` only. `android.sh` needs
network connectivity and internet access to `github.com` in order to download the source code of `FFmpeg` and
external libraries enabled.
#### 2.1 Prerequisites
`android.sh` requires the following tools and packages.
##### 2.1.1 Android Tools
- Android SDK Build Tools
- Android NDK r22b or later with LLDB and CMake (See [#292](https://github.com/arthenica/ffmpeg-kit/issues/292) if you want to use NDK r23b)
##### 2.1.2 Packages
Use your package manager (apt, yum, dnf, brew, etc.) to install the following packages.
```
autoconf automake libtool pkg-config curl cmake gcc gperf texinfo yasm nasm bison autogen git wget autopoint meson ninja
```
##### 2.1.3 Environment Variables
Set `ANDROID_SDK_ROOT` and `ANDROID_NDK_ROOT` environment variables before running `android.sh`.
```
export ANDROID_SDK_ROOT=<Android SDK Path>
export ANDROID_NDK_ROOT=<Android NDK Path>
```
#### 2.2 Options
Use `--enable-<library name>` flag to support additional external or system libraries and
`--disable-<architecture name>` to disable architectures you don't want to build.
```
./android.sh --enable-fontconfig --disable-arm-v7a-neon
```
Run `--help` to see all available build options.
#### 2.3 LTS Binaries
Use `--lts` option to build lts binaries for each architecture.
#### 2.4 Build Output
All libraries created by `android.sh` can be found under the `prebuilt` directory.
- `Android` archive (.aar file) for `Main` builds is located under the `bundle-android-aar` folder.
- LTS is not supported sorry. (For Python)

Loading…
Cancel
Save