FFMPEG 3.2.10 installation procedure for Android NDK r14b for Linux Ubuntu14.04
There are 2 important steps.
1 Build the FFMPEG for android arm armeabi architecture with Linux.
The 2nd part is to install the library on android and verify
-------------------- Step 1 Build FFMPEG from Linux to Arm -----------------------
[1] Reference http://www.roman10.net/2013/08/18/how-to-build-ffmpeg-with-ndk-r9/
Step 2) Reference
[2.1] https://juejin.im/entry/5975a5006fb9a06bc06a8e2a
[2.2] https://github.com/wanliyang1990/FFmpeg-Android/tree/master/FFmpegPro
My sistem is Mint 17 Linux, which is Ubuntu14.04 , Android Studio 3.2 My NDK is installed at $HOME/Android
---------------- Step 1. ----------------
Please see Reference [1] together.
1. Define $NDK environment variable $export NDK=$HOME/Android/Ndk
2. Download and place FFMPEG 3.2.10 at $NDK/sources
3. cd $NDK/sources/ffmpeg-3.2.10
4. change the configure file's following variable to the following value
5. create build.sh and copy-paste to it the following code
$./build.sh
7. Check the build cd $NDK/sources/ffmpeg-3.2.10/android/arm/lib ls You should see a lot of .so libraries
-----------Step 2----- Android ------------
1. Follow steps in Ref[2.1] These steps are nothing but to create a hello C++ world for NDK.
2) Detail of CMakeLists.txt
cmake_minimum_required(VERSION 3.4.1)
# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.
include_directories(src/main/jni/ffmpeg/include)
add_library( # Sets the name of the library.
FFmpegPro
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/FFmpegPro.c )
#添加libavcodec-57.so
add_library( avcodec-57
SHARED
IMPORTED)
set_target_properties( avcodec-57
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/src/main/jni/ffmpeg/armeabi/libavcodec-57.so)
#添加libavdevice-57.so
add_library( avdevice-57
SHARED
IMPORTED)
set_target_properties( avdevice-57
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/src/main/jni/ffmpeg/armeabi/libavdevice-57.so)
add_library( avfilter-6
SHARED
IMPORTED)
set_target_properties( avfilter-6
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/src/main/jni/ffmpeg/armeabi/libavfilter-6.so)
add_library( avformat-57
SHARED
IMPORTED)
set_target_properties( avformat-57
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/src/main/jni/ffmpeg/armeabi/libavformat-57.so)
add_library( avutil-55
SHARED
IMPORTED)
set_target_properties( avutil-55
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/src/main/jni/ffmpeg/armeabi/libavutil-55.so)
add_library( swresample-2
SHARED
IMPORTED)
set_target_properties( swresample-2
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/src/main/jni/ffmpeg/armeabi/libswresample-2.so)
add_library( swscale-4
SHARED
IMPORTED)
set_target_properties( swscale-4
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/src/main/jni/ffmpeg/armeabi/libswscale-4.so)
add_library( postproc-54
SHARED
IMPORTED)
set_target_properties( postproc-54
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/src/main/jni/ffmpeg/armeabi/libpostproc-54.so)
# Searches for a specified prebuilt library and stores the path as a
# variable. Because CMake includes system libraries in the search path by
# default, you only need to specify the name of the public NDK library
# you want to add. CMake verifies that the library exists before
# completing its build.
find_library( # Sets the name of the path variable.
log-lib
# Specifies the name of the NDK library that
# you want CMake to locate.
log )
# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in this
# build script, prebuilt third-party libraries, or system libraries.
target_link_libraries( # Specifies the target library.
FFmpegPro
avcodec-57
avdevice-57
avfilter-6
avformat-57
avutil-55
swresample-2
swscale-4
# Links the target library to the log library
# included in the NDK.
${log-lib} )
3) cd $ANDROID_PROJECT_ROOT/app/src/main
mkdir -p jni/ffmpeg
cd jni/ffmpeg
cp -r $NDK/sources/ffmpeg-3.2.10/android/arm/include .
mkdir armeabi
cd armeabi
cp -r $NDK/sources/ffmpeg-3.2.10/android/arm/lib/*.so .
Check that
$ app/src/main/jni/ffmpeg $ ls
armeabi include
4. Add new C++ source file to the project. Right Click at cpp folder on Android Studio Android project view and Click add new C++ source file. Name this file FFmpegPro.c. Put the following code inside FFmpegPro.c
#include "com_ywl5320_ffmpegpro_FFmplayer.h"
#include "../jni/ffmpeg/include/libavutil/avutil.h"
#include "../jni/ffmpeg/include/libavcodec/avcodec.h"
#include "../jni/ffmpeg/include/libavformat/avformat.h"
/* ffmpeg库
#include "libavformat/avformat.h"
#include "libavcodec/avcodec.h"
#include "libavutil/avutil.h"
*/
//打印日志
#include <android/log.h>
#define LOGI(FORMAT,...) __android_log_print(ANDROID_LOG_INFO,"ywl5320",FORMAT,##__VA_ARGS__);
#define LOGE(FORMAT,...) __android_log_print(ANDROID_LOG_ERROR,"ywl5320",FORMAT,##__VA_ARGS__);
JNIEXPORT void JNICALL
Java_ywl5320_com_ffmpegpro_FFmpegPlayer_showFFmpegInfo(JNIEnv *env, jobject instance) {
// TODO
}
JNIEXPORT void JNICALL
Java_ywl5320_com_ffmpegpro_FFmpegPlayer_playMyMedia(JNIEnv *env, jobject instance, jstring url_) {
const char *url = (*env)->GetStringUTFChars(env, url_, 0);
// TODO
LOGI("url:%s", url);
av_register_all();
AVCodec *c_temp = av_codec_next(NULL);
while (c_temp != NULL)
{
switch (c_temp->type)
{
case AVMEDIA_TYPE_VIDEO:
LOGI("[Video]:%s", c_temp->name);
break;
case AVMEDIA_TYPE_AUDIO:
LOGI("[Audio]:%s", c_temp->name);
break;
default:
LOGI("[Other]:%s", c_temp->name);
break;
}
c_temp = c_temp->next;
}
// TODO
(*env)->ReleaseStringUTFChars(env, url_, url);
}
5. Create a new file called com_ywl5320_ffmpegpro_FFmplayer.h
copy the following code to the .h file
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_ywl5320_ffmpegpro_FFmplayer */
#ifndef _Included_com_ywl5320_ffmpegpro_FFmplayer
#define _Included_com_ywl5320_ffmpegpro_FFmplayer
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_ywl5320_ffmpegpro_FFmplayer
* Method: showFFmpegInfo
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_ywl5320_ffmpegpro_FFmplayer_showFFmpegInfo
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
6. Add new java class. Name it FFmpegPlayer. The class code is
1 Build the FFMPEG for android arm armeabi architecture with Linux.
The 2nd part is to install the library on android and verify
-------------------- Step 1 Build FFMPEG from Linux to Arm -----------------------
[1] Reference http://www.roman10.net/2013/08/18/how-to-build-ffmpeg-with-ndk-r9/
Step 2) Reference
[2.1] https://juejin.im/entry/5975a5006fb9a06bc06a8e2a
[2.2] https://github.com/wanliyang1990/FFmpeg-Android/tree/master/FFmpegPro
My sistem is Mint 17 Linux, which is Ubuntu14.04 , Android Studio 3.2 My NDK is installed at $HOME/Android
---------------- Step 1. ----------------
Please see Reference [1] together.
1. Define $NDK environment variable $export NDK=$HOME/Android/Ndk
2. Download and place FFMPEG 3.2.10 at $NDK/sources
3. cd $NDK/sources/ffmpeg-3.2.10
4. change the configure file's following variable to the following value
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'
5. create build.sh and copy-paste to it the following code
NDK=$HOME/Desktop/adt/android-ndk-r9
SYSROOT=$NDK/platforms/android-9/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
function build_one
{
./configure
--prefix=$PREFIX
--enable-shared
--disable-static
--disable-doc
--disable-ffmpeg
--disable-ffplay
--disable-ffprobe
--disable-ffserver
--disable-avdevice
--disable-doc
--disable-symver
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi-
--target-os=linux
--arch=arm
--enable-cross-compile
--sysroot=$SYSROOT
--extra-cflags="-Os -fpic $ADDI_CFLAGS"
--extra-ldflags="$ADDI_LDFLAGS"
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one
6. compile. It can take a while, around 10 mins in my computer. If done correctly, you should see a lot of CC lines without error.
$./build.sh
7. Check the build cd $NDK/sources/ffmpeg-3.2.10/android/arm/lib ls You should see a lot of .so libraries
-----------Step 2----- Android ------------
1. Follow steps in Ref[2.1] These steps are nothing but to create a hello C++ world for NDK.
2) Detail of CMakeLists.txt
cmake_minimum_required(VERSION 3.4.1)
# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.
include_directories(src/main/jni/ffmpeg/include)
add_library( # Sets the name of the library.
FFmpegPro
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/FFmpegPro.c )
#添加libavcodec-57.so
add_library( avcodec-57
SHARED
IMPORTED)
set_target_properties( avcodec-57
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/src/main/jni/ffmpeg/armeabi/libavcodec-57.so)
#添加libavdevice-57.so
add_library( avdevice-57
SHARED
IMPORTED)
set_target_properties( avdevice-57
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/src/main/jni/ffmpeg/armeabi/libavdevice-57.so)
add_library( avfilter-6
SHARED
IMPORTED)
set_target_properties( avfilter-6
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/src/main/jni/ffmpeg/armeabi/libavfilter-6.so)
add_library( avformat-57
SHARED
IMPORTED)
set_target_properties( avformat-57
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/src/main/jni/ffmpeg/armeabi/libavformat-57.so)
add_library( avutil-55
SHARED
IMPORTED)
set_target_properties( avutil-55
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/src/main/jni/ffmpeg/armeabi/libavutil-55.so)
add_library( swresample-2
SHARED
IMPORTED)
set_target_properties( swresample-2
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/src/main/jni/ffmpeg/armeabi/libswresample-2.so)
add_library( swscale-4
SHARED
IMPORTED)
set_target_properties( swscale-4
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/src/main/jni/ffmpeg/armeabi/libswscale-4.so)
add_library( postproc-54
SHARED
IMPORTED)
set_target_properties( postproc-54
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/src/main/jni/ffmpeg/armeabi/libpostproc-54.so)
# Searches for a specified prebuilt library and stores the path as a
# variable. Because CMake includes system libraries in the search path by
# default, you only need to specify the name of the public NDK library
# you want to add. CMake verifies that the library exists before
# completing its build.
find_library( # Sets the name of the path variable.
log-lib
# Specifies the name of the NDK library that
# you want CMake to locate.
log )
# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in this
# build script, prebuilt third-party libraries, or system libraries.
target_link_libraries( # Specifies the target library.
FFmpegPro
avcodec-57
avdevice-57
avfilter-6
avformat-57
avutil-55
swresample-2
swscale-4
# Links the target library to the log library
# included in the NDK.
${log-lib} )
3) cd $ANDROID_PROJECT_ROOT/app/src/main
mkdir -p jni/ffmpeg
cd jni/ffmpeg
cp -r $NDK/sources/ffmpeg-3.2.10/android/arm/include .
mkdir armeabi
cd armeabi
cp -r $NDK/sources/ffmpeg-3.2.10/android/arm/lib/*.so .
Check that
$ app/src/main/jni/ffmpeg $ ls
armeabi include
4. Add new C++ source file to the project. Right Click at cpp folder on Android Studio Android project view and Click add new C++ source file. Name this file FFmpegPro.c. Put the following code inside FFmpegPro.c
#include "com_ywl5320_ffmpegpro_FFmplayer.h"
#include "../jni/ffmpeg/include/libavutil/avutil.h"
#include "../jni/ffmpeg/include/libavcodec/avcodec.h"
#include "../jni/ffmpeg/include/libavformat/avformat.h"
/* ffmpeg库
#include "libavformat/avformat.h"
#include "libavcodec/avcodec.h"
#include "libavutil/avutil.h"
*/
//打印日志
#include <android/log.h>
#define LOGI(FORMAT,...) __android_log_print(ANDROID_LOG_INFO,"ywl5320",FORMAT,##__VA_ARGS__);
#define LOGE(FORMAT,...) __android_log_print(ANDROID_LOG_ERROR,"ywl5320",FORMAT,##__VA_ARGS__);
JNIEXPORT void JNICALL
Java_ywl5320_com_ffmpegpro_FFmpegPlayer_showFFmpegInfo(JNIEnv *env, jobject instance) {
// TODO
}
JNIEXPORT void JNICALL
Java_ywl5320_com_ffmpegpro_FFmpegPlayer_playMyMedia(JNIEnv *env, jobject instance, jstring url_) {
const char *url = (*env)->GetStringUTFChars(env, url_, 0);
// TODO
LOGI("url:%s", url);
av_register_all();
AVCodec *c_temp = av_codec_next(NULL);
while (c_temp != NULL)
{
switch (c_temp->type)
{
case AVMEDIA_TYPE_VIDEO:
LOGI("[Video]:%s", c_temp->name);
break;
case AVMEDIA_TYPE_AUDIO:
LOGI("[Audio]:%s", c_temp->name);
break;
default:
LOGI("[Other]:%s", c_temp->name);
break;
}
c_temp = c_temp->next;
}
// TODO
(*env)->ReleaseStringUTFChars(env, url_, url);
}
5. Create a new file called com_ywl5320_ffmpegpro_FFmplayer.h
copy the following code to the .h file
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_ywl5320_ffmpegpro_FFmplayer */
#ifndef _Included_com_ywl5320_ffmpegpro_FFmplayer
#define _Included_com_ywl5320_ffmpegpro_FFmplayer
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_ywl5320_ffmpegpro_FFmplayer
* Method: showFFmpegInfo
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_ywl5320_ffmpegpro_FFmplayer_showFFmpegInfo
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
6. Add new java class. Name it FFmpegPlayer. The class code is
public class FFmpegPlayer { static { System.loadLibrary("avutil-55"); System.loadLibrary("swresample-2"); System.loadLibrary("avcodec-57"); System.loadLibrary("avformat-57"); System.loadLibrary("swscale-4"); //System.loadLibrary("postproc-54"); System.loadLibrary("avfilter-6"); System.loadLibrary("avdevice-57"); System.loadLibrary("FFmpegPro"); } public native void showFFmpegInfo(); public native void playMyMedia(String url); }
7. Build the android project to see the expected exeption
FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:externalNativeBuildDebug'. > Build command failed. Error while executing process /working3/siit/android/Android/Sdk/cmake/3.6.4111459/bin/cmake with arguments {--build /working3/siit/android/AndroidStudioProjects/MyCompilePassFFMPEGonAndroid/app/.externalNativeBuild/cmake/debug/arm64-v8a --target FFmpegPro} ninja: error: '../../../../src/main/jni/ffmpeg/armeabi/libavcodec-57.so', needed by '../../../../build/intermediates/cmake/debug/obj/arm64-v8a/libFFmpegPro.so', missing and no known rule to make it
8. Compare yourself your module gradle with the following code. Those values in externalNativeBuild can solve 7.
Check the cmake{} ndk{} , and sourceSets{}
android { compileSdkVersion 27 defaultConfig { applicationId "ywl5320.com.ffmpegpro" minSdkVersion 23 targetSdkVersion 27 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" externalNativeBuild { cmake { cppFlags "" } ndk { abiFilters "armeabi" } } sourceSets { main { jniLibs.srcDirs = ['src/main/jni/ffmpeg'] } } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } externalNativeBuild { cmake { path "CMakeLists.txt" } } }
9. Main Acvitity
public class MainActivity extends AppCompatActivity { FFmpegPlayer fFmpegPlayer; // Used to load the 'native-lib' library on application startup. static { System.loadLibrary("avutil-55"); System.loadLibrary("swresample-2"); System.loadLibrary("avcodec-57"); System.loadLibrary("avformat-57"); System.loadLibrary("swscale-4"); System.loadLibrary("avfilter-6"); System.loadLibrary("avdevice-57"); System.loadLibrary("FFmpegPro"); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Example of a call to a native method fFmpegPlayer = new FFmpegPlayer(); fFmpegPlayer.playMyMedia("http://blog.csdn.net/ywl5320"); } }
10. compile and run on real mobile phone. If you see in the log cat the following line. You are done. Successfully
[Video]:a64multi5 [Video]:aasc [Video]:aic [Video]:alias_pix [Video]:alias_pix [Video]:amv [Video]:amv [Video]:anm [Video]:ansi [Video]:apng [Video]:apng [Video]:asv1 [Video]:asv1 [Video]:asv2 [Video]:asv2 [Video]:aura [Video]:aura2 [Video]:avrp [Video]:avrp [Video]:avrn [Video]:avs [Video]:avui [Video]:avui [Video]:ayuv [Video]:ayuv [Video]:bethsoftvid [Video]:bfi [Video]:binkvideo [Video]:bmp [Video]:bmp [Video]:bmv_video [Video]:brender_pix [Video]:c93 [Video]:cavs [Video]:cdgraphics [Video]:cdxl [Video]:cfhd [Video]:cinepak [Video]:cinepak [Video]:cljr [Video]:cljr [Video]:cllc [Audio]:comfortnoise [Audio]:comfortnoise [Video]:cpia [Video]:camstudio [Video]:cyuv [Video]:dds [Video]:dfa [Video]:dirac [Video]:dnxhd [Video]:dnxhd [Video]:dpx [Video]:dpx [Video]:dsicinvideo [Audio]:dvaudio [Video]:dvvideo [Video]:dvvideo [Video]:dxa [Video]:dxtory [Video]:dxv [Video]:eacmv [Video]:eamad [Video]:eatgq [Video]:eatgv [Video]:eatqi [Video]:8bps [Audio]:8svx_exp [Audio]:8svx_fib [Video]:escape124 [Video]:escape130 [Video]:exr [Video]:ffv1 [Video]:ffv1 [Video]:ffvhuff [Video]:ffvhuff [Video]:fic [Video]:flashsv [Video]:flashsv [Video]:flashsv2 [Video]:flashsv2 [Video]:flic [Video]:flv [Video]:flv [Video]:4xm [Video]:fraps [Video]:frwu [Video]:g2m [Video]:gif [Video]:gif [Video]:h261 [Video]:h261 [Video]:h263 [Video]:h263 [Video]:h263i [Video]:h263p [Video]:h263p [Video]:h264 [Video]:hap [Video]:hevc [Video]:hnm4video [Video]:hq_hqa [Video]:hqx [Video]:huffyuv [Video]:huffyuv [Video]:idcinvideo [Video]:iff [Video]:indeo2 [Video]:indeo3 [Video]:indeo4 [Video]:indeo5 [Video]:interplayvideo [Video]:jpeg2000 [Video]:jpeg2000 [Video]:jpegls [Video]:jpegls [Video]:jv [Video]:kgv1 [Video]:kmvc [Video]:lagarith [Video]:ljpeg [Video]:loco [Video]:m101 [Video]:magicyuv [Video]:mdec [Video]:mimic [Video]:mjpeg [Video]:mjpeg [Video]:mjpegb [Video]:mmvideo [Video]:motionpixels [Video]:mpeg1video [Video]:mpeg1video [Video]:mpeg2video [Video]:mpeg2video [Video]:mpeg4 [Video]:mpeg4 [Video]:mpegvideo [Video]:msa1 [Video]:msmpeg4v1 [Video]:msmpeg4v2 [Video]:msmpeg4v2 [Video]:msmpeg4 [Video]:msmpeg4 [Video]:msrle [Video]:mss1 [Video]:mss2 [Video]:msvideo1 [Video]:msvideo1 [Video]:mszh [Video]:mts2 [Video]:mvc1 [Video]:mvc2 [Video]:mxpeg [Video]:nuv [Video]:paf_video [Video]:pam [Video]:pam [Video]:pbm [Video]:pbm [Video]:pcx [Video]:pcx [Video]:pgm [Video]:pgm [Video]:pgmyuv [Video]:pgmyuv [Video]:pictor [Video]:png [Video]:png [Video]:ppm [Video]:ppm [Video]:prores [Video]:prores [Video]:prores_aw [Video]:prores_ks [Video]:prores_lgpl [Video]:ptx [Video]:qdraw [Video]:qpeg [Video]:qtrle [Video]:qtrle [Video]:r10k [Video]:r10k [Video]:r210 [Video]:r210 [Video]:rawvideo [Video]:rawvideo [Video]:rl2 [Video]:roqvideo [Video]:roqvideo [Video]:rpza [Video]:rscc [Video]:rv10 [Video]:rv10 [Video]:rv20 [Video]:rv20 [Video]:rv30 [Video]:rv40 [Audio]:s302m [Audio]:s302m [Video]:sanm [Video]:screenpresso [Audio]:sdx2_dpcm [Video]:sgi [Video]:sgi [Video]:sgirle [Video]:sheervideo [Video]:smackvid [Video]:smc [Video]:smvjpeg [Video]:snow [Video]:snow [Video]:sp5x [Video]:sunrast [Video]:sunrast [Video]:svq1 [Video]:svq1 [Video]:svq3 [Video]:targa [Video]:targa [Video]:targa_y216 [Video]:tdsc [Video]:theora [Video]:thp [Video]:tiertexseqvideo [Video]:tiff [Video]:tiff [Video]:tmv [Video]:truemotion1 [Video]:truemotion2 [Video]:truemotion2rt [Video]:camtasia [Video]:tscc2 [Video]:txd [Video]:ultimotion [Video]:utvideo [Video]:utvideo [Video]:v210 [Video]:v210 [Video]:v210x [Video]:v308 [Video]:v308 [Video]:v408 [Video]:v408 [Video]:v410 [Video]:v410 [Video]:vb [Video]:vble [Video]:vc1 [Video]:vc1image [Video]:vc2 [Video]:vcr1 [Video]:vmdvideo [Video]:vmnc [Video]:vp3 [Video]:vp5 [Video]:vp6 [Video]:vp6a [Video]:vp6f [Video]:vp7 [Video]:vp8 [Video]:vp9 [Video]:vqavideo [Video]:webp [Video]:wrapped_avframe [Video]:wmv1 [Video]:wmv1 [Video]:wmv2 [Video]:wmv2 [Video]:wmv3 [Video]:wmv3image [Video]:wnv1 [Video]:xan_wc3 [Video]:xan_wc4 [Video]:xbm [Video]:xbm [Video]:xface [Video]:xface [Video]:xl [Video]:xwd [Video]:xwd [Video]:y41p [Video]:y41p [Video]:ylc [Video]:yop [Video]:yuv4 [Video]:yuv4 [Video]:012v [Video]:zerocodec [Video]:zlib [Video]:zlib [Video]:zmbv [Video]:zmbv 03-30 17:29:41.925 4669-4669/com.example.peerajak.mycompilepassffmpegonandroid I/ywl5320: [Audio]:aac [Audio]:aac [Audio]:aac_fixed [Audio]:aac_latm [Audio]:ac3 [Audio]:ac3 [Audio]:ac3_fixed [Audio]:ac3_fixed [Audio]:alac [Audio]:alac [Audio]:als [Audio]:amrnb [Audio]:amrwb [Audio]:ape [Audio]:atrac1 [Audio]:atrac3 [Audio]:atrac3plus [Audio]:binkaudio_dct [Audio]:binkaudio_rdft [Audio]:bmv_audio [Audio]:cook [Audio]:dca [Audio]:dca [Audio]:dsd_lsbf [Audio]:dsd_msbf [Audio]:dsd_lsbf_planar [Audio]:dsd_msbf_planar [Audio]:dsicinaudio [Audio]:dss_sp [Audio]:dst [Audio]:eac3 [Audio]:eac3 [Audio]:evrc [Audio]:wavesynth [Audio]:flac [Audio]:flac [Audio]:g723_1 [Audio]:g723_1 [Audio]:g729 [Audio]:gsm [Audio]:gsm_ms [Audio]:iac [Audio]:imc [Audio]:interplayacm [Audio]:mace3 [Audio]:mace6 [Audio]:metasound [Audio]:mlp [Audio]:mlp [Audio]:mp1 [Audio]:mp1float [Audio]:mp2 [Audio]:mp2 [Audio]:mp2float [Audio]:mp2fixed [Audio]:mp3 [Audio]:mp3float [Audio]:mp3adu [Audio]:mp3adufloat [Audio]:mp3on4 [Audio]:mp3on4float [Audio]:mpc7 [Audio]:mpc8 [Audio]:nellymoser [Audio]:nellymoser [Audio]:on2avc [Audio]:opus [Audio]:paf_audio [Audio]:qcelp [Audio]:qdm2 [Audio]:real_144 [Audio]:real_144 [Audio]:real_288 [Audio]:ralf [Audio]:shorten [Audio]:sipr [Audio]:smackaud [Audio]:sonic [Audio]:sonic [Audio]:sonicls [Audio]:tak [Audio]:truehd [Audio]:truehd [Audio]:truespeech [Audio]:tta [Audio]:tta [Audio]:twinvq [Audio]:vmdaudio [Audio]:vorbis [Audio]:vorbis [Audio]:wavpack [Audio]:wavpack [Audio]:wmalossless [Audio]:wmapro [Audio]:wmav1 [Audio]:wmav1 [Audio]:wmav2 [Audio]:wmav2 [Audio]:wmavoice [Audio]:ws_snd1 [Audio]:xma1 [Audio]:xma2 [Audio]:pcm_alaw [Audio]:pcm_alaw [Audio]:pcm_bluray [Audio]:pcm_dvd [Audio]:pcm_f32be [Audio]:pcm_f32be [Audio]:pcm_f32le [Audio]:pcm_f32le [Audio]:pcm_f64be [Audio]:pcm_f64be [Audio]:pcm_f64le [Audio]:pcm_lxf [Audio]:pcm_s8 [Audio]:pcm_s16be_planar [Audio]:pcm_s24daud [Audio]:pcm_u8 [Audio]:pcm_u32be [Audio]:roq_dpcm [Audio]:adpcm_4xm [Audio]:adpcm_ea [Audio]:adpcm_ea_r1 [Audio]:adpcm_ima_dk3 [Audio]:adpcm_mtaf [Audio]:adpcm_thp_le
ความคิดเห็น
แสดงความคิดเห็น