Compare commits
18 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f226cd62ed | |||
| 0d02689774 | |||
| d1f8172641 | |||
| 83cac57ef0 | |||
| ecc897dde2 | |||
| ab74b25864 | |||
| 919d9c5a48 | |||
| c5a1e8e9a9 | |||
| 2ae8e9ddda | |||
| 4fc6c19729 | |||
| 48014b7321 | |||
| f0634b1638 | |||
| a600c46d90 | |||
| 6539d50cba | |||
| 2492c5d9a6 | |||
| ea7f062396 | |||
| 90f0c71a0e | |||
| 77c7d67fc8 |
@@ -1,77 +1,73 @@
|
||||
# MobileFFmpeg
|
||||
Source code and scripts to build FFmpeg for Android and IOS platform; prebuilt libraries for both platforms
|
||||
# MobileFFmpeg [](https://gitter.im/mobile-ffmpeg/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [  ](https://bintray.com/tanersener/maven/mobile-ffmpeg-full/1.2/link)
|
||||
|
||||
FFmpeg for Android and IOS
|
||||
|
||||
### 1. Features
|
||||
- Builds both Android and IOS
|
||||
- Supports 21 external libraries, 2 GPL libraries and 10 architectures in total
|
||||
- Use prebuilt binaries available under `JCenter`/`CocoaPods` or build your own version with external libraries you need
|
||||
- Supports
|
||||
- Both Android and IOS
|
||||
- FFmpeg `v3.4.x` and `v4.0.x` releases
|
||||
- 23 external libraries.
|
||||
|
||||
`fontconfig`, `freetype`, `fribidi`, `gmp`, `gnutls`, `kvazaar`, `lame`, `libaom`, `libass`, `libiconv`, `libilbc`, `libtheora`, `libvorbis`, `libvpx`, `libwebp`, `libxml2`, `opencore-amr`, `opus`, `shine`, `snappy`, `soxr`, `speex`, `wavpack`
|
||||
|
||||
- 2 external libraries with GPL license
|
||||
|
||||
`x264`, `xvidcore`
|
||||
|
||||
- Exposes FFmpeg capabilities both directly from FFmpeg libraries and through MobileFFmpeg wrapper library
|
||||
- Creates shared libraries (.so for Android, .dylib for IOS)
|
||||
- Includes cross-compile instructions for 32 open-source libraries including FFmpeg
|
||||
- Includes cross-compile instructions for 35 open-source libraries
|
||||
|
||||
`expat`, `ffmpeg`, `fontconfig`, `freetype`, `fribidi`, `giflib`, `gmp`, `gnutls`, `kvazaar`, `lame`, `libaom`, `libass`, `libiconv`, `libilbc`, `libjpeg`, `libjpeg-turbo`, `libogg`, `libpng`, `libtheora`, `libuuid`, `libvorbis`, `libvpx`, `libwebp`, `libxml2`, `nettle`, `opencore-amr`, `opus`, `shine`, `snappy`, `soxr`, `speex`, `tiff`, `wavpack`, `x264`, `xvidcore`
|
||||
|
||||
- Licensed under LGPL 3.0, can be customized to support GPL v3.0
|
||||
#### 1.1 Android
|
||||
- Supports `arm-v7a`, `arm-v7a-neon`, `arm64-v8a`, `x86` and `x86_64` architectures
|
||||
- Creates Android archive with .aar extension
|
||||
#### 1.2 IOS
|
||||
- Supports `armv7`, `armv7s`, `arm64`, `i386` and `x86_64` architectures
|
||||
- Built with `-fembed-bitcode` flag
|
||||
- Creates IOS dynamic universal (fat) library
|
||||
- Creates IOS dynamic framework for IOS 8 or later
|
||||
|
||||
### 2. Architectures
|
||||
### 2. Using
|
||||
Prebuilt libraries are available under [Github](https://github.com/tanersener/mobile-ffmpeg/releases), [JCenter](https://bintray.com/bintray/jcenter) and [CocoaPods](https://cocoapods.org)
|
||||
|
||||
There are six different prebuilt packages. Below you can see which external libraries are enabled in each of them.
|
||||
|
||||
| | min | min-gpl | https | https-gpl | full | full-gpl |
|
||||
| :----: | :----: | :----: | :----: | :----: | :----: | :----: |
|
||||
| external <br/> libraries <br/> enabled | - | x264* <br/> xvidcore* | gnutls | gnutls <br/> x264* <br/> xvidcore* | fontconfig <br/> freetype <br/> fribidi <br/> gmp <br/> gnutls <br/> kvazaar <br/> lame <br/> libaom** <br/> libass <br/> libiconv <br/> libilbc* <br/> libtheora <br/> libvorbis <br/> libvpx <br/> libwebp <br/> libxml2 <br/> opencore-amr <br/> opus* <br/> shine <br/> snappy* <br/> soxr** <br/> speex <br/> wavpack | fontconfig <br/> freetype <br/> fribidi <br/> gmp <br/> gnutls <br/> kvazaar <br/> lame <br/> libaom** <br/> libass <br/> libiconv <br/> libilbc* <br/> libtheora <br/> libvorbis <br/> libvpx <br/> libwebp <br/> libxml2 <br/> opencore-amr <br/> opus* <br/> shine <br/> snappy* <br/> soxr** <br/> speex <br/> wavpack <br/> x264* <br/> xvidcore* |
|
||||
| | [  ](https://bintray.com/tanersener/maven/mobile-ffmpeg-min/1.2/link) | [  ](https://bintray.com/tanersener/maven/mobile-ffmpeg-min-gpl/1.2/link) | [  ](https://bintray.com/tanersener/maven/mobile-ffmpeg-https/1.2/link) | [  ](https://bintray.com/tanersener/maven/mobile-ffmpeg-https-gpl/1.2/link) | [  ](https://bintray.com/tanersener/maven/mobile-ffmpeg-full/1.2/link) | [  ](https://bintray.com/tanersener/maven/mobile-ffmpeg-full-gpl/1.2/link) |
|
||||
|
||||
\* - Supported since `v1.1`
|
||||
|
||||
\*\* - Supported since `v2.0`
|
||||
|
||||
#### 2.1 Android
|
||||
- arm-v7a
|
||||
- arm-v7a-neon
|
||||
- arm64-v8a
|
||||
- x86
|
||||
- x86_64
|
||||
#### 2.2 IOS
|
||||
- armv7
|
||||
- armv7s
|
||||
- arm64
|
||||
- i386
|
||||
- x86_64
|
||||
1. Add MobileFFmpeg dependency from `jcenter()`
|
||||
```
|
||||
dependencies {`
|
||||
implementation 'com.arthenica:mobile-ffmpeg-full:1.2'
|
||||
}
|
||||
```
|
||||
|
||||
### 3. FFmpeg Support
|
||||
This repository branch contains FFmpeg version 3.4.2 with support for the following external libraries.
|
||||
Cross-compile instructions for all of them can be found under scripts inside `build` folder.
|
||||
- fontconfig
|
||||
- freetype
|
||||
- fribidi
|
||||
- gmp
|
||||
- gnutls
|
||||
- kvazaar
|
||||
- lame
|
||||
- libass
|
||||
- libiconv
|
||||
- libilbc
|
||||
- libtheora
|
||||
- libvorbis
|
||||
- libvpx
|
||||
- libwebp
|
||||
- libxml2
|
||||
- opencore-amr
|
||||
- opus
|
||||
- shine
|
||||
- snappy
|
||||
- speex
|
||||
- wavpack
|
||||
- x264
|
||||
- xvidcore
|
||||
|
||||
External libraries and their dependencies are explained in the [External Libraries](https://github.com/tanersener/mobile-ffmpeg/wiki/External-Libraries) page.
|
||||
|
||||
### 4. Using
|
||||
#### 4.1 Android
|
||||
Import `mobile-ffmpeg-1.1.aar` into your project and use the following source code.
|
||||
```
|
||||
2. Use the following source code to execute commands.
|
||||
```
|
||||
import com.arthenica.mobileffmpeg.FFmpeg;
|
||||
|
||||
int rc = FFmpeg.execute("-i", "file1.mp4", "-c:v", "libxvid", "file1.avi");
|
||||
Log.i(Log.TAG, String.format("Command execution %s.", (rc == 0?"completed successfully":"failed with rc=" + rc));
|
||||
```
|
||||
#### 4.2 IOS
|
||||
Use MobileFFmpeg in your project by adding all IOS frameworks from `prebuilt/ios-framework` path or
|
||||
by adding all `ffmpeg` and `mobile-ffmpeg` dylibs with headers from folders inside `prebuilt/ios-universal`.
|
||||
```
|
||||
#### 2.2 IOS
|
||||
1. Add MobileFFmpeg pod to your `Podfile`
|
||||
```
|
||||
pod 'mobile-ffmpeg-full', '~> 1.2'
|
||||
```
|
||||
|
||||
Then run the following Objective-C source code.
|
||||
```
|
||||
2. Create and execute commands using the following `Objective-C` example.
|
||||
```
|
||||
#import <mobileffmpeg/mobileffmpeg.h>
|
||||
|
||||
NSString* command = @"-i file1.mp4 -c:v libxvid file1.avi";
|
||||
@@ -87,73 +83,86 @@ Then run the following Objective-C source code.
|
||||
NSLog(@"Process exited with rc %d\n", result);
|
||||
|
||||
free(arguments);
|
||||
```
|
||||
#### 4.3 Test Application
|
||||
You can see how MobileFFmpeg is used inside an application by running test applications in this repository.
|
||||
```
|
||||
#### 2.3 Test Application
|
||||
You can see how MobileFFmpeg is used inside an application by running test applications provided.
|
||||
There is an Android test application under the `android/test-app` folder and an IOS test application under the
|
||||
`ios/test-app` folder.
|
||||
`ios/test-app` folder. Both applications are identical and supports command execution and video encoding.
|
||||
|
||||
### 5. Building
|
||||
#### 5.1 Prerequisites
|
||||
### 3. Versions
|
||||
|
||||
- `MobileFFmpeg v1.x` is the previous stable, includes `FFmpeg v3.4.4`
|
||||
|
||||
- `MobileFFmpeg v2.x` is the current stable, includes `FFmpeg v4.0.2`
|
||||
|
||||
### 4. Building
|
||||
#### 4.1 Prerequisites
|
||||
1. 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
|
||||
```
|
||||
|
||||
```
|
||||
autoconf automake libtool pkg-config curl cmake gcc gperf texinfo yasm nasm
|
||||
```
|
||||
Some of these packages are not mandatory for the default build.
|
||||
Please visit [Android Prerequisites](https://github.com/tanersener/mobile-ffmpeg/wiki/Android-Prerequisites) and
|
||||
[IOS Prerequisites](https://github.com/tanersener/mobile-ffmpeg/wiki/IOS-Prerequisites) for the details.
|
||||
|
||||
2. Android builds require these additional packages.
|
||||
- **Android SDK 5.0 Lollipop (API Level 21)** or later
|
||||
- **Android NDK r16b** or later with LLDB and CMake
|
||||
- **gradle 4.4** or later
|
||||
- **Android SDK 5.0 Lollipop (API Level 21)** or later
|
||||
- **Android NDK r16b** or later with LLDB and CMake
|
||||
- **gradle 4.4** or later
|
||||
|
||||
3. IOS builds need these extra packages and tools.
|
||||
- **IOS SDK 7.0.x** or later
|
||||
- **Xcode 8.x** or later
|
||||
- **Command Line Tools**
|
||||
- **lipo** utility
|
||||
- **IOS SDK 7.0.x** or later
|
||||
- **Xcode 8.x** or later
|
||||
- **Command Line Tools**
|
||||
- **lipo** utility
|
||||
|
||||
#### 5.2 Build Scripts
|
||||
#### 4.2 Build Scripts
|
||||
Use `android.sh` and `ios.sh` to build MobileFFmpeg for each platform.
|
||||
After a successful build, compiled FFmpeg and MobileFFmpeg libraries can be found under `prebuilt` directory.
|
||||
|
||||
Both `android.sh` and `ios.sh` can be customized to override default settings,
|
||||
[android.sh](https://github.com/tanersener/mobile-ffmpeg/wiki/android.sh) and
|
||||
[ios.sh](https://github.com/tanersener/mobile-ffmpeg/wiki/ios.sh) wiki pages include all available build options.
|
||||
##### 5.2.1 Android
|
||||
##### 4.2.1 Android
|
||||
```
|
||||
export ANDROID_NDK_ROOT=<Android NDK Path>
|
||||
./android.sh
|
||||
```
|
||||
##### 5.2.2 IOS
|
||||
##### 4.2.2 IOS
|
||||
```
|
||||
./ios.sh
|
||||
./ios.sh
|
||||
```
|
||||
#### 5.3 GPL Support
|
||||
From `v1.1` onwards it is possible to enable to GPL libraries `x264` and `xvidcore` from top level build scripts.
|
||||
|
||||
#### 4.3 GPL Support
|
||||
Since`v1.1`, it is possible to enable to GPL licensed libraries `x264` and `xvidcore` from the top level build scripts.
|
||||
Their source code is not included in the repository and downloaded when enabled.
|
||||
|
||||
### 6. Documentation
|
||||
#### 4.4 External Libraries
|
||||
`build` directory includes build scripts for external libraries. There are two scripts for each library, one for Android and one for IOS. They include all options/flags used to cross-compile the libraries. `ASM` is enabled by most of them, exceptions are listed under the [ASM Support](https://github.com/tanersener/mobile-ffmpeg/wiki/ASM-Support) page.
|
||||
|
||||
### 5. Documentation
|
||||
|
||||
A more detailed documentation is available at [Wiki](https://github.com/tanersener/mobile-ffmpeg/wiki).
|
||||
|
||||
### 7. License
|
||||
### 6. License
|
||||
|
||||
This project is licensed under the LGPL v3.0. However, if source code is built using optional `--enable-gpl` flag or
|
||||
prebuilt binaries with `-gpl` postfix are used then MobileFFmpeg is subject to the GPL v3.0 license.
|
||||
|
||||
Source code of FFmpeg and external libraries is included in compliance with their individual licenses.
|
||||
|
||||
`strip-frameworks.sh` script included and distributed is published under the Apache License version 2.0.
|
||||
|
||||
Digital assets used in test applications are published in the public domain.
|
||||
|
||||
Please visit [License](https://github.com/tanersener/mobile-ffmpeg/wiki/License) page for the details.
|
||||
|
||||
### 8. Contributing
|
||||
### 7. Contributing
|
||||
|
||||
This project is stable but far from complete. If you have any recommendations or ideas to improve it, please feel free to submit issues or pull requests. Any help is appreciated.
|
||||
If you have any recommendations or ideas to improve it, please feel free to submit issues or pull requests. Any help is appreciated.
|
||||
|
||||
### 9. See Also
|
||||
### 8. See Also
|
||||
|
||||
- [libav gas-preprocessor](https://github.com/libav/gas-preprocessor/raw/master/gas-preprocessor.pl)
|
||||
- [FFmpeg API Documentation](https://ffmpeg.org/doxygen/3.4/index.html)
|
||||
|
||||
+2
-2
@@ -491,6 +491,7 @@ do
|
||||
export ARCH=$(get_arch_name $run_arch)
|
||||
export TOOLCHAIN=$(get_toolchain)
|
||||
export TOOLCHAIN_ARCH=$(get_toolchain_arch)
|
||||
export ANDROID_ARCH=$(get_android_arch $run_arch)
|
||||
|
||||
create_toolchain || exit 1
|
||||
|
||||
@@ -534,7 +535,6 @@ if [[ ! -z ${ANDROID_ARCHITECTURES} ]]; then
|
||||
MOBILE_FFMPEG_AAR=${BASEDIR}/prebuilt/android-aar/mobile-ffmpeg
|
||||
|
||||
# BUILDING ANDROID ARCHIVE LIBRARY
|
||||
rm -rf ${BASEDIR}/prebuilt/android-aar
|
||||
rm -rf ${BASEDIR}/android/libs
|
||||
|
||||
mkdir -p ${MOBILE_FFMPEG_AAR}
|
||||
@@ -559,7 +559,7 @@ if [[ ! -z ${ANDROID_ARCHITECTURES} ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cp ${BASEDIR}/android/app/build/outputs/aar/mobile-ffmpeg-1.1.aar ${MOBILE_FFMPEG_AAR} || exit 1
|
||||
cp ${BASEDIR}/android/app/build/outputs/aar/mobile-ffmpeg-*.aar ${MOBILE_FFMPEG_AAR}/mobile-ffmpeg.aar || exit 1
|
||||
|
||||
echo -e "Created mobile-ffmpeg Android archive successfully.\n" >> ${BASEDIR}/build.log
|
||||
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
/build
|
||||
/local.properties
|
||||
|
||||
@@ -38,7 +38,7 @@ PROJECT_NAME = "MobileFFmpeg Android API"
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER = 1.1
|
||||
PROJECT_NUMBER = 1.2
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
|
||||
@@ -5,8 +5,8 @@ android {
|
||||
defaultConfig {
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 27
|
||||
versionCode 11
|
||||
versionName "1.1"
|
||||
versionCode 12
|
||||
versionName "1.2"
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
project.archivesBaseName = "mobile-ffmpeg"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,180 @@
|
||||
apply plugin: 'com.android.library'
|
||||
apply plugin: 'com.github.dcendents.android-maven'
|
||||
apply plugin: 'com.jfrog.bintray'
|
||||
|
||||
buildscript {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.1.2'
|
||||
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.1'
|
||||
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
|
||||
}
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 27
|
||||
defaultConfig {
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 27
|
||||
versionCode Integer.parseInt(releaseVersionCode)
|
||||
versionName releaseVersionName
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
project.archivesBaseName = releaseProject
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
main {
|
||||
jniLibs.srcDirs = ["../libs"]
|
||||
}
|
||||
}
|
||||
|
||||
libraryVariants.all { variant ->
|
||||
variant.outputs.all { output ->
|
||||
if (outputFile != null && outputFileName.endsWith('.aar')) {
|
||||
outputFileName = "${archivesBaseName}-${android.defaultConfig.versionName}.aar"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ext {
|
||||
bintrayRepo = 'maven'
|
||||
bintrayName = releaseProject
|
||||
|
||||
publishedGroupId = 'com.arthenica'
|
||||
libraryName = releaseProject
|
||||
artifact = releaseProject
|
||||
|
||||
libraryDescription = releaseProjectDescription
|
||||
|
||||
siteUrl = 'https://github.com/tanersener/mobile-ffmpeg'
|
||||
gitUrl = 'https://github.com/tanersener/mobile-ffmpeg.git'
|
||||
|
||||
libraryVersion = releaseVersionName
|
||||
|
||||
developerId = 'tanersener'
|
||||
developerName = 'Taner Sener'
|
||||
developerEmail = 'tanersener@gmail.com'
|
||||
|
||||
if (Project.hasProperty('releaseGPL')) {
|
||||
licenseName = 'GNU General Public License version 3'
|
||||
licenseUrl = 'https://www.gnu.org/licenses/gpl-3.0.txt'
|
||||
allLicenses = ["GPL-3.0"]
|
||||
} else {
|
||||
licenseName = 'GNU Lesser General Public License, Version 3'
|
||||
licenseUrl = 'https://www.gnu.org/licenses/lgpl-3.0.txt'
|
||||
allLicenses = ["LGPL-3.0"]
|
||||
}
|
||||
}
|
||||
|
||||
group = publishedGroupId
|
||||
version = libraryVersion
|
||||
|
||||
install {
|
||||
repositories.mavenInstaller {
|
||||
pom.project {
|
||||
packaging 'aar'
|
||||
groupId publishedGroupId
|
||||
artifactId artifact
|
||||
|
||||
name libraryName
|
||||
description libraryDescription
|
||||
url siteUrl
|
||||
|
||||
licenses {
|
||||
license {
|
||||
name licenseName
|
||||
url licenseUrl
|
||||
}
|
||||
}
|
||||
developers {
|
||||
developer {
|
||||
id developerId
|
||||
name developerName
|
||||
email developerEmail
|
||||
}
|
||||
}
|
||||
scm {
|
||||
connection gitUrl
|
||||
developerConnection gitUrl
|
||||
url siteUrl
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Properties properties = new Properties()
|
||||
properties.load(project.rootProject.file('local.properties').newDataInputStream())
|
||||
|
||||
bintray {
|
||||
user = properties.getProperty("bintray.user")
|
||||
key = properties.getProperty("bintray.apikey")
|
||||
|
||||
configurations = ['archives']
|
||||
pkg {
|
||||
repo = bintrayRepo
|
||||
name = bintrayName
|
||||
desc = libraryDescription
|
||||
websiteUrl = siteUrl
|
||||
vcsUrl = gitUrl
|
||||
licenses = allLicenses
|
||||
dryRun = false
|
||||
publish = false
|
||||
override = false
|
||||
publicDownloadNumbers = false
|
||||
version {
|
||||
desc = libraryDescription
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
task sourcesJar(type: Jar) {
|
||||
classifier = 'sources'
|
||||
from android.sourceSets.main.java.srcDirs
|
||||
}
|
||||
|
||||
task javadoc(type: Javadoc) {
|
||||
title = 'MobileFFmpeg'
|
||||
source = android.sourceSets.main.java.srcDirs
|
||||
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
|
||||
}
|
||||
|
||||
task javadocJar(type: Jar, dependsOn: javadoc) {
|
||||
classifier = 'javadoc'
|
||||
from javadoc.destinationDir
|
||||
}
|
||||
|
||||
artifacts {
|
||||
archives javadocJar
|
||||
archives sourcesJar
|
||||
}
|
||||
|
||||
afterEvaluate {
|
||||
javadoc.classpath += files(android.libraryVariants.collect { variant ->
|
||||
variant.javaCompile.classpath.files
|
||||
})
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
implementation 'com.android.support:appcompat-v7:27.1.1'
|
||||
testImplementation 'junit:junit:4.12'
|
||||
androidTestImplementation 'com.android.support.test:runner:1.0.2'
|
||||
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
}
|
||||
}
|
||||
@@ -28,7 +28,7 @@
|
||||
#include "log.h"
|
||||
|
||||
/** Library version string */
|
||||
#define MOBILE_FFMPEG_VERSION "1.1"
|
||||
#define MOBILE_FFMPEG_VERSION "1.2"
|
||||
|
||||
/*
|
||||
* Class: com_arthenica_mobileffmpeg_FFmpeg
|
||||
|
||||
@@ -36,7 +36,7 @@ LOCAL_MODULE := mobileffmpeg
|
||||
LOCAL_SRC_FILES := $(MY_PATH)/mobileffmpeg.c $(MY_PATH)/cmdutils.c $(MY_PATH)/ffmpeg.c $(MY_PATH)/ffmpeg_opt.c $(MY_PATH)/ffmpeg_hw.c $(MY_PATH)/ffmpeg_filter.c
|
||||
LOCAL_CFLAGS := -I${LOCAL_PATH}/../../prebuilt/android-$(TARGET_ARCH)/ffmpeg/include
|
||||
LOCAL_LDLIBS := -llog -lz -landroid
|
||||
LOCAL_SHARED_LIBRARIES := libavfilter libavformat libavcodec libavutil libswresample libavdevice libswscale
|
||||
LOCAL_SHARED_LIBRARIES := c++_shared libavfilter libavformat libavcodec libavutil libswresample libavdevice libswscale
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
ifeq ($(TARGET_ARCH_ABI), armeabi-v7a)
|
||||
@@ -48,7 +48,7 @@ ifeq ($(TARGET_ARCH_ABI), armeabi-v7a)
|
||||
LOCAL_SRC_FILES := $(MY_PATH)/mobileffmpeg.c $(MY_PATH)/cmdutils.c $(MY_PATH)/ffmpeg.c $(MY_PATH)/ffmpeg_opt.c $(MY_PATH)/ffmpeg_hw.c $(MY_PATH)/ffmpeg_filter.c
|
||||
LOCAL_CFLAGS := -I${LOCAL_PATH}/../../prebuilt/android-$(TARGET_ARCH)/ffmpeg/include
|
||||
LOCAL_LDLIBS := -llog -lz -landroid
|
||||
LOCAL_SHARED_LIBRARIES := libavcodec-neon libavfilter-neon libswscale-neon libavformat libavutil libswresample libavdevice
|
||||
LOCAL_SHARED_LIBRARIES := c++_shared libavcodec-neon libavfilter-neon libswscale-neon libavformat libavutil libswresample libavdevice
|
||||
LOCAL_ARM_NEON := true
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
@@ -57,4 +57,4 @@ ifeq ($(TARGET_ARCH_ABI), armeabi-v7a)
|
||||
endif
|
||||
endif
|
||||
|
||||
$(call import-module, ffmpeg)
|
||||
$(call import-module, ffmpeg)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
/build
|
||||
/.idea/
|
||||
/gradle/
|
||||
/local.properties
|
||||
|
||||
@@ -19,12 +19,12 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation project(':app')
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
implementation 'com.android.support:support-v4:27.1.1'
|
||||
implementation 'com.android.support:design:27.1.1'
|
||||
implementation 'com.android.support:appcompat-v7:27.1.1'
|
||||
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
|
||||
implementation 'com.arthenica:mobile-ffmpeg-full:1.2'
|
||||
testImplementation 'junit:junit:4.12'
|
||||
androidTestImplementation 'com.android.support.test:runner:1.0.2'
|
||||
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
|
||||
|
||||
+10
@@ -51,7 +51,9 @@ public class CommandTabFragment extends Fragment {
|
||||
|
||||
public CommandTabFragment() {
|
||||
logQueue = new ConcurrentLinkedQueue<>();
|
||||
}
|
||||
|
||||
public void enableLogRedirection() {
|
||||
Log.enableCallbackFunction(new Function<byte[], Void>() {
|
||||
|
||||
@Override
|
||||
@@ -62,6 +64,10 @@ public class CommandTabFragment extends Fragment {
|
||||
});
|
||||
}
|
||||
|
||||
public void disableLogRedirection() {
|
||||
Log.enableCallbackFunction(null);
|
||||
}
|
||||
|
||||
public static CommandTabFragment newInstance(final Context context) {
|
||||
CommandTabFragment fragment = new CommandTabFragment();
|
||||
fragment.setContext(context);
|
||||
@@ -110,6 +116,7 @@ public class CommandTabFragment extends Fragment {
|
||||
}
|
||||
|
||||
public void runFFmpeg() {
|
||||
enableLogRedirection();
|
||||
String command = commandText.getText().toString();
|
||||
String[] split = command.split(" ");
|
||||
|
||||
@@ -121,9 +128,11 @@ public class CommandTabFragment extends Fragment {
|
||||
android.util.Log.i(MainActivity.TAG, String.format("Process exited with rc %d.", returnCode));
|
||||
Toast.makeText(context, "Run completed", Toast.LENGTH_SHORT).show();
|
||||
logSync.countDown();
|
||||
disableLogRedirection();
|
||||
}
|
||||
|
||||
public void runFFmpegAsync() {
|
||||
enableLogRedirection();
|
||||
String command = commandText.getText().toString();
|
||||
String[] arguments = command.split(" ");
|
||||
|
||||
@@ -137,6 +146,7 @@ public class CommandTabFragment extends Fragment {
|
||||
public Void apply(Integer returnCode) {
|
||||
android.util.Log.i(MainActivity.TAG, String.format("Async process exited with rc %d.", returnCode));
|
||||
logSync.countDown();
|
||||
disableLogRedirection();
|
||||
return null;
|
||||
}
|
||||
}, arguments);
|
||||
|
||||
@@ -28,7 +28,7 @@ import java.io.File;
|
||||
*/
|
||||
public class Slideshow {
|
||||
|
||||
public static String generateScript(final File fileDirectory, final String image1, final String image2, final String image3, final String videoFile) {
|
||||
public static String generateScript(final File fileDirectory, final String image1, final String image2, final String image3, final String videoFile, final String videoCodec) {
|
||||
return
|
||||
"-loop 1 -i " + fileDirectory + "/" + image1 + " " +
|
||||
"-loop 1 -i " + fileDirectory + "/" + image2 + " " +
|
||||
@@ -46,7 +46,7 @@ public class Slideshow {
|
||||
"[stream2starting][stream1ending]blend=all_expr=\'if(gte(X,(W/2)*T/1)*lte(X,W-(W/2)*T/1),B,A)\':shortest=1[stream2blended];"+
|
||||
"[stream3starting][stream2ending]blend=all_expr=\'if(gte(X,(W/2)*T/1)*lte(X,W-(W/2)*T/1),B,A)\':shortest=1[stream3blended];"+
|
||||
"[stream1overlaid][stream2blended][stream2overlaid][stream3blended][stream3overlaid]concat=n=5:v=1:a=0,format=yuv420p[video]"+
|
||||
" -map [video] -vsync 2 -async 1 -c:v mpeg4 -r 30 " + fileDirectory + "/" + videoFile;
|
||||
" -map [video] -vsync 2 -async 1 -c:v " + videoCodec.toLowerCase() + " -r 30 " + fileDirectory + "/" + videoFile;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+16
-1
@@ -36,7 +36,9 @@ import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.EditText;
|
||||
import android.widget.MediaController;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
import android.widget.VideoView;
|
||||
|
||||
@@ -48,9 +50,12 @@ import static com.arthenica.mobileffmpeg.test.MainActivity.TAG;
|
||||
|
||||
public class SlideshowTabFragment extends Fragment {
|
||||
|
||||
public static final String DEFAULT_VIDEO_CODEC = "mpeg4";
|
||||
|
||||
private Context context;
|
||||
private View playButton;
|
||||
private String asyncResult;
|
||||
private EditText videoCodecText;
|
||||
|
||||
public SlideshowTabFragment() {
|
||||
}
|
||||
@@ -89,6 +94,10 @@ public class SlideshowTabFragment extends Fragment {
|
||||
final VideoView videoView = getView().findViewById(R.id.videoView);
|
||||
videoView.setBackgroundColor(Color.LTGRAY);
|
||||
|
||||
videoCodecText = getView().findViewById(R.id.videoCodecText);
|
||||
videoCodecText.setText(DEFAULT_VIDEO_CODEC);
|
||||
videoCodecText.setSelection(DEFAULT_VIDEO_CODEC.length());
|
||||
|
||||
// PLAY BUTTON IS DISABLED AT STARTUP
|
||||
playButton = getView().findViewById(R.id.slideshowPlayButton);
|
||||
if (playButton != null) {
|
||||
@@ -130,6 +139,12 @@ public class SlideshowTabFragment extends Fragment {
|
||||
final ProgressDialog progressDialog = ProgressDialog.show(context, "", "Creating video slideshow");
|
||||
|
||||
try {
|
||||
String videoCodec = videoCodecText.getText().toString();
|
||||
if (videoCodec.trim().length() == 0) {
|
||||
videoCodec = DEFAULT_VIDEO_CODEC;
|
||||
}
|
||||
Log.i(TAG, String.format("Creating slideshow using video codec: %s", videoCodec));
|
||||
|
||||
resourceToFile(R.drawable.colosseum, image1);
|
||||
resourceToFile(R.drawable.pyramid, image2);
|
||||
resourceToFile(R.drawable.tajmahal, image3);
|
||||
@@ -164,7 +179,7 @@ public class SlideshowTabFragment extends Fragment {
|
||||
};
|
||||
handler.postDelayed(runnable, 1000);
|
||||
|
||||
String script = Slideshow.generateScript(context.getFilesDir(), image1, image2, image3, file.getName());
|
||||
String script = Slideshow.generateScript(context.getFilesDir(), image1, image2, image3, file.getName(), videoCodec);
|
||||
MainActivity.executeAsync(new Function<Integer, Void>() {
|
||||
|
||||
@Override
|
||||
|
||||
@@ -6,27 +6,65 @@
|
||||
android:orientation="vertical"
|
||||
tools:context=".SlideshowTabFragment">
|
||||
|
||||
<Button
|
||||
android:id="@+id/slideshowCreateButton"
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="30dp"
|
||||
android:layout_marginStart="30dp"
|
||||
android:layout_marginTop="30dp"
|
||||
android:text="@string/button_create_slideshow_text" />
|
||||
android:layout_height="100dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<Button
|
||||
android:id="@+id/slideshowPlayButton"
|
||||
<Button
|
||||
android:id="@+id/slideshowCreateButton"
|
||||
android:layout_width="140dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:layout_marginStart="30dp"
|
||||
android:layout_marginTop="30dp"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/button_create_slideshow_text"
|
||||
android:textAlignment="center" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/slideshowPlayButton"
|
||||
android:layout_width="140dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:layout_marginEnd="30dp"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginTop="30dp"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/button_play_slideshow_text"
|
||||
android:textAlignment="center" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="30dp"
|
||||
android:layout_marginStart="30dp"
|
||||
android:layout_marginTop="30dp"
|
||||
android:text="@string/button_play_slideshow_text" />
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/videoCodecText"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:layout_marginBottom="30dp"
|
||||
android:layout_marginEnd="50dp"
|
||||
android:layout_marginStart="50dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_weight="1"
|
||||
android:ems="10"
|
||||
android:hint="@string/video_text_hint"
|
||||
android:inputType="text|textNoSuggestions"
|
||||
android:selectAllOnFocus="false"
|
||||
android:singleLine="true"
|
||||
android:text="mpeg4"
|
||||
android:textAlignment="center" />
|
||||
</LinearLayout>
|
||||
|
||||
<VideoView
|
||||
android:id="@+id/videoView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="30dp" />
|
||||
android:layout_height="262dp"
|
||||
android:layout_margin="30dp"
|
||||
android:layout_weight="1" />
|
||||
</LinearLayout>
|
||||
@@ -7,4 +7,5 @@
|
||||
<string name="button_play_slideshow_text">Play</string>
|
||||
<string name="command_tab">Command</string>
|
||||
<string name="slideshow_tab">Slideshow</string>
|
||||
<string name="video_text_hint">Enter video codec</string>
|
||||
</resources>
|
||||
|
||||
@@ -246,13 +246,13 @@ get_cxxflags() {
|
||||
get_common_linked_libraries() {
|
||||
case $1 in
|
||||
ffmpeg)
|
||||
echo "-lc -lm -ldl -llog -L${ANDROID_NDK_ROOT}/toolchains/mobile-ffmpeg-${TOOLCHAIN}/sysroot/usr/lib -L${ANDROID_NDK_ROOT}/toolchains/mobile-ffmpeg-${TOOLCHAIN}/lib -L${ANDROID_NDK_ROOT}/sources/cxx-stl/llvm-libc++/lib"
|
||||
echo "-lc -lm -ldl -llog -L${ANDROID_NDK_ROOT}/toolchains/mobile-ffmpeg-${TOOLCHAIN}/sysroot/usr/lib -L${ANDROID_NDK_ROOT}/toolchains/mobile-ffmpeg-${TOOLCHAIN}/lib -L${ANDROID_NDK_ROOT}/sources/cxx-stl/llvm-libc++/libs/${ANDROID_ARCH}"
|
||||
;;
|
||||
libvpx)
|
||||
echo "-lc -lm -L${ANDROID_NDK_ROOT}/toolchains/mobile-ffmpeg-${TOOLCHAIN}/sysroot/usr/lib -L${ANDROID_NDK_ROOT}/toolchains/mobile-ffmpeg-${TOOLCHAIN}/lib -L${ANDROID_NDK_ROOT}/sources/cxx-stl/llvm-libc++/lib"
|
||||
echo "-lc -lm -L${ANDROID_NDK_ROOT}/toolchains/mobile-ffmpeg-${TOOLCHAIN}/sysroot/usr/lib -L${ANDROID_NDK_ROOT}/toolchains/mobile-ffmpeg-${TOOLCHAIN}/lib -L${ANDROID_NDK_ROOT}/sources/cxx-stl/llvm-libc++/libs/${ANDROID_ARCH}"
|
||||
;;
|
||||
*)
|
||||
echo "-lc -lm -ldl -llog -L${ANDROID_NDK_ROOT}/toolchains/mobile-ffmpeg-${TOOLCHAIN}/sysroot/usr/lib -L${ANDROID_NDK_ROOT}/toolchains/mobile-ffmpeg-${TOOLCHAIN}/lib -L${ANDROID_NDK_ROOT}/sources/cxx-stl/llvm-libc++/lib"
|
||||
echo "-lc -lm -ldl -llog -L${ANDROID_NDK_ROOT}/toolchains/mobile-ffmpeg-${TOOLCHAIN}/sysroot/usr/lib -L${ANDROID_NDK_ROOT}/toolchains/mobile-ffmpeg-${TOOLCHAIN}/lib -L${ANDROID_NDK_ROOT}/sources/cxx-stl/llvm-libc++/libs/${ANDROID_ARCH}"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
@@ -560,7 +560,7 @@ Description: a fast compressor/decompressor
|
||||
Version: ${SNAPPY_VERSION}
|
||||
|
||||
Requires:
|
||||
Libs: -L\${libdir} -lz -lstdc++
|
||||
Libs: -L\${libdir} -lz -lc++_shared
|
||||
Cflags: -I\${includedir}
|
||||
EOF
|
||||
}
|
||||
@@ -660,9 +660,9 @@ download_gpl_library_source() {
|
||||
|
||||
case $1 in
|
||||
x264)
|
||||
GPL_LIB_URL="ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20180606-2245-stable.tar.bz2"
|
||||
GPL_LIB_FILE="x264-snapshot-20180606-2245-stable.tar.bz2"
|
||||
GPL_LIB_ORIG_DIR="x264-snapshot-20180606-2245-stable"
|
||||
GPL_LIB_URL="ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20180815-2245-stable.tar.bz2"
|
||||
GPL_LIB_FILE="x264-snapshot-20180815-2245-stable.tar.bz2"
|
||||
GPL_LIB_ORIG_DIR="x264-snapshot-20180815-2245-stable"
|
||||
GPL_LIB_DEST_DIR="x264"
|
||||
;;
|
||||
xvidcore)
|
||||
@@ -930,4 +930,4 @@ library_is_installed() {
|
||||
echo -e "INFO: ${LIB_NAME} library is already built and installed\n" >> ${BASEDIR}/build.log
|
||||
|
||||
echo 0
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,6 +63,6 @@ export LIBPNG_LIBS="-L${BASEDIR}/prebuilt/android-$(get_target_build)/libpng/lib
|
||||
make -j$(get_cpu_count) || exit 1
|
||||
|
||||
# CREATE PACKAGE CONFIG MANUALLY
|
||||
create_freetype_package_config "22.0.16"
|
||||
create_freetype_package_config "22.1.16"
|
||||
|
||||
make install || exit 1
|
||||
|
||||
@@ -48,7 +48,7 @@ fi
|
||||
--with-sysroot=${ANDROID_NDK_ROOT}/toolchains/mobile-ffmpeg-${TOOLCHAIN}/sysroot \
|
||||
--enable-static \
|
||||
--disable-shared \
|
||||
--enable-assembly \
|
||||
--disable-assembly \
|
||||
--disable-fast-install \
|
||||
--disable-maintainer-mode \
|
||||
--host=${TARGET_HOST} || exit 1
|
||||
|
||||
@@ -78,6 +78,6 @@ fi
|
||||
make -j$(get_cpu_count) || exit 1
|
||||
|
||||
# CREATE PACKAGE CONFIG MANUALLY
|
||||
create_gnutls_package_config "3.5.18"
|
||||
create_gnutls_package_config "3.5.19"
|
||||
|
||||
make install || exit 1
|
||||
|
||||
+6
-6
@@ -241,13 +241,13 @@ get_common_ldflags() {
|
||||
get_arch_specific_ldflags() {
|
||||
case ${ARCH} in
|
||||
armv7)
|
||||
echo "-arch armv7 -march=armv7 -mfpu=neon -mfloat-abi=softfp"
|
||||
echo "-arch armv7 -march=armv7 -mfpu=neon -mfloat-abi=softfp -fembed-bitcode"
|
||||
;;
|
||||
armv7s)
|
||||
echo "-arch armv7s -march=armv7s -mfpu=neon -mfloat-abi=softfp"
|
||||
echo "-arch armv7s -march=armv7s -mfpu=neon -mfloat-abi=softfp -fembed-bitcode"
|
||||
;;
|
||||
arm64)
|
||||
echo "-arch arm64 -march=armv8a"
|
||||
echo "-arch arm64 -march=armv8a -fembed-bitcode"
|
||||
;;
|
||||
i386)
|
||||
echo "-arch i386 -march=i386"
|
||||
@@ -650,9 +650,9 @@ download_gpl_library_source() {
|
||||
|
||||
case $1 in
|
||||
x264)
|
||||
GPL_LIB_URL="ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20180606-2245-stable.tar.bz2"
|
||||
GPL_LIB_FILE="x264-snapshot-20180606-2245-stable.tar.bz2"
|
||||
GPL_LIB_ORIG_DIR="x264-snapshot-20180606-2245-stable"
|
||||
GPL_LIB_URL="ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20180815-2245-stable.tar.bz2"
|
||||
GPL_LIB_FILE="x264-snapshot-20180815-2245-stable.tar.bz2"
|
||||
GPL_LIB_ORIG_DIR="x264-snapshot-20180815-2245-stable"
|
||||
GPL_LIB_DEST_DIR="x264"
|
||||
;;
|
||||
xvidcore)
|
||||
|
||||
@@ -68,6 +68,6 @@ export LIBPNG_LIBS="-L${BASEDIR}/prebuilt/ios-$(get_target_host)/libpng/lib"
|
||||
make -j$(get_cpu_count) || exit 1
|
||||
|
||||
# CREATE PACKAGE CONFIG MANUALLY
|
||||
create_freetype_package_config "22.0.16"
|
||||
create_freetype_package_config "22.1.16"
|
||||
|
||||
make install || exit 1
|
||||
|
||||
+1
-11
@@ -54,23 +54,13 @@ if [[ ${RECONF_gmp} -eq 1 ]]; then
|
||||
autoreconf_library ${LIB_NAME}
|
||||
fi
|
||||
|
||||
ASM_FLAGS=""
|
||||
case ${ARCH} in
|
||||
armv7 | armv7s | arm64)
|
||||
ASM_FLAGS="--disable-assembly"
|
||||
;;
|
||||
i386 | x86-64)
|
||||
ASM_FLAGS="--enable-assembly"
|
||||
;;
|
||||
esac
|
||||
|
||||
./configure \
|
||||
--prefix=${BASEDIR}/prebuilt/ios-$(get_target_host)/${LIB_NAME} \
|
||||
--with-pic \
|
||||
--with-sysroot=${SDK_PATH} \
|
||||
--enable-static \
|
||||
--disable-shared \
|
||||
${ASM_FLAGS} \
|
||||
--disable-assembly \
|
||||
--disable-fast-install \
|
||||
--disable-maintainer-mode \
|
||||
--host=${TARGET_HOST} || exit 1
|
||||
|
||||
+1
-1
@@ -98,6 +98,6 @@ fi
|
||||
make -j$(get_cpu_count) || exit 1
|
||||
|
||||
# CREATE PACKAGE CONFIG MANUALLY
|
||||
create_gnutls_package_config "3.5.18"
|
||||
create_gnutls_package_config "3.5.19"
|
||||
|
||||
make install || exit 1
|
||||
|
||||
@@ -47,8 +47,31 @@ if [[ ${RECONF_xvidcore} -eq 1 ]]; then
|
||||
./bootstrap.sh
|
||||
fi
|
||||
|
||||
ASM_FLAGS=""
|
||||
case ${ARCH} in
|
||||
armv7 | armv7s | arm64)
|
||||
ASM_FLAGS=""
|
||||
|
||||
# REMOVING -flat_namespace OPTION FROM CONFIGURE TO FIX THE FOLLOWING ERROR
|
||||
# ld: -flat_namespace and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together
|
||||
sed -i .tmp 's/ -flat_namespace//g' configure
|
||||
|
||||
# REMOVING -Wl,-read_only_relocs,suppress OPTION FROM CONFIGURE TO FIX THE FOLLOWING ERROR
|
||||
# ld: -read_only_relocs and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together
|
||||
sed -i .tmp 's/-Wl,-read_only_relocs,suppress//g' configure
|
||||
|
||||
;;
|
||||
i386)
|
||||
ASM_FLAGS="--disable-assembly"
|
||||
;;
|
||||
x86-64)
|
||||
ASM_FLAGS=""
|
||||
;;
|
||||
esac
|
||||
|
||||
./configure \
|
||||
--prefix=${BASEDIR}/prebuilt/ios-$(get_target_host)/${LIB_NAME} \
|
||||
${ASM_FLAGS} \
|
||||
--host=${TARGET_HOST} || exit 1
|
||||
|
||||
make -j$(get_cpu_count) || exit 1
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -257,7 +257,7 @@ Functions</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:52 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:38:43 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -71,7 +71,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:52 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:38:43 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -299,7 +299,7 @@ Functions</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:52 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:38:43 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -71,7 +71,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:52 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:38:43 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -438,7 +438,7 @@ Variables</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:52 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:38:43 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -84,7 +84,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:52 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:38:43 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -74,7 +74,7 @@ $(function() {
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
|
||||
Macros</h2></td></tr>
|
||||
<tr class="memitem:ab40bb25ef4ec0f35c70e84dbad36cfc2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#ab40bb25ef4ec0f35c70e84dbad36cfc2">MOBILE_FFMPEG_VERSION</a>   "1.1"</td></tr>
|
||||
<tr class="memitem:ab40bb25ef4ec0f35c70e84dbad36cfc2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#ab40bb25ef4ec0f35c70e84dbad36cfc2">MOBILE_FFMPEG_VERSION</a>   "1.2"</td></tr>
|
||||
<tr class="separator:ab40bb25ef4ec0f35c70e84dbad36cfc2"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
||||
@@ -94,7 +94,7 @@ Functions</h2></td></tr>
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">#define MOBILE_FFMPEG_VERSION   "1.1"</td>
|
||||
<td class="memname">#define MOBILE_FFMPEG_VERSION   "1.2"</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
@@ -232,7 +232,7 @@ Functions</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:52 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:38:43 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -204,7 +204,7 @@ Variables</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:52 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:38:43 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -82,7 +82,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:52 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:38:43 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -326,7 +326,7 @@ Variables</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:52 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:38:43 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -80,7 +80,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:52 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:38:43 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -97,7 +97,7 @@ Variables</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:52 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:38:43 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -70,7 +70,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:52 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:38:43 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -80,7 +80,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:52 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:38:43 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -213,7 +213,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:53 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:38:43 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -109,7 +109,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:53 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:38:43 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -102,7 +102,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:53 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:38:43 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -106,7 +106,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:53 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:38:43 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -69,7 +69,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:52 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:38:43 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_162) on Sun Jun 03 20:26:24 EET 2018 -->
|
||||
<!-- Generated by javadoc (1.8.0_172) on Thu Aug 16 11:39:04 EET 2018 -->
|
||||
<title>All Classes (MobileFFmpeg)</title>
|
||||
<meta name="date" content="2018-06-03">
|
||||
<meta name="date" content="2018-08-16">
|
||||
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
|
||||
<script type="text/javascript" src="script.js"></script>
|
||||
</head>
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_162) on Sun Jun 03 20:26:24 EET 2018 -->
|
||||
<!-- Generated by javadoc (1.8.0_172) on Thu Aug 16 11:39:04 EET 2018 -->
|
||||
<title>All Classes (MobileFFmpeg)</title>
|
||||
<meta name="date" content="2018-06-03">
|
||||
<meta name="date" content="2018-08-16">
|
||||
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
|
||||
<script type="text/javascript" src="script.js"></script>
|
||||
</head>
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_162) on Sun Jun 03 20:26:23 EET 2018 -->
|
||||
<!-- Generated by javadoc (1.8.0_172) on Thu Aug 16 11:39:04 EET 2018 -->
|
||||
<title>Abi (MobileFFmpeg)</title>
|
||||
<meta name="date" content="2018-06-03">
|
||||
<meta name="date" content="2018-08-16">
|
||||
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
|
||||
<script type="text/javascript" src="../../../script.js"></script>
|
||||
</head>
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_162) on Sun Jun 03 20:26:24 EET 2018 -->
|
||||
<!-- Generated by javadoc (1.8.0_172) on Thu Aug 16 11:39:04 EET 2018 -->
|
||||
<title>AbiDetect (MobileFFmpeg)</title>
|
||||
<meta name="date" content="2018-06-03">
|
||||
<meta name="date" content="2018-08-16">
|
||||
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
|
||||
<script type="text/javascript" src="../../../script.js"></script>
|
||||
</head>
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_162) on Sun Jun 03 20:26:24 EET 2018 -->
|
||||
<!-- Generated by javadoc (1.8.0_172) on Thu Aug 16 11:39:04 EET 2018 -->
|
||||
<title>FFmpeg (MobileFFmpeg)</title>
|
||||
<meta name="date" content="2018-06-03">
|
||||
<meta name="date" content="2018-08-16">
|
||||
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
|
||||
<script type="text/javascript" src="../../../script.js"></script>
|
||||
</head>
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_162) on Sun Jun 03 20:26:24 EET 2018 -->
|
||||
<!-- Generated by javadoc (1.8.0_172) on Thu Aug 16 11:39:04 EET 2018 -->
|
||||
<title>Log (MobileFFmpeg)</title>
|
||||
<meta name="date" content="2018-06-03">
|
||||
<meta name="date" content="2018-08-16">
|
||||
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
|
||||
<script type="text/javascript" src="../../../script.js"></script>
|
||||
</head>
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_162) on Sun Jun 03 20:26:24 EET 2018 -->
|
||||
<!-- Generated by javadoc (1.8.0_172) on Thu Aug 16 11:39:04 EET 2018 -->
|
||||
<title>com.arthenica.mobileffmpeg (MobileFFmpeg)</title>
|
||||
<meta name="date" content="2018-06-03">
|
||||
<meta name="date" content="2018-08-16">
|
||||
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
|
||||
<script type="text/javascript" src="../../../script.js"></script>
|
||||
</head>
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_162) on Sun Jun 03 20:26:24 EET 2018 -->
|
||||
<!-- Generated by javadoc (1.8.0_172) on Thu Aug 16 11:39:04 EET 2018 -->
|
||||
<title>com.arthenica.mobileffmpeg (MobileFFmpeg)</title>
|
||||
<meta name="date" content="2018-06-03">
|
||||
<meta name="date" content="2018-08-16">
|
||||
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
|
||||
<script type="text/javascript" src="../../../script.js"></script>
|
||||
</head>
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_162) on Sun Jun 03 20:26:24 EET 2018 -->
|
||||
<!-- Generated by javadoc (1.8.0_172) on Thu Aug 16 11:39:04 EET 2018 -->
|
||||
<title>com.arthenica.mobileffmpeg Class Hierarchy (MobileFFmpeg)</title>
|
||||
<meta name="date" content="2018-06-03">
|
||||
<meta name="date" content="2018-08-16">
|
||||
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
|
||||
<script type="text/javascript" src="../../../script.js"></script>
|
||||
</head>
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_162) on Sun Jun 03 20:26:24 EET 2018 -->
|
||||
<!-- Generated by javadoc (1.8.0_172) on Thu Aug 16 11:39:04 EET 2018 -->
|
||||
<title>Constant Field Values (MobileFFmpeg)</title>
|
||||
<meta name="date" content="2018-06-03">
|
||||
<meta name="date" content="2018-08-16">
|
||||
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
|
||||
<script type="text/javascript" src="script.js"></script>
|
||||
</head>
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_162) on Sun Jun 03 20:26:24 EET 2018 -->
|
||||
<!-- Generated by javadoc (1.8.0_172) on Thu Aug 16 11:39:04 EET 2018 -->
|
||||
<title>Deprecated List (MobileFFmpeg)</title>
|
||||
<meta name="date" content="2018-06-03">
|
||||
<meta name="date" content="2018-08-16">
|
||||
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
|
||||
<script type="text/javascript" src="script.js"></script>
|
||||
</head>
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_162) on Sun Jun 03 20:26:24 EET 2018 -->
|
||||
<!-- Generated by javadoc (1.8.0_172) on Thu Aug 16 11:39:04 EET 2018 -->
|
||||
<title>API Help (MobileFFmpeg)</title>
|
||||
<meta name="date" content="2018-06-03">
|
||||
<meta name="date" content="2018-08-16">
|
||||
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
|
||||
<script type="text/javascript" src="script.js"></script>
|
||||
</head>
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_162) on Sun Jun 03 20:26:24 EET 2018 -->
|
||||
<!-- Generated by javadoc (1.8.0_172) on Thu Aug 16 11:39:04 EET 2018 -->
|
||||
<title>Index (MobileFFmpeg)</title>
|
||||
<meta name="date" content="2018-06-03">
|
||||
<meta name="date" content="2018-08-16">
|
||||
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
|
||||
<script type="text/javascript" src="script.js"></script>
|
||||
</head>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_162) on Sun Jun 03 20:26:24 EET 2018 -->
|
||||
<!-- Generated by javadoc (1.8.0_172) on Thu Aug 16 11:39:04 EET 2018 -->
|
||||
<title>MobileFFmpeg</title>
|
||||
<script type="text/javascript">
|
||||
tmpTargetPage = "" + window.location.search;
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_162) on Sun Jun 03 20:26:24 EET 2018 -->
|
||||
<!-- Generated by javadoc (1.8.0_172) on Thu Aug 16 11:39:04 EET 2018 -->
|
||||
<title>Class Hierarchy (MobileFFmpeg)</title>
|
||||
<meta name="date" content="2018-06-03">
|
||||
<meta name="date" content="2018-08-16">
|
||||
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
|
||||
<script type="text/javascript" src="script.js"></script>
|
||||
</head>
|
||||
|
||||
+57
-58
@@ -6,65 +6,52 @@ MobileFFmpeg aims to provide FFmpeg on both mobile platforms with support for sh
|
||||
- Includes build scripts and prebuilt libraries for both Android and IOS
|
||||
- Supports 21 external libraries, 2 GPL libraries and 10 architectures in total
|
||||
- Exposes FFmpeg capabilities both directly from FFmpeg libraries and through MobileFFmpeg wrapper library
|
||||
- Includes cross-compile instructions for 32 open-source libraries including FFmpeg
|
||||
- Includes cross-compile instructions for 32 open-source libraries
|
||||
|
||||
`expat`, `ffmpeg`, `fontconfig`, `freetype`, `fribidi`, `giflib`, `gmp`, `gnutls`, `kvazaar`, `lame`, `libass`, `libiconv`, `libilbc`, `libjpeg`, `libogg`, `libpng`, `libtheora`, `libuuid`, `libvorbis`, `libvpx`, `libwebp`, `libxml2`, `nettle`, `opencore-amr`, `opus`, `shine`, `snappy`, `speex`, `tiff`, `wavpack`, `x264`, `xvidcore`
|
||||
|
||||
- Prebuilt binaries under `JCenter` and `CocoaPods`
|
||||
- Supports `arm-v7a`, `arm-v7a-neon`, `arm64-v8a`, `x86` and `x86_64` Android architectures
|
||||
- Creates Android archive with .aar extension
|
||||
- Supports `armv7`, `armv7s`, `arm64`, `i386` and `x86_64` IOS architectures
|
||||
- Builds with `-fembed-bitcode` flag
|
||||
- Creates IOS dynamic universal (fat) library
|
||||
- Creates IOS dynamic framework for IOS 8 or later
|
||||
- Licensed under LGPL 3.0, can be customized to support GPL v3.0
|
||||
|
||||
### 2. Architectures
|
||||
- Android arm-v7a
|
||||
- Android arm-v7a-neon
|
||||
- Android arm64-v8a
|
||||
- Android x86
|
||||
- Android x86_64
|
||||
- IOS armv7
|
||||
- IOS armv7s
|
||||
- IOS arm64
|
||||
- IOS i386
|
||||
- IOS x86_64
|
||||
|
||||
### 3. FFmpeg Support
|
||||
Latest release (v1.1) of this project contains FFmpeg version 3.4.2 with support for the following external libraries.
|
||||
- fontconfig
|
||||
- freetype
|
||||
- fribidi
|
||||
- gmp
|
||||
- gnutls
|
||||
- kvazaar
|
||||
- lame
|
||||
- libass
|
||||
- libiconv
|
||||
- libilbc
|
||||
- libtheora
|
||||
- libvorbis
|
||||
- libvpx
|
||||
- libwebp
|
||||
- libxml2
|
||||
- opencore-amr
|
||||
- opus
|
||||
- shine
|
||||
- snappy
|
||||
- speex
|
||||
- wavpack
|
||||
- x264
|
||||
- xvidcore
|
||||
### 2. Using
|
||||
Prebuilt libraries are available under [Github](https://github.com/tanersener/mobile-ffmpeg/releases), [JCenter](https://bintray.com/bintray/jcenter) and [CocoaPods](https://cocoapods.org)
|
||||
|
||||
### 4. Using
|
||||
#### 4.1 Android
|
||||
Import `mobile-ffmpeg-1.1.aar` into your project and use the following source code.
|
||||
```
|
||||
There are six different prebuilt packages. Below you can see which external libraries are enabled in each of them.
|
||||
|
||||
| | min | min-gpl | https | https-gpl | full | full-gpl |
|
||||
| :----: | :----: | :----: | :----: | :----: | :----: | :----: |
|
||||
| external <br/> libraries <br/> enabled | - | x264 <br/> xvidcore | gnutls | gnutls <br/> x264 <br/> xvidcore | fontconfig <br/> freetype <br/> fribidi <br/> gmp <br/> gnutls <br/> kvazaar <br/> lame <br/> libass <br/> libiconv <br/> libilbc <br/> libtheora <br/> libvorbis <br/> libvpx <br/> libwebp <br/> libxml2 <br/> opencore-amr <br/> opus <br/> shine <br/> snappy <br/> speex <br/> wavpack | fontconfig <br/> freetype <br/> fribidi <br/> gmp <br/> gnutls <br/> kvazaar <br/> lame <br/> libass <br/> libiconv <br/> libilbc <br/> libtheora <br/> libvorbis <br/> libvpx <br/> libwebp <br/> libxml2 <br/> opencore-amr <br/> opus <br/> shine <br/> snappy <br/> speex <br/> wavpack <br/> x264 <br/> xvidcore |
|
||||
|
||||
#### 2.1 Android
|
||||
1. Add MobileFFmpeg dependency from `jcenter()`
|
||||
```
|
||||
dependencies {`
|
||||
implementation 'com.arthenica:mobile-ffmpeg-full-gpl:1.1'
|
||||
}
|
||||
```
|
||||
|
||||
2. Use the following source code to execute commands.
|
||||
```
|
||||
import com.arthenica.mobileffmpeg.FFmpeg;
|
||||
|
||||
int rc = FFmpeg.execute("-i", "file1.mp4", "-c:v", "libxvid", "file1.avi");
|
||||
Log.i(Log.TAG, String.format("Command execution %s.", (rc == 0?"completed successfully":"failed with rc=" + rc));
|
||||
```
|
||||
#### 4.2 IOS
|
||||
Use MobileFFmpeg in your project by adding all IOS frameworks from `prebuilt/ios-framework` path or
|
||||
by adding all `ffmpeg` and `mobile-ffmpeg` dylibs with headers from folders inside `prebuilt/ios-universal`.
|
||||
```
|
||||
#### 2.2 IOS
|
||||
1. Add MobileFFmpeg pod to your `Podfile`
|
||||
```
|
||||
pod 'mobile-ffmpeg-full-gpl', '~> 1.1'
|
||||
```
|
||||
|
||||
Then run the following Objective-C source code.
|
||||
```
|
||||
2. Create and execute commands using the following `Objective-C` example.
|
||||
```
|
||||
#import <mobileffmpeg/mobileffmpeg.h>
|
||||
|
||||
NSString* command = @"-i file1.mp4 -c:v libxvid file1.avi";
|
||||
@@ -80,10 +67,15 @@ Then run the following Objective-C source code.
|
||||
NSLog(@"Process exited with rc %d\n", result);
|
||||
|
||||
free(arguments);
|
||||
```
|
||||
```
|
||||
### 3. Versions
|
||||
|
||||
### 5. Building
|
||||
#### 5.1 Prerequisites
|
||||
- `MobileFFmpeg v1.x` is the current stable, includes `FFmpeg v3.4.2`
|
||||
|
||||
- `MobileFFmpeg v2.x` is the next stable, includes `FFmpeg v4.0.1`
|
||||
|
||||
### 4. Building
|
||||
#### 4.1 Prerequisites
|
||||
1. Use your package manager (apt, yum, dnf, brew, etc.) to install the following packages.
|
||||
|
||||
```
|
||||
@@ -101,39 +93,46 @@ Then run the following Objective-C source code.
|
||||
- **Command Line Tools**
|
||||
- **lipo** utility
|
||||
|
||||
#### 5.2 Build Scripts
|
||||
#### 4.2 Build Scripts
|
||||
Use `android.sh` and `ios.sh` to build MobileFFmpeg for each platform.
|
||||
After a successful build, compiled FFmpeg and MobileFFmpeg libraries can be found under `prebuilt` directory.
|
||||
|
||||
##### 5.2.1 Android
|
||||
##### 4.2.1 Android
|
||||
```
|
||||
export ANDROID_NDK_ROOT=<Android NDK Path>
|
||||
./android.sh
|
||||
```
|
||||
##### 5.2.2 IOS
|
||||
##### 4.2.2 IOS
|
||||
```
|
||||
./ios.sh
|
||||
```
|
||||
#### 5.3 GPL Support
|
||||
From `v1.1` onwards it is possible to enable to GPL libraries `x264` and `xvidcore` from top level build scripts.
|
||||
#### 4.3 GPL Support
|
||||
Since`v1.1`, it is possible to enable to GPL licensed libraries `x264` and `xvidcore` from the top level build scripts.
|
||||
Their source code is not included in the repository and downloaded when enabled.
|
||||
|
||||
### 6. Documentation
|
||||
#### 4.4 External Libraries
|
||||
`build` directory includes build scripts for external libraries. There are two scripts for each library, one for Android
|
||||
and one for IOS. They include all options/flags used to cross-compile the libraries.
|
||||
|
||||
### 5. Documentation
|
||||
|
||||
A more detailed documentation is available at [Wiki](https://github.com/tanersener/mobile-ffmpeg/wiki).
|
||||
|
||||
### 7. License
|
||||
### 6. License
|
||||
|
||||
This project is licensed under the LGPL v3.0. However, if source code is built using optional `--enable-gpl` flag or
|
||||
prebuilt binaries with `-gpl` postfix are used then MobileFFmpeg is subject to the GPL v3.0 license.
|
||||
|
||||
Source code of FFmpeg and external libraries is included in compliance with their individual licenses.
|
||||
|
||||
`strip-frameworks.sh` script included and distributed is published under the Apache License version 2.0.
|
||||
|
||||
Digital assets used in test applications are published in the public domain.
|
||||
|
||||
Please visit [License](https://github.com/tanersener/mobile-ffmpeg/wiki/License) page for the details.
|
||||
|
||||
### 8. See Also
|
||||
### 7. See Also
|
||||
|
||||
- [libav gas-preprocessor](https://github.com/libav/gas-preprocessor/raw/master/gas-preprocessor.pl)
|
||||
- [FFmpeg API Documentation](https://ffmpeg.org/doxygen/3.4/index.html)
|
||||
- [FFmpeg License and Legal Considerations](https://ffmpeg.org/legal.html)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg IOS API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -102,7 +102,7 @@ Functions</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:51 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:39:32 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg IOS API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -71,7 +71,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:51 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:39:32 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg IOS API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -273,7 +273,7 @@ Functions</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:51 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:39:32 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg IOS API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -75,7 +75,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:51 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:39:32 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg IOS API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -97,7 +97,7 @@ Variables</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:51 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:39:32 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg IOS API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -71,7 +71,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:51 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:39:32 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg IOS API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -221,7 +221,7 @@ Functions</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:51 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:39:32 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg IOS API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -71,7 +71,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:51 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:39:32 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg IOS API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -287,7 +287,7 @@ Functions</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:51 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:39:32 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg IOS API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -74,7 +74,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:51 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:39:32 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg IOS API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -74,7 +74,7 @@ $(function() {
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
|
||||
Macros</h2></td></tr>
|
||||
<tr class="memitem:ab40bb25ef4ec0f35c70e84dbad36cfc2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#ab40bb25ef4ec0f35c70e84dbad36cfc2">MOBILE_FFMPEG_VERSION</a>   "1.1"</td></tr>
|
||||
<tr class="memitem:ab40bb25ef4ec0f35c70e84dbad36cfc2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#ab40bb25ef4ec0f35c70e84dbad36cfc2">MOBILE_FFMPEG_VERSION</a>   "1.2"</td></tr>
|
||||
<tr class="separator:ab40bb25ef4ec0f35c70e84dbad36cfc2"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
||||
@@ -94,7 +94,7 @@ Functions</h2></td></tr>
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">#define MOBILE_FFMPEG_VERSION   "1.1"</td>
|
||||
<td class="memname">#define MOBILE_FFMPEG_VERSION   "1.2"</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
@@ -191,7 +191,7 @@ Functions</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:51 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:39:32 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg IOS API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -198,7 +198,7 @@ Functions</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:51 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:39:32 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg IOS API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -76,7 +76,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:51 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:39:32 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg IOS API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -97,7 +97,7 @@ Variables</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:51 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:39:32 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg IOS API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -70,7 +70,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:51 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:39:32 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg IOS API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -81,7 +81,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:51 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:39:32 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg IOS API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -134,7 +134,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:51 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:39:32 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg IOS API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -91,7 +91,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:51 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:39:32 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg IOS API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -106,7 +106,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:51 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:39:32 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg IOS API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -71,7 +71,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:51 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:39:32 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg IOS API
|
||||
 <span id="projectnumber">1.1</span>
|
||||
 <span id="projectnumber">1.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -69,7 +69,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Fri Jun 15 2018 21:21:51 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Aug 16 2018 11:39:32 for MobileFFmpeg IOS API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -597,16 +597,27 @@ if [[ ! -z ${TARGET_ARCH_LIST} ]]; then
|
||||
cp -r ${MOBILE_FFMPEG_UNIVERSAL}/include/* ${FRAMEWORK_PATH}/Headers
|
||||
cp ${FFMPEG_UNIVERSAL}/include/config.h ${FRAMEWORK_PATH}/Headers
|
||||
cp ${MOBILE_FFMPEG_UNIVERSAL}/lib/libmobileffmpeg.dylib ${FRAMEWORK_PATH}/mobileffmpeg
|
||||
cp ${BASEDIR}/tools/release/ios/strip-frameworks.sh ${FRAMEWORK_PATH}
|
||||
|
||||
# COPYING THE LICENSE
|
||||
if [ ${GPL_ENABLED} == "yes" ]; then
|
||||
|
||||
# GPLv3.0
|
||||
cp ${BASEDIR}/LICENSE.GPLv3 ${FRAMEWORK_PATH}/LICENSE >> ${BASEDIR}/build.log
|
||||
|
||||
# COPYING LICENSE
|
||||
cp ${BASEDIR}/LICENSE.GPLv3 ${MOBILE_FFMPEG_UNIVERSAL}/LICENSE
|
||||
cp ${BASEDIR}/LICENSE.GPLv3 ${FFMPEG_UNIVERSAL}/LICENSE
|
||||
|
||||
else
|
||||
|
||||
# LGPLv3.0
|
||||
cp ${BASEDIR}/LICENSE.LGPLv3 ${FRAMEWORK_PATH}/LICENSE >> ${BASEDIR}/build.log
|
||||
|
||||
# COPYING LICENSE
|
||||
cp ${BASEDIR}/LICENSE.LGPLv3 ${MOBILE_FFMPEG_UNIVERSAL}/LICENSE
|
||||
cp ${BASEDIR}/LICENSE.LGPLv3 ${FFMPEG_UNIVERSAL}/LICENSE
|
||||
|
||||
fi
|
||||
|
||||
build_info_plist "${FRAMEWORK_PATH}/Info.plist" "mobileffmpeg" "com.arthenica.mobileffmpeg.MobileFFmpeg" "${MOBILE_FFMPEG_VERSION}" "${MOBILE_FFMPEG_VERSION}"
|
||||
@@ -632,6 +643,7 @@ if [[ ! -z ${TARGET_ARCH_LIST} ]]; then
|
||||
|
||||
cp -r ${FFMPEG_UNIVERSAL}/include/${FFMPEG_LIB}/* ${FFMPEG_LIB_FRAMEWORK_PATH}/Headers
|
||||
cp ${FFMPEG_UNIVERSAL}/lib/${FFMPEG_LIB}.dylib ${FFMPEG_LIB_FRAMEWORK_PATH}/${FFMPEG_LIB}
|
||||
cp ${BASEDIR}/tools/release/ios/strip-frameworks.sh ${FFMPEG_LIB_FRAMEWORK_PATH}
|
||||
|
||||
# COPYING THE LICENSE
|
||||
if [ ${GPL_ENABLED} == "yes" ]; then
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@ PROJECT_NAME = "MobileFFmpeg IOS API"
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER = 1.1
|
||||
PROJECT_NUMBER = 1.2
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
|
||||
+2
-2
@@ -72,8 +72,8 @@ host_os=darwin
|
||||
|
||||
# The build system.
|
||||
build_alias=
|
||||
build=x86_64-apple-darwin17.6.0
|
||||
build_os=darwin17.6.0
|
||||
build=x86_64-apple-darwin17.7.0
|
||||
build_os=darwin17.7.0
|
||||
|
||||
# A sed program that does not truncate output.
|
||||
SED="/usr/bin/sed"
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
#include "log.h"
|
||||
|
||||
/** Library version string */
|
||||
#define MOBILE_FFMPEG_VERSION "1.1"
|
||||
#define MOBILE_FFMPEG_VERSION "1.2"
|
||||
|
||||
const char *mobileffmpeg_get_ffmpeg_version(void);
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
/Pods/
|
||||
@@ -7,22 +7,6 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
3479403220C5655D00A776FB /* libavdevice.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3479402A20C5655100A776FB /* libavdevice.framework */; };
|
||||
3479403320C5655D00A776FB /* libavformat.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3479402B20C5655300A776FB /* libavformat.framework */; };
|
||||
3479403420C5655D00A776FB /* libavcodec.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3479402C20C5655500A776FB /* libavcodec.framework */; };
|
||||
3479403520C5655D00A776FB /* libswscale.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3479402D20C5655700A776FB /* libswscale.framework */; };
|
||||
3479403620C5655D00A776FB /* libavutil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3479402E20C5655800A776FB /* libavutil.framework */; };
|
||||
3479403720C5655D00A776FB /* libavfilter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3479402F20C5655A00A776FB /* libavfilter.framework */; };
|
||||
3479403820C5655D00A776FB /* mobileffmpeg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3479403020C5655B00A776FB /* mobileffmpeg.framework */; };
|
||||
3479403920C5655D00A776FB /* libswresample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3479403120C5655D00A776FB /* libswresample.framework */; };
|
||||
3479403A20C565A800A776FB /* libavcodec.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3479402C20C5655500A776FB /* libavcodec.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
3479403B20C565A800A776FB /* libavdevice.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3479402A20C5655100A776FB /* libavdevice.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
3479403C20C565A800A776FB /* libavfilter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3479402F20C5655A00A776FB /* libavfilter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
3479403D20C565A800A776FB /* libavformat.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3479402B20C5655300A776FB /* libavformat.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
3479403E20C565A800A776FB /* libavutil.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3479402E20C5655800A776FB /* libavutil.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
3479403F20C565A800A776FB /* libswresample.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3479403120C5655D00A776FB /* libswresample.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
3479404020C565A800A776FB /* libswscale.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3479402D20C5655700A776FB /* libswscale.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
3479404120C565A800A776FB /* mobileffmpeg.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3479403020C5655B00A776FB /* mobileffmpeg.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
348439ED20B2EFAF001A3990 /* pyramid.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 348439EA20B2EFAF001A3990 /* pyramid.jpg */; };
|
||||
348439EE20B2EFAF001A3990 /* tajmahal.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 348439EB20B2EFAF001A3990 /* tajmahal.jpg */; };
|
||||
348439EF20B2EFAF001A3990 /* colosseum.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 348439EC20B2EFAF001A3990 /* colosseum.jpg */; };
|
||||
@@ -33,6 +17,7 @@
|
||||
34FAE220209F7DDE005CE2AE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 34FAE21F209F7DDE005CE2AE /* Assets.xcassets */; };
|
||||
34FAE223209F7DDE005CE2AE /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 34FAE221209F7DDE005CE2AE /* LaunchScreen.storyboard */; };
|
||||
34FAE226209F7DDE005CE2AE /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 34FAE225209F7DDE005CE2AE /* main.m */; };
|
||||
FA337C903C5EA110F9919AE2 /* Pods_MobileFFmpegTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27AA9C6108BA4D26A0F4E3D4 /* Pods_MobileFFmpegTest.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
@@ -42,14 +27,6 @@
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
3479403A20C565A800A776FB /* libavcodec.framework in Embed Frameworks */,
|
||||
3479403B20C565A800A776FB /* libavdevice.framework in Embed Frameworks */,
|
||||
3479403C20C565A800A776FB /* libavfilter.framework in Embed Frameworks */,
|
||||
3479403D20C565A800A776FB /* libavformat.framework in Embed Frameworks */,
|
||||
3479403E20C565A800A776FB /* libavutil.framework in Embed Frameworks */,
|
||||
3479403F20C565A800A776FB /* libswresample.framework in Embed Frameworks */,
|
||||
3479404020C565A800A776FB /* libswscale.framework in Embed Frameworks */,
|
||||
3479404120C565A800A776FB /* mobileffmpeg.framework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -57,14 +34,8 @@
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
3479402A20C5655100A776FB /* libavdevice.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = libavdevice.framework; sourceTree = "<group>"; };
|
||||
3479402B20C5655300A776FB /* libavformat.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = libavformat.framework; sourceTree = "<group>"; };
|
||||
3479402C20C5655500A776FB /* libavcodec.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = libavcodec.framework; sourceTree = "<group>"; };
|
||||
3479402D20C5655700A776FB /* libswscale.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = libswscale.framework; sourceTree = "<group>"; };
|
||||
3479402E20C5655800A776FB /* libavutil.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = libavutil.framework; sourceTree = "<group>"; };
|
||||
3479402F20C5655A00A776FB /* libavfilter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = libavfilter.framework; sourceTree = "<group>"; };
|
||||
3479403020C5655B00A776FB /* mobileffmpeg.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = mobileffmpeg.framework; sourceTree = "<group>"; };
|
||||
3479403120C5655D00A776FB /* libswresample.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = libswresample.framework; sourceTree = "<group>"; };
|
||||
27AA9C6108BA4D26A0F4E3D4 /* Pods_MobileFFmpegTest.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MobileFFmpegTest.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
2BFE82E682D140E75F5869B7 /* Pods-MobileFFmpegTest.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MobileFFmpegTest.debug.xcconfig"; path = "Pods/Target Support Files/Pods-MobileFFmpegTest/Pods-MobileFFmpegTest.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
348439EA20B2EFAF001A3990 /* pyramid.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = pyramid.jpg; sourceTree = "<group>"; };
|
||||
348439EB20B2EFAF001A3990 /* tajmahal.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = tajmahal.jpg; sourceTree = "<group>"; };
|
||||
348439EC20B2EFAF001A3990 /* colosseum.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = colosseum.jpg; sourceTree = "<group>"; };
|
||||
@@ -80,6 +51,7 @@
|
||||
34FAE222209F7DDE005CE2AE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
34FAE224209F7DDE005CE2AE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
34FAE225209F7DDE005CE2AE /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
BC33E3221F0CAEC74E55993E /* Pods-MobileFFmpegTest.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MobileFFmpegTest.release.xcconfig"; path = "Pods/Target Support Files/Pods-MobileFFmpegTest/Pods-MobileFFmpegTest.release.xcconfig"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@@ -87,14 +59,7 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3479403620C5655D00A776FB /* libavutil.framework in Frameworks */,
|
||||
3479403820C5655D00A776FB /* mobileffmpeg.framework in Frameworks */,
|
||||
3479403720C5655D00A776FB /* libavfilter.framework in Frameworks */,
|
||||
3479403420C5655D00A776FB /* libavcodec.framework in Frameworks */,
|
||||
3479403520C5655D00A776FB /* libswscale.framework in Frameworks */,
|
||||
3479403920C5655D00A776FB /* libswresample.framework in Frameworks */,
|
||||
3479403320C5655D00A776FB /* libavformat.framework in Frameworks */,
|
||||
3479403220C5655D00A776FB /* libavdevice.framework in Frameworks */,
|
||||
FA337C903C5EA110F9919AE2 /* Pods_MobileFFmpegTest.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -114,14 +79,7 @@
|
||||
3498DC65209F7F1C005F5883 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3479402C20C5655500A776FB /* libavcodec.framework */,
|
||||
3479402A20C5655100A776FB /* libavdevice.framework */,
|
||||
3479402F20C5655A00A776FB /* libavfilter.framework */,
|
||||
3479402B20C5655300A776FB /* libavformat.framework */,
|
||||
3479402E20C5655800A776FB /* libavutil.framework */,
|
||||
3479403120C5655D00A776FB /* libswresample.framework */,
|
||||
3479402D20C5655700A776FB /* libswscale.framework */,
|
||||
3479403020C5655B00A776FB /* mobileffmpeg.framework */,
|
||||
27AA9C6108BA4D26A0F4E3D4 /* Pods_MobileFFmpegTest.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
@@ -133,6 +91,7 @@
|
||||
34FAE212209F7DDD005CE2AE /* MobileFFmpegTest */,
|
||||
34FAE211209F7DDD005CE2AE /* Products */,
|
||||
3498DC65209F7F1C005F5883 /* Frameworks */,
|
||||
429F8E77B10AE032C315C907 /* Pods */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
@@ -162,6 +121,15 @@
|
||||
path = MobileFFmpegTest;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
429F8E77B10AE032C315C907 /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
2BFE82E682D140E75F5869B7 /* Pods-MobileFFmpegTest.debug.xcconfig */,
|
||||
BC33E3221F0CAEC74E55993E /* Pods-MobileFFmpegTest.release.xcconfig */,
|
||||
);
|
||||
name = Pods;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
@@ -179,11 +147,13 @@
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 34FAE229209F7DDE005CE2AE /* Build configuration list for PBXNativeTarget "MobileFFmpegTest" */;
|
||||
buildPhases = (
|
||||
F00AE8F7E2E5692C197ECA58 /* [CP] Check Pods Manifest.lock */,
|
||||
34FAE20C209F7DDD005CE2AE /* Sources */,
|
||||
34FAE20D209F7DDD005CE2AE /* Frameworks */,
|
||||
34FAE20E209F7DDD005CE2AE /* Resources */,
|
||||
34F9744020A1A200004A1F68 /* Headers */,
|
||||
3452D8CF20A373640045E6B0 /* Embed Frameworks */,
|
||||
F462F1992A3850771AAB84E6 /* [CP] Embed Pods Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -243,6 +213,59 @@
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
F00AE8F7E2E5692C197ECA58 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-MobileFFmpegTest-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
F462F1992A3850771AAB84E6 /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-MobileFFmpegTest/Pods-MobileFFmpegTest-frameworks.sh",
|
||||
"${PODS_ROOT}/mobile-ffmpeg-full/mobileffmpeg.framework",
|
||||
"${PODS_ROOT}/mobile-ffmpeg-full/libavcodec.framework",
|
||||
"${PODS_ROOT}/mobile-ffmpeg-full/libavdevice.framework",
|
||||
"${PODS_ROOT}/mobile-ffmpeg-full/libavfilter.framework",
|
||||
"${PODS_ROOT}/mobile-ffmpeg-full/libavformat.framework",
|
||||
"${PODS_ROOT}/mobile-ffmpeg-full/libavutil.framework",
|
||||
"${PODS_ROOT}/mobile-ffmpeg-full/libswresample.framework",
|
||||
"${PODS_ROOT}/mobile-ffmpeg-full/libswscale.framework",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/mobileffmpeg.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/libavcodec.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/libavdevice.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/libavfilter.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/libavformat.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/libavutil.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/libswresample.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/libswscale.framework",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-MobileFFmpegTest/Pods-MobileFFmpegTest-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
34FAE20C209F7DDD005CE2AE /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
@@ -395,6 +418,7 @@
|
||||
};
|
||||
34FAE22A209F7DDE005CE2AE /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 2BFE82E682D140E75F5869B7 /* Pods-MobileFFmpegTest.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
@@ -410,7 +434,7 @@
|
||||
LD_RUNPATH_SEARCH_PATHS = "@loader_path/Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
||||
OTHER_CODE_SIGN_FLAGS = "--deep";
|
||||
OTHER_LDFLAGS = "";
|
||||
OTHER_LDFLAGS = "$(inherited)";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.arthenica.mobileffmpeg.test.MobileFFmpegTest;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
@@ -420,6 +444,7 @@
|
||||
};
|
||||
34FAE22B209F7DDE005CE2AE /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = BC33E3221F0CAEC74E55993E /* Pods-MobileFFmpegTest.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
@@ -435,7 +460,7 @@
|
||||
LD_RUNPATH_SEARCH_PATHS = "@loader_path/Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
||||
OTHER_CODE_SIGN_FLAGS = "--deep";
|
||||
OTHER_LDFLAGS = "";
|
||||
OTHER_LDFLAGS = "$(inherited)";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.arthenica.mobileffmpeg.test.MobileFFmpegTest;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
|
||||
BIN
Binary file not shown.
+91
@@ -0,0 +1,91 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0940"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "34FAE20F209F7DDD005CE2AE"
|
||||
BuildableName = "MobileFFmpegTest.app"
|
||||
BlueprintName = "MobileFFmpegTest"
|
||||
ReferencedContainer = "container:MobileFFmpegTest.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "34FAE20F209F7DDD005CE2AE"
|
||||
BuildableName = "MobileFFmpegTest.app"
|
||||
BlueprintName = "MobileFFmpegTest"
|
||||
ReferencedContainer = "container:MobileFFmpegTest.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "34FAE20F209F7DDD005CE2AE"
|
||||
BuildableName = "MobileFFmpegTest.app"
|
||||
BlueprintName = "MobileFFmpegTest"
|
||||
ReferencedContainer = "container:MobileFFmpegTest.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "34FAE20F209F7DDD005CE2AE"
|
||||
BuildableName = "MobileFFmpegTest.app"
|
||||
BlueprintName = "MobileFFmpegTest"
|
||||
ReferencedContainer = "container:MobileFFmpegTest.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
+9
-1
@@ -7,7 +7,15 @@
|
||||
<key>MobileFFmpegTest.xcscheme</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>0</integer>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>SuppressBuildableAutocreation</key>
|
||||
<dict>
|
||||
<key>34FAE20F209F7DDD005CE2AE</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:MobileFFmpegTest.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:Pods/Pods.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
BIN
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14109" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14113" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
@@ -18,15 +18,18 @@
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="MobileFFMpegTest
" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aQQ-J3-9Lk">
|
||||
<rect key="frame" x="66" y="302" width="243" height="63"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="MobileFFMpegTest
" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aQQ-J3-9Lk">
|
||||
<rect key="frame" x="72" y="318" width="231" height="31.5"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="26"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="aQQ-J3-9Lk" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="VDk-Q7-CIX"/>
|
||||
<constraint firstItem="aQQ-J3-9Lk" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="a55-Us-sA1"/>
|
||||
</constraints>
|
||||
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
|
||||
</view>
|
||||
</viewController>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14109" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="49e-Tb-3d3">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14113" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="49e-Tb-3d3">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
@@ -18,10 +18,13 @@
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="618"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="3Wr-qB-Pyg">
|
||||
<rect key="frame" x="150" y="167" width="74" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="3Wr-qB-Pyg">
|
||||
<rect key="frame" x="147.5" y="162" width="80" height="32"/>
|
||||
<color key="backgroundColor" red="0.94117647058823528" green="0.94117647058823528" blue="0.95983767649706664" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="32" id="Vbs-En-ncY"/>
|
||||
<constraint firstAttribute="width" constant="80" id="YcO-s3-cGD"/>
|
||||
</constraints>
|
||||
<state key="normal" title="RUN">
|
||||
<color key="titleColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</state>
|
||||
@@ -32,10 +35,13 @@
|
||||
<action selector="runAction:" destination="9pv-A4-QxB" eventType="touchUpInside" id="cfm-2r-5CD"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0OP-Pr-kwN">
|
||||
<rect key="frame" x="120" y="234" width="134" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0OP-Pr-kwN">
|
||||
<rect key="frame" x="122.5" y="224" width="130" height="32"/>
|
||||
<color key="backgroundColor" red="0.94117647058823528" green="0.94117647058823528" blue="0.96078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="130" id="85g-G9-Rc6"/>
|
||||
<constraint firstAttribute="height" constant="32" id="Qzz-p8-cYE"/>
|
||||
</constraints>
|
||||
<state key="normal" title="RUN ASYNC">
|
||||
<color key="titleColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</state>
|
||||
@@ -48,24 +54,27 @@
|
||||
<action selector="runAsyncAction:" destination="9pv-A4-QxB" eventType="touchUpInside" id="Bg4-6K-Mnn"/>
|
||||
</connections>
|
||||
</button>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="MobileFFmpegTest" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4qP-Cg-LeP">
|
||||
<rect key="frame" x="0.0" y="20" width="375" height="48"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="MobileFFmpegTest" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4qP-Cg-LeP">
|
||||
<rect key="frame" x="0.0" y="20" width="375" height="50"/>
|
||||
<color key="backgroundColor" red="0.95686274509803915" green="0.40784313725490196" blue="0.25882352941176467" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="50" id="e4q-j1-NcS"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="18"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<textField opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter command" textAlignment="natural" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="WEh-8G-EBV">
|
||||
<rect key="frame" x="16" y="103" width="343" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter command" textAlignment="natural" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="WEh-8G-EBV">
|
||||
<rect key="frame" x="20" y="100" width="335" height="32"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="32" id="0at-Ak-O3K"/>
|
||||
</constraints>
|
||||
<nil key="textColor"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits" autocorrectionType="no"/>
|
||||
</textField>
|
||||
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" editable="NO" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="gqc-19-yb3">
|
||||
<rect key="frame" x="16" y="311" width="343" height="206"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="gqc-19-yb3">
|
||||
<rect key="frame" x="30" y="286" width="315" height="292"/>
|
||||
<color key="backgroundColor" red="0.94117647058823528" green="0.94117647058823528" blue="0.96078431372549022" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<accessibility key="accessibilityConfiguration" hint="Run output"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="15"/>
|
||||
@@ -73,6 +82,23 @@
|
||||
</textView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="4qP-Cg-LeP" firstAttribute="leading" secondItem="PQr-Ze-W5v" secondAttribute="leading" id="7gl-9L-D3r"/>
|
||||
<constraint firstItem="3Wr-qB-Pyg" firstAttribute="top" secondItem="WEh-8G-EBV" secondAttribute="bottom" constant="30" id="Bv6-sf-pUr"/>
|
||||
<constraint firstItem="WEh-8G-EBV" firstAttribute="leading" secondItem="PQr-Ze-W5v" secondAttribute="leading" constant="20" id="E3u-aH-GtI"/>
|
||||
<constraint firstItem="0OP-Pr-kwN" firstAttribute="top" secondItem="3Wr-qB-Pyg" secondAttribute="bottom" constant="30" id="GkN-Nr-WQa"/>
|
||||
<constraint firstItem="PQr-Ze-W5v" firstAttribute="trailing" secondItem="gqc-19-yb3" secondAttribute="trailing" constant="30" id="Mys-Te-4uL"/>
|
||||
<constraint firstItem="PQr-Ze-W5v" firstAttribute="trailing" secondItem="WEh-8G-EBV" secondAttribute="trailing" constant="20" id="PIj-KG-iAW"/>
|
||||
<constraint firstItem="WEh-8G-EBV" firstAttribute="centerX" secondItem="tsR-hK-woN" secondAttribute="centerX" id="PRt-sv-OK2"/>
|
||||
<constraint firstItem="PQr-Ze-W5v" firstAttribute="trailing" secondItem="4qP-Cg-LeP" secondAttribute="trailing" id="VHT-1r-TBX"/>
|
||||
<constraint firstItem="WEh-8G-EBV" firstAttribute="top" secondItem="4qP-Cg-LeP" secondAttribute="bottom" constant="30" id="Zvk-1n-ESj"/>
|
||||
<constraint firstItem="gqc-19-yb3" firstAttribute="top" secondItem="0OP-Pr-kwN" secondAttribute="bottom" constant="30" id="cDP-cF-D1P"/>
|
||||
<constraint firstItem="0OP-Pr-kwN" firstAttribute="centerX" secondItem="tsR-hK-woN" secondAttribute="centerX" id="lmB-Bh-3Nn"/>
|
||||
<constraint firstItem="3Wr-qB-Pyg" firstAttribute="centerX" secondItem="tsR-hK-woN" secondAttribute="centerX" id="m2k-Ls-BYK"/>
|
||||
<constraint firstItem="4qP-Cg-LeP" firstAttribute="top" secondItem="PQr-Ze-W5v" secondAttribute="top" id="mZt-c4-Cxz"/>
|
||||
<constraint firstItem="gqc-19-yb3" firstAttribute="leading" secondItem="PQr-Ze-W5v" secondAttribute="leading" constant="30" id="vS2-Q3-ZQt"/>
|
||||
<constraint firstItem="PQr-Ze-W5v" firstAttribute="bottom" secondItem="gqc-19-yb3" secondAttribute="bottom" constant="40" id="z6D-kO-sGE"/>
|
||||
</constraints>
|
||||
<viewLayoutGuide key="safeArea" id="PQr-Ze-W5v"/>
|
||||
</view>
|
||||
<tabBarItem key="tabBarItem" title="COMMAND" id="acW-dT-cKf">
|
||||
@@ -95,34 +121,23 @@
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="618"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="MobileFFmpegTest" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qjq-ds-G4r">
|
||||
<rect key="frame" x="0.0" y="20" width="375" height="48"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="MobileFFmpegTest" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qjq-ds-G4r">
|
||||
<rect key="frame" x="0.0" y="20" width="375" height="50"/>
|
||||
<color key="backgroundColor" red="0.95686274510000002" green="0.40784313729999999" blue="0.25882352939999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="50" id="xbI-E1-tqj"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="18"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="z7Q-Af-rbI">
|
||||
<rect key="frame" x="143" y="106" width="88" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" red="0.94117647058823528" green="0.94117647058823528" blue="0.96078431372549022" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<state key="normal" title="CREATE">
|
||||
<color key="titleColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</state>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="5"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="createClicked:" destination="8rJ-Kc-sve" eventType="touchUpInside" id="j6x-48-z6z"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="V9L-Av-PAz">
|
||||
<rect key="frame" x="148" y="180" width="78" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="V9L-Av-PAz">
|
||||
<rect key="frame" x="152.5" y="162" width="70" height="32"/>
|
||||
<color key="backgroundColor" red="0.94117647058823528" green="0.94117647058823528" blue="0.96078431372549022" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="32" id="QWb-N2-T0Y"/>
|
||||
<constraint firstAttribute="width" constant="70" id="b3j-fF-W6Z"/>
|
||||
</constraints>
|
||||
<state key="normal" title="PLAY">
|
||||
<color key="titleColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</state>
|
||||
@@ -135,16 +150,59 @@
|
||||
<action selector="playClicked:" destination="8rJ-Kc-sve" eventType="touchUpInside" id="p3A-ql-6av"/>
|
||||
</connections>
|
||||
</button>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="suo-Ve-dkM">
|
||||
<rect key="frame" x="16" y="305" width="343" height="164"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="suo-Ve-dkM">
|
||||
<rect key="frame" x="20" y="284" width="335" height="304"/>
|
||||
<color key="backgroundColor" red="0.94117647058823528" green="0.94117647058823528" blue="0.96078431372549022" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="z7Q-Af-rbI">
|
||||
<rect key="frame" x="147.5" y="100" width="80" height="32"/>
|
||||
<color key="backgroundColor" red="0.94117647058823528" green="0.94117647058823528" blue="0.96078431372549022" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="80" id="6F7-uT-WDk"/>
|
||||
<constraint firstAttribute="height" constant="32" id="NXC-JW-nHT"/>
|
||||
</constraints>
|
||||
<state key="normal" title="CREATE">
|
||||
<color key="titleColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</state>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="5"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="createClicked:" destination="8rJ-Kc-sve" eventType="touchUpInside" id="j6x-48-z6z"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter video codec" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="ddh-VM-R4H">
|
||||
<rect key="frame" x="107.5" y="224" width="160" height="30"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="X9y-aG-itF"/>
|
||||
<constraint firstAttribute="height" constant="30" id="ofm-IT-iAC"/>
|
||||
</constraints>
|
||||
<nil key="textColor"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits"/>
|
||||
</textField>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="z7Q-Af-rbI" firstAttribute="top" secondItem="qjq-ds-G4r" secondAttribute="bottom" constant="30" id="7T7-6j-sV2"/>
|
||||
<constraint firstItem="V9L-Av-PAz" firstAttribute="top" secondItem="z7Q-Af-rbI" secondAttribute="bottom" constant="30" id="AKe-ol-KwW"/>
|
||||
<constraint firstItem="O1u-W8-tvY" firstAttribute="bottom" secondItem="suo-Ve-dkM" secondAttribute="bottom" constant="30" id="BIg-Tm-yph"/>
|
||||
<constraint firstItem="ddh-VM-R4H" firstAttribute="top" secondItem="V9L-Av-PAz" secondAttribute="bottom" constant="30" id="EN5-Od-oG6"/>
|
||||
<constraint firstItem="qjq-ds-G4r" firstAttribute="leading" secondItem="O1u-W8-tvY" secondAttribute="leading" id="Sny-N7-eZP"/>
|
||||
<constraint firstItem="suo-Ve-dkM" firstAttribute="leading" secondItem="O1u-W8-tvY" secondAttribute="leading" constant="20" id="cng-gg-fht"/>
|
||||
<constraint firstItem="ddh-VM-R4H" firstAttribute="centerX" secondItem="QS5-Rx-YEW" secondAttribute="centerX" id="f5w-1J-1gC"/>
|
||||
<constraint firstItem="O1u-W8-tvY" firstAttribute="trailing" secondItem="suo-Ve-dkM" secondAttribute="trailing" constant="20" id="gXh-zm-iTa"/>
|
||||
<constraint firstItem="qjq-ds-G4r" firstAttribute="trailing" secondItem="O1u-W8-tvY" secondAttribute="trailing" id="lSL-yl-ipy"/>
|
||||
<constraint firstItem="V9L-Av-PAz" firstAttribute="centerX" secondItem="QS5-Rx-YEW" secondAttribute="centerX" id="mKc-7z-fCq"/>
|
||||
<constraint firstItem="suo-Ve-dkM" firstAttribute="top" secondItem="ddh-VM-R4H" secondAttribute="bottom" constant="30" id="mzH-9U-qVa"/>
|
||||
<constraint firstItem="z7Q-Af-rbI" firstAttribute="centerX" secondItem="QS5-Rx-YEW" secondAttribute="centerX" id="sTb-cb-Z80"/>
|
||||
<constraint firstItem="qjq-ds-G4r" firstAttribute="top" secondItem="O1u-W8-tvY" secondAttribute="top" id="xBN-XP-eBu"/>
|
||||
</constraints>
|
||||
<viewLayoutGuide key="safeArea" id="O1u-W8-tvY"/>
|
||||
</view>
|
||||
<tabBarItem key="tabBarItem" title="SLIDESHOW" id="cPa-gy-q4n" userLabel="Slideshow">
|
||||
@@ -152,12 +210,13 @@
|
||||
</tabBarItem>
|
||||
<connections>
|
||||
<outlet property="playButton" destination="V9L-Av-PAz" id="1Yf-9P-e7v"/>
|
||||
<outlet property="videoCodecText" destination="ddh-VM-R4H" id="5MA-AT-gYX"/>
|
||||
<outlet property="videoPlayerBox" destination="suo-Ve-dkM" id="Cff-E9-QYS"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="4Nw-L8-lE0" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="749.60000000000002" y="371.96401799100454"/>
|
||||
<point key="canvasLocation" x="749.27536231884062" y="371.73913043478262"/>
|
||||
</scene>
|
||||
<!--Tab Bar Controller-->
|
||||
<scene sceneID="yl2-sM-qoP">
|
||||
|
||||
@@ -24,10 +24,13 @@
|
||||
#import <AVKit/AVKit.h>
|
||||
#import <mobileffmpeg/mobileffmpeg.h>
|
||||
|
||||
NSString * const DEFAULT_VIDEO_CODEC = @"mpeg4";
|
||||
|
||||
@interface SecondViewController ()
|
||||
|
||||
@property (strong, nonatomic) IBOutlet UILabel *videoPlayerBox;
|
||||
@property (strong, nonatomic) IBOutlet UIButton *playButton;
|
||||
@property (strong, nonatomic) IBOutlet UITextField *videoCodecText;
|
||||
|
||||
@end
|
||||
|
||||
@@ -39,6 +42,9 @@
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
|
||||
// SET DEFAULT TEXT
|
||||
[[self videoCodecText] setText: DEFAULT_VIDEO_CODEC];
|
||||
|
||||
// DISABLE PLAY BUTTON
|
||||
[[self playButton] setEnabled:FALSE];
|
||||
@@ -73,8 +79,14 @@
|
||||
}
|
||||
|
||||
[[NSFileManager defaultManager] removeItemAtPath:videoFile error:NULL];
|
||||
NSString *videoCodec = [[self videoCodecText] text];
|
||||
if (videoCodec == nil || [videoCodec length] == 0) {
|
||||
videoCodec = DEFAULT_VIDEO_CODEC;
|
||||
}
|
||||
|
||||
NSString* slideshowCommand = [self generateSlideshowScript:image1:image2:image3:videoFile];
|
||||
NSLog(@"Creating slideshow using video codec: %@\n", videoCodec);
|
||||
|
||||
NSString* slideshowCommand = [self generateSlideshowScript:image1:image2:image3:videoFile:videoCodec];
|
||||
|
||||
[self loadProgressDialog:@"Creating video slideshow\n\n"];
|
||||
|
||||
@@ -126,7 +138,7 @@
|
||||
[player play];
|
||||
}
|
||||
|
||||
- (NSString *) generateSlideshowScript:(NSString *)image1 :(NSString *)image2 :(NSString *)image3 :(NSString *)videoFile {
|
||||
- (NSString *) generateSlideshowScript:(NSString *)image1 :(NSString *)image2 :(NSString *)image3 :(NSString *)videoFile :(NSString *)videoCodec {
|
||||
return [NSString stringWithFormat:
|
||||
@"-loop 1 -i %@ \
|
||||
-loop 1 -i %@ \
|
||||
@@ -144,7 +156,7 @@
|
||||
[stream2starting][stream1ending]blend=all_expr=\'if(gte(X,(W/2)*T/1)*lte(X,W-(W/2)*T/1),B,A)\':shortest=1[stream2blended];\
|
||||
[stream3starting][stream2ending]blend=all_expr=\'if(gte(X,(W/2)*T/1)*lte(X,W-(W/2)*T/1),B,A)\':shortest=1[stream3blended];\
|
||||
[stream1overlaid][stream2blended][stream2overlaid][stream3blended][stream3overlaid]concat=n=5:v=1:a=0,format=yuv420p[video] \
|
||||
-map [video] -vsync 2 -async 1 -c:v mpeg4 -r 30 %@", image1, image2, image3, videoFile];
|
||||
-map [video] -vsync 2 -async 1 -c:v %@ -r 30 %@", image1, image2, image3, videoCodec, videoFile];
|
||||
}
|
||||
|
||||
- (void)loadProgressDialog:(NSString*) dialogMessage {
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
platform :ios, '8.0'
|
||||
|
||||
use_frameworks!
|
||||
|
||||
target "MobileFFmpegTest" do
|
||||
pod 'mobile-ffmpeg-full', '~> 1.2'
|
||||
end
|
||||
@@ -0,0 +1,16 @@
|
||||
PODS:
|
||||
- mobile-ffmpeg-full (1.2)
|
||||
|
||||
DEPENDENCIES:
|
||||
- mobile-ffmpeg-full (~> 1.2)
|
||||
|
||||
SPEC REPOS:
|
||||
https://github.com/cocoapods/specs.git:
|
||||
- mobile-ffmpeg-full
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
mobile-ffmpeg-full: ec899dc6429f90601ccadf6dbe555a920807f231
|
||||
|
||||
PODFILE CHECKSUM: e71a0e0713180c5304f217b8a1ccf7dcf3c06e16
|
||||
|
||||
COCOAPODS: 1.6.0.beta.1
|
||||
@@ -3,25 +3,25 @@
|
||||
The cmake based buildsystem for expat works on Windows (cygwin, mingw, Visual
|
||||
Studio) and should work on all other platform cmake supports.
|
||||
|
||||
Assuming ~/expat-2.2.5 is the source directory of expat, add a subdirectory
|
||||
Assuming ~/expat-2.2.6 is the source directory of expat, add a subdirectory
|
||||
build and change into that directory:
|
||||
~/expat-2.2.5$ mkdir build && cd build
|
||||
~/expat-2.2.5/build$
|
||||
~/expat-2.2.6$ mkdir build && cd build
|
||||
~/expat-2.2.6/build$
|
||||
|
||||
From that directory, call cmake first, then call make, make test and
|
||||
make install in the usual way:
|
||||
~/expat-2.2.5/build$ cmake ..
|
||||
~/expat-2.2.6/build$ cmake ..
|
||||
-- The C compiler identification is GNU
|
||||
-- The CXX compiler identification is GNU
|
||||
....
|
||||
-- Configuring done
|
||||
-- Generating done
|
||||
-- Build files have been written to: /home/patrick/expat-2.2.5/build
|
||||
-- Build files have been written to: /home/patrick/expat-2.2.6/build
|
||||
|
||||
If you want to specify the install location for your files, append
|
||||
-DCMAKE_INSTALL_PREFIX=/your/install/path to the cmake call.
|
||||
|
||||
~/expat-2.2.5/build$ make && make test && make install
|
||||
~/expat-2.2.6/build$ make && make test && make install
|
||||
Scanning dependencies of target expat
|
||||
[ 5%] Building C object CMakeFiles/expat.dir/lib/xmlparse.c.o
|
||||
[ 11%] Building C object CMakeFiles/expat.dir/lib/xmlrole.c.o
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user