FFmpeg sdl output in android - android

I try to execute the next command
-i $inputFilePath -filter_complex \"realtime,scale=iw/2:-1,negate,format=yuv420p\" -f sdl2 -
with mobile-ffmpeg on android and get the next error
mobile-ffmpeg: [sdl,sdl2 # 0xbf1d9600] Unable to initialize SDL: Application didn't initialize properly, did you include SDL_main.h in the file containing your main() function?
As far as I understand I need to create SDL_Activity or something similar to display video, am I right? Please explain if I'm wrong otherwise help me.

Related

Termux command. Command is wrong or not working

Trying to change metadata for Opus files using termux on android. Tried to change title here but may be command is wrong. Please guide me
ffmpeg -i audio name.opus -metadata title= "test" -c copy audio name.opus
Result:
[NULL # 0x787d23a500] Unable to find a suitable output format for 'test'
test: Invalid argument
Tried to look for some apps or editing tools but found nothing for opus on Android. My format is Opus. Expected that the command will be successful but it didn't work.

Image overlay fails using FFMPEG4Android

I am trying to watermark a video using FFMPEG4Android.
I am using the app on the android market from here.
The command used is
ffmpeg -i /sdcard/videokit/in.mp4 -i /sdcard/videokit/logos/1.png -i
/sdcard/videokit/logos/2.png -i /logos/3.png -filter_complex
"[0:v][1:v]
overlay=main_w-overlay_w-10:main_h-overlay_h-10:enable='between(t,0,1)'
[tmp]; [tmp][2:v]
overlay=main_w-overlay_w-10:main_h-overlay_h-10:enable='between(t,2,3)'
[tmp2]; [tmp2][3:v]
overlay=main_w-overlay_w-10:main_h-overlay_h-10:enable='between(t,4,5)'"
/sdcard/videokit/output.mp4
But everytime I run the command the app fails
Opening an output file:
overlay=main_w-overlay_w-10:main_h-overlay_h-10:enable='between(t,0,1)'.
No such filter: '' Error configuring filters. exit_program: 1
Can I get any help for the same?
You need to use complex command, check the ffmpeg4android blog for examples

Can Gcc build a executable program?

All, Forgive me I am familiar with the C program for the Android/Linux platform. Now I am trying to use the Sourcery G++ Lite Edition
for ARM to build my sample C program and deploy it to the Linux of the Android platform.
Below is the instructions what I follow.
So far it works fine. But I have something I didn't understand well. please review it . thanks.
The Source code is a hello world program.
#include <stdio.h>
int main(int argc,char * argv[])
{
printf("Hello, Android!\n");
return 0;
}
In the development machine command console. run the following commands line.
arm-none-linux-gnueabi-gcc hello.c -static -o hellostatic
adb push hellostatic /data/test
adb shell
cd /data/test
.hellostatic
Hello, Android!
So here is my question.
Can gcc build a executable file from a c source code file? Seems It doesn't need link tool. Is it right? thanks.
Can gcc build a executable file from a c source code file?
yes, of course.
Seems It doesn't need link tool?
no, I extract the following sentences from gcc manual,
GCC is capable of preprocessing and compiling several
files either into several assembler input files, or into one assembler input file; then each
assembler input file produces an object file, and linking combines all the object files (those
newly compiled, and those specified as input) into an executable file.
At default gcc will do complie and link operation, unless you type particular options such like:
gcc -c file.c
this will just compile file.c to file.o
or:
gcc -o file file.c
this will complie file.c to file.o and also link it to make a executable file finally.
Although yanchong had already gave the nice answer , I also found a good read from here. I think it will help to understand the concepts of Compile, Link and Build. Thanks.

FFMPEG build not able to recognize image file on Android

I am trying to convert a series of images to video on Android. I have successfully built Guardian Project. Now when I try to run this command
/data/data/com.mobvcasting.mjpegffmpeg/ffmpeg -r 4 -i /mnt/sdcard/RAS/img/file%03d.bmp -r /mnt/sdcard/RAS/img/demoFile.mp4"
i get an error saying
10-02 05:48:35.247: V/PROJECT_NAME(13972): ***/mnt/sdcard/RAS/img/file%03d.bmp: No such file or directory***
I have images at /mnt/sdcard/RAS/img/ directory starting from file000.bmp.
I even tried changing my command to
/data/data/com.mobvcasting.mjpegffmpeg/ffmpeg -r 4 -i /mnt/sdcard/RAS/img/file000.bmp -r /mnt/sdcard/RAS/img/demoFile.mp4"
to get the same error again.
Also, it is able to recognize /mnt/sdcard/RAS/img/ as a directory.
What can I change to get rid of the error message?
Thanks!

compile ffmpeg with android ndk r5b

compile ffmpeg with android ndk r5b.
ffmpeg 0.6.1
android ndk r5b
cygwin 1.7
build reference url : http://www.cnblogs.com/scottwong/archive/2010/12/17/1909455.html
but, ffmpeg ./configure result error! (below config.err file)
check_cc
BEGIN /tmp/ffconf.GlDiY1P8.c
1 int main(void){ return 0; }
END /tmp/ffconf.GlDiY1P8.c
/android-ndk-r5b/toolchains/arm-eabi-4.4.0/prebuilt/windows/bin/arm-eabi-gcc -fPIC -DANDROID -c -o /tmp/ffconf.1kQLpGaU.o /tmp/ffconf.GlDiY1P8.c
arm-eabi-gcc.exe: /tmp/ffconf.GlDiY1P8.c: No such file or directory
arm-eabi-gcc.exe: no input files
C compiler test failed.
so, i just try test code.
// test.c code
int main(){
return 0;
}
/android-ndk-r5b/toolchains/arm-eabi-4.4.0/prebuilt/windows/bin/arm-eabi-gcc -fPIC -DANDROID -c -o ./test.o ./test.c
ok!!!! no problem.
but,
cp ./test.c /tmp (copy to /tmp)
/android-ndk-r5b/toolchains/arm-eabi-4.4.0/prebuilt/windows/bin/arm-eabi-gcc -fPIC -DANDROID -c -o ./test.o /tmp/test.c
arm-eabi-gcc.exe: /tmp/test.c: No such file or directory
arm-eabi-gcc.exe: no input files
fail!!!
difference is only file path. /tmp directory exist, and permission is right. /home/test.c is same result.
what's wrong?
I have had a hard time to get it working in Windows, but finally I've managed to do it!
The previous posts were correct - there's a problem with Cygwin paths and Windows paths.
I have tried the solution described in the post above as the very first thing, but it was not working. Finally I've understand the reason: even if you put into your build_android.sh file the Windows path, the config for FFmpeg still contains the wrong path.
So in my case I have changed partially the config file in FFmpeg root directory from:
#set temporary file name
: ${TMPDIR:=$TEMPDIR}
: ${TMPDIR:=$TMP}
: ${TMPDIR:=/tmp}
to this:
# set temporary file name
#: ${TMPDIR:=$TEMPDIR}
#: ${TMPDIR:=$TMP}
: ${TMPDIR:=D:/InstallTools/Android/Cygwin_Root/tmp}
After this, I got it compiling.
You don't set the tmp directory. You can set it in /etc/profile or just in the terminal with export TMPDIR=/your/tmp/directory.
Notice:
1. If you compile with cygwin, the directory must be like D:/tmp. You can't use /cygdrive/d/tmp.
2. You must have the permission of the folder.
I could not get this to work either, I had the exact same problem. However I was able to compile using "android-ndk-r4". I am not sure at the moment what is causing the problem but if I ever get around to figuring it out I'll post that too.
So for now workaround is to use ndk r4.
I managed to build it, using NDK R6, cygwin. Indeed, it does not support /cydrive/ paths, simply use paths like windows; example below:
NDK=e:/AndroidSDK/NDK6
PLATFORM=$NDK/platforms/android-9/arch-arm/
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows
If you have not solved this problem, check the last part of config.log in the ffmpeg directory; it is most likely a path or CC parameter problem.
I have been having the exact same problem with r6. I have tried Lambage's suggestion with r4 but still could not get this to work.
I have been looking into the problem quite a lot and I think I've discovered the reason.
1)configure is calling the android cross compiler which is a windows .exe file.
2)It is calling it through cygwin which uses unix file naming conventions. E.G /cygdrive/c/directory instead of C:\directory
3)It says in the android NDK toolchain documentation that the cross compilers do NOT accept cygwin style filepaths (source: NDK/docs/STANDALONE_TOOLCHAIN.html):
5.1/ Windows support:
The Windows binaries do not depend on Cygwin. The good news is that they
are thus faster, the bad news is that they do not understand the Cygwin
path specification like /cygdrive/c/foo/bar (instead of C:/foo/bar).
I'm still trying to find a way to do this. If i solve it then I'll come back and edit this post...tbc

Categories

Resources