
Recherche avancée
Autres articles (112)
-
Ecrire une actualité
21 juin 2013, parPrésentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
Vous pouvez personnaliser le formulaire de création d’une actualité.
Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...) -
Encoding and processing into web-friendly formats
13 avril 2011, parMediaSPIP automatically converts uploaded files to internet-compatible formats.
Video files are encoded in MP4, Ogv and WebM (supported by HTML5) and MP4 (supported by Flash).
Audio files are encoded in MP3 and Ogg (supported by HTML5) and MP3 (supported by Flash).
Where possible, text is analyzed in order to retrieve the data needed for search engine detection, and then exported as a series of image files.
All uploaded files are stored online in their original format, so you can (...) -
Script d’installation automatique de MediaSPIP
25 avril 2011, parAfin de palier aux difficultés d’installation dues principalement aux dépendances logicielles coté serveur, un script d’installation "tout en un" en bash a été créé afin de faciliter cette étape sur un serveur doté d’une distribution Linux compatible.
Vous devez bénéficier d’un accès SSH à votre serveur et d’un compte "root" afin de l’utiliser, ce qui permettra d’installer les dépendances. Contactez votre hébergeur si vous ne disposez pas de cela.
La documentation de l’utilisation du script d’installation (...)
Sur d’autres sites (9185)
-
Build FFmpeg for All Android architecture correctly
26 octobre 2017, par fthopkinsI built ffmpeg libraries for all android architecture. But some details are confusing my mind. First of all let me explain step by step how i built.
- I downloaded latest version of
libx264
from
https://www.videolan.org/developers/x264.html - Created and run
build_all.sh
script (in x264 folder) for creating libs for (almost) all android platforms. Then i gotandroid
folder in x264 folder. e.gandroid/arm
android/arm64
android/x86
android/x86_64
in x264 folder. - I download the
ffmpeg3.3.4
from https://ffmpeg.org/download.html - I created 4 copies of
ffmpeg3.3.4
folder. Named them with android architectures names.
Likeffmpeg3.3.4-arm64
ffmpeg3.3.4-arm
ffmpeg3.3.4-x86
ffmpeg3.3.4-x86_64
- Created build_(architecture-name).sh for each platforms of android. Than move each one of
'named'.sh files
to the named ffmpeg folders according to their architecture names.
E.gbuild_android_x86.sh
=>ffmpeg3.3.4-x86
build_android_arm64.sh
example#!/bin/bash
#Change NDK to your Android NDK location
NDK=$HOME/Android/Sdk/ndk-bundle
PLATFORM=$NDK/platforms/android-21/arch-arm64/
PREBUILT=$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64
GENERAL="\
--enable-small \
--enable-cross-compile \
--extra-libs="-lgcc" \
--arch=aarch64 \
--cc=$PREBUILT/bin/aarch64-linux-android-gcc \
--cross-prefix=$PREBUILT/bin/aarch64-linux-android- \
--nm=$PREBUILT/bin/aarch64-linux-android-nm \
--extra-cflags="-I../x264/android/arm64/include" \
--extra-ldflags="-L../x264/android/arm64/lib" "
MODULES="\
--enable-gpl \
--enable-libx264"
function build_arm64
{
./configure \
--logfile=conflog.txt \
--target-os=linux \
--prefix=./android/arm64-v8a \
${GENERAL} \
--sysroot=$PLATFORM \
--extra-cflags="" \
--extra-ldflags="-lx264 -Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib -lc -lm -ldl -llog" \
--enable-shared \
--disable-static \
--disable-doc \
--enable-zlib \
${MODULES}
make clean
make
make install
}
build_arm64
echo Android ARM64 builds finished- Moved all
ffmpeg3.3.4-arm64
ffmpeg3.3.4-arm
ffmpeg3.3.4-x86
ffmpeg3.3.4-x86_64
folders to theNDK_PATH
(C:\Users\MyName\AppData\Local\Android\sdk\ndk-bundle
) - Put
x264
folder at same level of hierarchy with ffmpeg folders
in (C:\Users\MyName\AppData\Local\Android\sdk\ndk-bundle
) - Run each of
build_android_x86.sh
,build_android_x86_64.sh
.. scripts one by one in their own ffmpeg folder. Then i gotandroid
folders in ffmpeg folders. (createdandroid
folders have library folders)
e.gffmpeg3.3.4-x86/android/x86/(bin,inlude,lib,share)
-
Created
Android.mk
files for all createdandroid
folders and moved each one of them to android/armName folder. e.gAndroid.mk
=>ffmpeg3.3.4-x86/android/x86/
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:= libavcodec
LOCAL_SRC_FILES:= lib/libavcodec-57.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE:= libavformat
LOCAL_SRC_FILES:= lib/libavformat-57.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE:= libswscale
LOCAL_SRC_FILES:= lib/libswscale-4.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE:= libavutil
LOCAL_SRC_FILES:= lib/libavutil-55.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE:= libavfilter
LOCAL_SRC_FILES:= lib/libavfilter-6.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE:= libswresample
LOCAL_SRC_FILES:= lib/libswresample-2.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := postproc
LOCAL_SRC_FILES := lib/libpostproc-54.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := avdevice
LOCAL_SRC_FILES := lib/libavdevice-57.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY) -
Create "arm named" folders e.g
x86
x86_4
arm64
arm7
in jni folder of my project (myproject/app/jni/x86
,myproject/app/jni/x86_64
). -
Go to ndk path open named ffmpeg folders one by one and copy
ffmpeg.c
ffmpeg_filter.c
ffmpeg_opt.c
cmdutils.c
files from ffmpeg folders to the "arm named" folders. e.gffmpeg.c
=>myproject/app/jni/x86
-
Created Android.mk file in my project.
LOCAL_PATH := $(call my-dir)
#$(warning $(LOCAL_PATH))
include $(CLEAR_VARS)
LOCAL_MODULE := videoEdit
LOCAL_LDLIBS := -llog -ljnigraphics -lz -landroid
LOCAL_CFLAGS := -Wdeprecated-declarations
ANDROID_LIB := -landroid
$(info $(TARGET_ARCH_ABI))
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
LOCAL_C_INCLUDES:=/Users/MyName/AppData/Local/Android/sdk/ndk-bundle/sources/ffmpeg-3.3.4-armeabi
LOCAL_SRC_FILES := videoEdit.c arm7/ffmpeg.c arm7/ffmpeg_filter.c arm7/ffmpeg_opt.c arm7/cmdutils.c
LOCAL_CFLAGS += -lx264 -Wl,--no-merge-exidx-entries
else
ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
LOCAL_C_INCLUDES:=/Users/MyName/AppData/Local/Android/sdk/ndk-bundle/sources/ffmpeg-3.3.4-arm64-v8a
LOCAL_SRC_FILES := videoEdit.c arm64/ffmpeg.c arm64/ffmpeg_filter.c arm64/ffmpeg_opt.c arm64/cmdutils.c
LOCAL_CFLAGS += -funwind-tables -Wl,--no-merge-exidx-entries
else
ifeq ($(TARGET_ARCH_ABI),x86_64)
LOCAL_C_INCLUDES:=/Users/MyName/AppData/Local/Android/sdk/ndk-bundle/sources/ffmpeg3.3.4-x86_64
LOCAL_SRC_FILES := videoEdit.c x86_64/ffmpeg.c x86_64/ffmpeg_filter.c x86_64/ffmpeg_opt.c x86_64/cmdutils.c
else
LOCAL_C_INCLUDES:=/Users/MyName/AppData/Local/Android/sdk/ndk-bundle/sources/ffmpeg3.3.4-x86
LOCAL_SRC_FILES := videoEdit.c x86/ffmpeg.c x86/ffmpeg_filter.c x86/ffmpeg_opt.c x86/cmdutils.c
endif
endif
endif
LOCAL_SHARED_LIBRARIES := libavformat libavcodec libswscale libavutil libswresample libavfilter libavdevice libpostproc
include $(BUILD_SHARED_LIBRARY)
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
$(call import-module,ffmpeg-3.3.4-armeabi/android/armeabi-v7a)
else
ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
$(call import-module,ffmpeg-3.3.4-arm64-v8a/android/arm64-v8a)
else
ifeq ($(TARGET_ARCH_ABI),x86_64)
$(call import-module,ffmpeg3.3.4-x86_64/android/x86_64)
else
$(call import-module,ffmpeg3.3.4-x86/android/i686-diasm)
endif
endif
endif -
Created Application.mk file in my project.
APP_ABI := armeabi-v7a, arm64-v8a, x86_64, x86
APP_PLATFORM := android-14 -
Created videoEdit.c than run
ndk-build
build command.
Built with no error. I can run ffmpeg commands but it takes too much time i think. E.g when i try to run
hflip
it flips the video with 15 seconds.Code example :
JNIEXPORT jint JNICALL Java_com_name_app_library_VideoEditer_natives_VideoEditer_flipHorizontally
(JNIEnv *env, jclass someclass, jstring inputFile, jstring outFile) {
int numberOfArgs = 14;
char** arguments = calloc(numberOfArgs, sizeof(char*));
const char *in, *out;
in = (*env)->GetStringUTFChars(env, inputFile, 0);
out = (*env)->GetStringUTFChars(env, outFile, 0);
arguments[0] = "ffmpeg";
arguments[1] = "-i";
arguments[2] = in;
arguments[3] = "-c:v";
arguments[4] = "libx264";
arguments[5] = "-preset";
arguments[6] = "ultrafast";
arguments[7] = "-threads";
arguments[8] = "5";
arguments[9] = "-c:a";
arguments[10] = "copy";
arguments[11] = "-vf";
arguments[12] = "hflip";
arguments[13] = out;
int i;
for (i = 0; i < numberOfArgs; i++) {
log_message(arguments[i]);
}
log_message("Printed all");
main(numberOfArgs, arguments);
free(arguments);
(*env)->ReleaseStringUTFChars(env, inputFile, in);
(*env)->ReleaseStringUTFChars(env, outFile, out);
return 0;
}FFmpeg Commands that runs on android, working very fast on emaulator but very slow on real device.
Also another thing to confusing my mind is output of
./configure
command.
When i open the (e.g)ffmpeg-3.3.4-arm64-v8a
folder and run./configure
command in terminal. Output saysARCH x86 (generic)
. For all platform output is the sameARCH x86 (generic)
.Output of
./configure
command inffmpeg-3.3.4-arm64-v8a
folderinstall prefix /usr/local
source path .
C compiler gcc
C library glibc
ARCH x86 (generic)
big-endian no
runtime cpu detection yes
yasm yes
MMX enabled yes
MMXEXT enabled yes
3DNow! enabled yes
3DNow! extended enabled yes
SSE enabled yes
SSSE3 enabled yes
AESNI enabled yes
AVX enabled yes
XOP enabled yes
FMA3 enabled yes
FMA4 enabled yes
i686 features enabled yes
CMOV is fast yes
EBX available yes
EBP available yes
debug symbols yes
strip symbols yes
optimize for size no
optimizations yes
static yes
shared no
postprocessing support no
network support yes
threading support pthreads
safe bitstream reader yes
texi2html enabled no
perl enabled yes
pod2man enabled yes
makeinfo enabled no
makeinfo supports HTML no
External libraries:
iconv xlibEDIT all of these steps made on ubuntu then moved all folders to the windows. So dont be confuse about paths.
With all of these steps i want to ask is, is there anything wrong on my steps. Should i follow any other way or not ? Why the ffmpeg is running slower on real device. I am wondering one thing badly, how retrica, snapchat, instagram recording video as mirrored flipping ? Are they flipping after recorded (if they are how are they doing this in a second) or are they recording a video as flipped in run time ? I guess building ffmpeg for android is bit messy and making wrong things is very easy. If you look my steps, questions and give me an advice, i will be much appreciated.
- I downloaded latest version of
-
Merge commit '41df62fd674bd0c67f7b6952381d235a393245d6'
11 novembre 2017, par James Almer -
When I build ndk with .a files it comes like this `error adding symbols : File in wrong format`
2 avril 2020, par Pradeep SimbaWhen I build ndk with .a files it comes like this
error adding symbols: File in wrong format
.


WORKING_DIR := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_PATH := $(WORKING_DIR)/../third_party/lame/libmp3lame
LOCAL_MODULE := lame
LOCAL_C_INCLUDES := $(WORKING_DIR)/../third_party/lame/libmp3lame \
 $(WORKING_DIR)/../third_party/lame/include
LOCAL_CFLAGS := -DSTDC_HEADERS -std=c99
LOCAL_ARM_MODE := arm
APP_OPTIM := release

LOCAL_SRC_FILES := VbrTag.c \
 bitstream.c \
 encoder.c \
 fft.c \
 gain_analysis.c \
 id3tag.c \
 lame.c \
 mpglib_interface.c \
 newmdct.c \
 presets.c \
 psymodel.c \
 quantize.c \
 quantize_pvt.c \
 reservoir.c \
 set_get.c \
 tables.c \
 takehiro.c \
 util.c \
 vbrquantize.c \
 version.c


#include $(BUILD_STATIC_LIBRARY)

include $(BUILD_STATIC_LIBRARY)

#include $(CLEAR_VARS)
#LOCAL_MODULE := mp3lame_a
#LOCAL_STATIC_LIBRARIES := lame

#include $(BUILD_EXECUTABLE) 

include $(CLEAR_VARS)
LOCAL_PATH := $(WORKING_DIR)
LOCAL_MODULE := ffmpeg
LOCAL_CFLAGS := -DHAVE_AV_CONFIG_H -std=c99 -D__STDC_CONSTANT_MACROS -DSTDC_HEADERS -Wno-deprecated-declarations
LOCAL_SRC_FILES := ffmpeg-jni.c
LOCAL_C_INCLUDES := $(WORKING_DIR)/libavcodec $(WORKING_DIR)/libavcodec/arm $(WORKING_DIR)/libavformat $(WORKING_DIR)/libavutil $(WORKING_DIR)/libavutil/arm

LOCAL_STATIC_LIBRARIES := lame

LOCAL_LDLIBS := -llog -lm -lz $(WORKING_DIR)/../third_party/lib/libavformat.a $(WORKING_DIR)/../third_party/lib/libavcodec.a $(WORKING_DIR)/../third_party/lib/libavfilter.a $(WORKING_DIR)/../third_party/lib/libavresample.a $(WORKING_DIR)/../third_party/lib/libswscale.a $(WORKING_DIR)/../third_party/lib/libavutil.a $(WORKING_DIR)/../third_party/lib/libx264.a $(WORKING_DIR)/../third_party/lib/libpostproc.a $(WORKING_DIR)/../third_party/lib/libswresample.a $(WORKING_DIR)/../third_party/lib/libfdk-aac.a

APP_OPTIM := release

include $(BUILD_SHARED_LIBRARY)







When I build ndk the error occurs






Microsoft Windows [Version 10.0.18363.418]
(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\prade>d:

D:\>cd D:\Github\n

D:\Github\n>ndk-build
Android NDK: APP_PLATFORM not set. Defaulting to minimum supported version android-16.
Android NDK: WARNING:jni/Android.mk:ffmpeg: non-system libraries in linker flags: jni/../third_party/lib/libavformat.a jni/../third_party/lib/libavcodec.a jni/../third_party/lib/libavfilter.a jni/../third_party/lib/libavresample.a jni/../third_party/lib/libswscale.a jni/../third_party/lib/libavutil.a jni/../third_party/lib/libx264.a jni/../third_party/lib/libpostproc.a jni/../third_party/lib/libswresample.a jni/../third_party/lib/libfdk-aac.a
Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES
Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the
Android NDK: current module
Android NDK: WARNING:jni/Android.mk:ffmpeg: non-system libraries in linker flags: jni/../third_party/lib/libavformat.a jni/../third_party/lib/libavcodec.a jni/../third_party/lib/libavfilter.a jni/../third_party/lib/libavresample.a jni/../third_party/lib/libswscale.a jni/../third_party/lib/libavutil.a jni/../third_party/lib/libx264.a jni/../third_party/lib/libpostproc.a jni/../third_party/lib/libswresample.a jni/../third_party/lib/libfdk-aac.a
Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES
Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the
Android NDK: current module
Android NDK: WARNING:jni/Android.mk:ffmpeg: non-system libraries in linker flags: jni/../third_party/lib/libavformat.a jni/../third_party/lib/libavcodec.a jni/../third_party/lib/libavfilter.a jni/../third_party/lib/libavresample.a jni/../third_party/lib/libswscale.a jni/../third_party/lib/libavutil.a jni/../third_party/lib/libx264.a jni/../third_party/lib/libpostproc.a jni/../third_party/lib/libswresample.a jni/../third_party/lib/libfdk-aac.a
Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES
Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the
Android NDK: current module
Android NDK: WARNING:jni/Android.mk:ffmpeg: non-system libraries in linker flags: jni/../third_party/lib/libavformat.a jni/../third_party/lib/libavcodec.a jni/../third_party/lib/libavfilter.a jni/../third_party/lib/libavresample.a jni/../third_party/lib/libswscale.a jni/../third_party/lib/libavutil.a jni/../third_party/lib/libx264.a jni/../third_party/lib/libpostproc.a jni/../third_party/lib/libswresample.a jni/../third_party/lib/libfdk-aac.a
Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES
Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the
Android NDK: current module
[arm64-v8a] Compile : ffmpeg <= ffmpeg-jni.c
jni/ffmpeg-jni.c:248:16: warning: initializing 'const jbyte *' (aka 'const signed char *') with an expression of type
 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
const jbyte *url = (*env)->GetStringUTFChars(env, rtmp_url, NULL);
 ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/ffmpeg-jni.c:252:37: warning: passing 'const jbyte *' (aka 'const signed char *') to parameter of type
 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
if (avio_open(&fmt_context->pb, url, URL_WRONLY) < 0) {
 ^~~
jni/libavformat/avio.h:391:44: note: passing argument to parameter 'url' here
 int avio_open(AVIOContext **s, const char *url, int flags);
 ^
jni/ffmpeg-jni.c:257:48: warning: passing 'const jbyte *' (aka 'const signed char *') to parameter of type
 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
(*env)->ReleaseStringUTFChars(env, rtmp_url, url);
 ^~~
jni/ffmpeg-jni.c:297:18: warning: initializing 'unsigned char *' with an expression of type 'jbyte *'
 (aka 'signed char *') converts between pointers to integer types with different sign [-Wpointer-sign]
 unsigned char *yuv_data = (*env)->GetByteArrayElements(env, yuv_image, 0);
 ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 jni/ffmpeg-jni.c:330:52: warning: passing 'unsigned char *' to parameter of type 'jbyte *' (aka 'signed char *')
 converts between pointers to integer types with different sign [-Wpointer-sign]
 (*env)->ReleaseByteArrayElements(env, yuv_image, yuv_data, 0);
 ^~~~~~~~
5 warnings generated.
[arm64-v8a] Compile : lame <= VbrTag.c
jni/../third_party/lame/libmp3lame/VbrTag.c:263:5: warning: shifting a negative signed value is undefined
 [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[0], 8u, 0xffu);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
 ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:265:5: warning: shifting a negative signed value is undefined
 [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[1], 3u, 7);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
 ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:266:5: warning: shifting a negative signed value is undefined
 [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[1], 1u, (gfp->out_samplerate < 16000) ? 0 : 1);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
 ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:267:5: warning: shifting a negative signed value is undefined
 [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[1], 1u, gfp->version);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
 ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:268:5: warning: shifting a negative signed value is undefined
 [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[1], 2u, 4 - 3);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
 ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:269:5: warning: shifting a negative signed value is undefined
 [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[1], 1u, (!gfp->error_protection) ? 1 : 0);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
 ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:271:5: warning: shifting a negative signed value is undefined
 [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[2], 4u, gfc->bitrate_index);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
 ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:272:5: warning: shifting a negative signed value is undefined
 [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[2], 2u, gfc->samplerate_index);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
 ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:273:5: warning: shifting a negative signed value is undefined
 [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[2], 1u, 0);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
 ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:274:5: warning: shifting a negative signed value is undefined
 [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[2], 1u, gfp->extension);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
 ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:276:5: warning: shifting a negative signed value is undefined
 [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[3], 2u, gfp->mode);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
 ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:277:5: warning: shifting a negative signed value is undefined
 [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[3], 2u, gfc->mode_ext);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
 ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:278:5: warning: shifting a negative signed value is undefined
 [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[3], 1u, gfp->copyright);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
 ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:279:5: warning: shifting a negative signed value is undefined
 [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[3], 1u, gfp->original);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
 ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:280:5: warning: shifting a negative signed value is undefined
 [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[3], 2u, gfp->emphasis);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
 ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:421:23: warning: comparison of array 'pTagData->toc' not equal to a null
 pointer is always true [-Wtautological-pointer-compare]
 if (pTagData->toc != NULL) {
 ~~~~~~~~~~^~~ ~~~~
16 warnings generated.
[arm64-v8a] Compile : lame <= bitstream.c
[arm64-v8a] Compile : lame <= encoder.c
[arm64-v8a] Compile : lame <= fft.c
[arm64-v8a] Compile : lame <= gain_analysis.c
[arm64-v8a] Compile : lame <= id3tag.c
[arm64-v8a] Compile : lame <= lame.c
jni/../third_party/lame/libmp3lame/lame.c:603:13: warning: using floating point absolute value function 'fabs' when
 argument is of integer type [-Wabsolute-value]
 if (EQ(gfp->compression_ratio, 0))
 ^
jni/../third_party/lame/libmp3lame/machine.h:168:12: note: expanded from macro 'EQ'
(fabs(a) > fabs(b)) \
 ^
jni/../third_party/lame/libmp3lame/lame.c:603:13: note: use function 'abs' instead
jni/../third_party/lame/libmp3lame/machine.h:168:12: note: expanded from macro 'EQ'
(fabs(a) > fabs(b)) \
 ^
jni/../third_party/lame/libmp3lame/lame.c:603:13: warning: using floating point absolute value function 'fabs' when
 argument is of integer type [-Wabsolute-value]
 if (EQ(gfp->compression_ratio, 0))
 ^
jni/../third_party/lame/libmp3lame/machine.h:170:23: note: expanded from macro 'EQ'
: (fabs((a)-(b)) <= (fabs(b) * 1e-6f)))
 ^
jni/../third_party/lame/libmp3lame/lame.c:603:13: note: use function 'abs' instead
jni/../third_party/lame/libmp3lame/machine.h:170:23: note: expanded from macro 'EQ'
: (fabs((a)-(b)) <= (fabs(b) * 1e-6f)))
 ^
jni/../third_party/lame/libmp3lame/lame.c:1559:9: warning: using floating point absolute value function 'fabs' when
 argument is of integer type [-Wabsolute-value]
if (NEQ(gfp->scale, 0) && NEQ(gfp->scale, 1.0)) {
 ^
jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
#define NEQ(a,b) (!EQ(a,b))
 ^
jni/../third_party/lame/libmp3lame/machine.h:168:12: note: expanded from macro 'EQ'
(fabs(a) > fabs(b)) \
 ^
jni/../third_party/lame/libmp3lame/lame.c:1559:9: note: use function 'abs' instead
jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
#define NEQ(a,b) (!EQ(a,b))
 ^
jni/../third_party/lame/libmp3lame/machine.h:168:12: note: expanded from macro 'EQ'
(fabs(a) > fabs(b)) \
 ^
jni/../third_party/lame/libmp3lame/lame.c:1559:9: warning: using floating point absolute value function 'fabs' when
 argument is of integer type [-Wabsolute-value]
if (NEQ(gfp->scale, 0) && NEQ(gfp->scale, 1.0)) {
 ^
jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
#define NEQ(a,b) (!EQ(a,b))
 ^
 jni/../third_party/lame/libmp3lame/machine.h:170:23: note: expanded from macro 'EQ'
 : (fabs((a)-(b)) <= (fabs(b) * 1e-6f)))
 ^
 jni/../third_party/lame/libmp3lame/lame.c:1559:9: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
 #define NEQ(a,b) (!EQ(a,b))
 ^
 jni/../third_party/lame/libmp3lame/machine.h:170:23: note: expanded from macro 'EQ'
 : (fabs((a)-(b)) <= (fabs(b) * 1e-6f)))
 ^
 jni/../third_party/lame/libmp3lame/lame.c:1568:9: warning: using floating point absolute value function 'fabs' when
 argument is of integer type [-Wabsolute-value]
 if (NEQ(gfp->scale_left, 0) && NEQ(gfp->scale_left, 1.0)) {
 ^
 jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
 #define NEQ(a,b) (!EQ(a,b))
 ^
 jni/../third_party/lame/libmp3lame/machine.h:168:12: note: expanded from macro 'EQ'
 (fabs(a) > fabs(b)) \
 ^
 jni/../third_party/lame/libmp3lame/lame.c:1568:9: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
 #define NEQ(a,b) (!EQ(a,b))
 ^
 jni/../third_party/lame/libmp3lame/machine.h:168:12: note: expanded from macro 'EQ'
 (fabs(a) > fabs(b)) \
 ^
 jni/../third_party/lame/libmp3lame/lame.c:1568:9: warning: using floating point absolute value function 'fabs' when
 argument is of integer type [-Wabsolute-value]
 if (NEQ(gfp->scale_left, 0) && NEQ(gfp->scale_left, 1.0)) {
 ^
 jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
 #define NEQ(a,b) (!EQ(a,b))
 ^
 jni/../third_party/lame/libmp3lame/machine.h:170:23: note: expanded from macro 'EQ'
 : (fabs((a)-(b)) <= (fabs(b) * 1e-6f)))
 ^
 jni/../third_party/lame/libmp3lame/lame.c:1568:9: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
 #define NEQ(a,b) (!EQ(a,b))
 ^
 jni/../third_party/lame/libmp3lame/machine.h:170:23: note: expanded from macro 'EQ'
 : (fabs((a)-(b)) <= (fabs(b) * 1e-6f)))
 ^
 jni/../third_party/lame/libmp3lame/lame.c:1575:9: warning: using floating point absolute value function 'fabs' when
 argument is of integer type [-Wabsolute-value]
 if (NEQ(gfp->scale_right, 0) && NEQ(gfp->scale_right, 1.0)) {
 ^
 jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
 #define NEQ(a,b) (!EQ(a,b))
 ^
 jni/../third_party/lame/libmp3lame/machine.h:168:12: note: expanded from macro 'EQ'
 (fabs(a) > fabs(b)) \
 ^
 jni/../third_party/lame/libmp3lame/lame.c:1575:9: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
 #define NEQ(a,b) (!EQ(a,b))
 ^
 jni/../third_party/lame/libmp3lame/machine.h:168:12: note: expanded from macro 'EQ'
 (fabs(a) > fabs(b)) \
 ^
 jni/../third_party/lame/libmp3lame/lame.c:1575:9: warning: using floating point absolute value function 'fabs' when
 argument is of integer type [-Wabsolute-value]
 if (NEQ(gfp->scale_right, 0) && NEQ(gfp->scale_right, 1.0)) {
 ^
 jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
 #define NEQ(a,b) (!EQ(a,b))
 ^
 jni/../third_party/lame/libmp3lame/machine.h:170:23: note: expanded from macro 'EQ'
 : (fabs((a)-(b)) <= (fabs(b) * 1e-6f)))
 ^
 jni/../third_party/lame/libmp3lame/lame.c:1575:9: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
 #define NEQ(a,b) (!EQ(a,b))
 ^
 jni/ ../third_party/lame/libmp3lame/machine.h:170:23: note: expanded from macro 'EQ'
 : (fabs((a)-(b)) <= (fabs(b) * 1e-6f)))
 ^
 8 warnings generated.
 [arm64-v8a] Compile : lame <= mpglib_interface.c
 [arm64-v8a] Compile : lame <= newmdct.c
 [arm64-v8a] Compile : lame <= presets.c
 jni/../third_party/lame/libmp3lame/presets.c:145:5: warning: using floating point absolute value function 'fabs' when
 argument is of integer type [-Wabsolute-value]
 SET_OPTION(quant_comp, set->quant_comp, -1);
 ^
 jni/../third_party/lame/libmp3lame/presets.c:36:16: note: expanded from macro 'SET_OPTION'
 else if (!(fabs(lame_get_##opt(gfp) - def) > 0)) \
 ^
 jni/../third_party/lame/libmp3lame/presets.c:145:5: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/presets.c:36:16: note: expanded from macro 'SET_OPTION'
 else if (!(fabs(lame_get_##opt(gfp) - def) > 0)) \
 ^
 jni/../third_party/lame/libmp3lame/presets.c:146:5: warning: using floating point absolute value function 'fabs' when
 argument is of integer type [-Wabsolute-value]
 SET_OPTION(quant_comp_short, set->quant_comp_s, -1);
 ^
 jni/../third_party/lame/libmp3lame/presets.c:36:16: note: expanded from macro 'SET_OPTION'
 else if (!(fabs(lame_get_##opt(gfp) - def) > 0)) \
 ^
 jni/../third_party/lame/libmp3lame/presets.c:146:5: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/presets.c:36:16: note: expanded from macro 'SET_OPTION'
 else if (!(fabs(lame_get_##opt(gfp) - def) > 0)) \
 ^
 jni/../third_party/lame/libmp3lame/presets.c:259:5: warning: using floating point absolute value function 'fabs' when
 argument is of integer type [-Wabsolute-value]
 SET_OPTION(quant_comp, abr_switch_map[r].quant_comp, -1);
 ^
 jni/../third_party/lame/libmp3lame/presets.c:36:16: note: expanded from macro 'SET_OPTION'
 else if (!(fabs(lame_get_##opt(gfp) - def) > 0)) \
 ^
 jni/../third_party/lame/libmp3lame/presets.c:259:5: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/presets.c:36:16: note: expanded from macro 'SET_OPTION'
 else if (!(fabs(lame_get_##opt(gfp) - def) > 0)) \
 ^
 jni/../third_party/lame/libmp3lame/presets.c:260:5: warning: using floating point absolute value function 'fabs' when
 argument is of integer type [-Wabsolute-value]
 SET_OPTION(quant_comp_short, abr_switch_map[r].quant_comp_s, -1);
 ^
 jni/../third_party/lame/libmp3lame/presets.c:36:16: note: expanded from macro 'SET_OPTION'
 else if (!(fabs(lame_get_##opt(gfp) - def) > 0)) \
 ^
 jni/../third_party/lame/libmp3lame/presets.c:260:5: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/presets.c:36:16: note: expanded from macro 'SET_OPTION'
 else if (!(fabs(lame_get_##opt(gfp) - def) > 0)) \
 ^
 4 warnings generated.
 [arm64-v8a] Compile : lame <= psymodel.c
 [arm64-v8a] Compile : lame <= quantize.c
 [arm64-v8a] Compile : lame <= quantize_pvt.c
 jni/../third_party/lame/libmp3lame/quantize_pvt.c:664:23: warning: using floating point absolute value function 'fabs'
 when argument is of integer type [-Wabsolute-value]
 while (k-- && EQ(xr[k], 0)) {
 ^
 jni/../third_party/lame/libmp3lame/machine.h:168:12: note: expanded from macro 'EQ'
 (fabs(a) > fabs(b)) \
 ^
 jni/../third_party/lame/libmp3lame/quantize_pvt.c:664:23: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/machine.h:168:12: note: expanded from macro 'EQ'
 (fabs(a) > fabs(b)) \
 ^
 jni/../third_party/lame/libmp3lame/quantize_pvt.c:664:23: warning: using floating point absolute value function 'fabs'
 when argument is of integer type [-Wabsolute-value]
 while (k-- && EQ(xr[k], 0)) {
 ^
 jni/../third_party/lame/libmp3lame/machine.h:170:23: note: expanded from macro 'EQ'
 : (fabs((a)-(b)) <= (fabs(b) * 1e-6f)))
 ^
 jni/../third_party/lame/libmp3lame/quantize_pvt.c:664:23: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/machine.h:170:23: note: expanded from macro 'EQ'
 : (fabs((a)-(b)) <= (fabs(b) * 1e-6f)))
 ^
 2 warnings generated.
 [arm64-v8a] Compile : lame <= reservoir.c
 [arm64-v8a] Compile : lame <= set_get.c
 [arm64-v8a] Compile : lame <= tables.c
 [arm64-v8a] Compile : lame <= takehiro.c
 [arm64-v8a] Compile : lame <= util.c
 [arm64-v8a] Compile : lame <= vbrquantize.c
 [arm64-v8a] Compile : lame <= version.c
 [ arm64-v8a] StaticLibrary : liblame.a
 [ arm64-v8a] SharedLibrary : libffmpeg.so
 jni/../third_party/lib/libavformat.a: error adding symbols: File in wrong format
 clang++: error: linker command failed with exit code 1 (use -v to see invocation)
 make: *** [D:/install/sdk/ndk/21.0.6113669/build//../build/core/build-binary.mk:725: obj/local/arm64-v8a/libffmpeg.so] Error 1

 D:\Github\n>




How can I solve this ?