Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scoped storage #32

Closed
gururajKp opened this issue Apr 26, 2021 · 15 comments
Closed

Scoped storage #32

gururajKp opened this issue Apr 26, 2021 · 15 comments
Assignees
Labels
android Affect Android platform ffmpeg-question Question about using ffmpeg library Affects the library no-issue-activity question Further information is requested saf Issue about storage access framework v4.4 Affects v4.4 release

Comments

@gururajKp
Copy link

gururajKp commented Apr 26, 2021

Description
Hi Working on android 11 OS. As I was using your ffmpeg libray 4.2.2.LTS library every thing is working perfectly. Now as we have to use scope storage, can I use the same version 4.2.2.LTS or I have to use your latest 4.4.LTS ?

Current behavior
Now I am using 4.4.LTS for testing purpose and the command is "String cmommand = ("-y -i " + videoPath + " -t -vf hue=h=0:s=2.5 metadata:s:v rotate=0 -c:v libx264 -preset ultrafast -ar 44100 -c:a aac -ab 128k -strict -2 "+filePath);" its giving error like "Invalid duration specification for t: -vf". Please let me know which one I have to use 4.2.2.LTS or 4.4.LTS

@tanersener tanersener added android Affect Android platform question Further information is requested labels Apr 26, 2021
@tanersener
Copy link
Collaborator

Scoped storage changes are implemented in v4.4. Earlier versions don't have them. So, you must use v4.4 (Main or LTS).

@gururajKp
Copy link
Author

gururajKp commented Apr 27, 2021

@tanersener Hi yes I started to use 4.4.LTS

I am using your command given in your sample code

" exe="-y -i " +videoPath+" -filter_complex [0:v]trim=0:"+startMs/1000+",setpts=PTS-STARTPTS[v1];[0:v]trim="+startMs/1000+":"+endMs/1000+",setpts=0.5*(PTS-STARTPTS)[v2];[0:v]trim="+(endMs/1000)+",setpts=PTS-STARTPTS[v3];[0:a]atrim=0:"+(startMs/1000)+",asetpts=PTS-STARTPTS[a1];[0:a]atrim="+(startMs/1000)+":"+(endMs/1000)+",asetpts=PTS-STARTPTS,atempo=2[a2];[0:a]atrim="+(endMs/1000)+",asetpts=PTS-STARTPTS[a3];[v1][a1][v2][a2][v3][a3]concat=n=3:v=1:a=1 "+"-b:v 2097k -vcodec mpeg4 -crf 0 -preset superfast "+filePath;"

but I am getting errors below. Is der any change in the command format?????

[[2021-04-27 10:17:28.647 2664-3612/pixelsdev.videomaker.videoeditor E/FileUtils: android.permission.WRITE_EXTERNAL_STORAGE permission not available
2021-04-27 10:17:31.901 2664-2664/pixelsdev.videomaker.videoeditor E/MediaMetadataRetrieverJNI: getEmbeddedPicture: Call to getEmbeddedPicture failed.
2021-04-27 10:17:44.140 319-319/? E/Layer: [SurfaceView - pixelsdev.videomaker.videoeditor/pixelsdev.videomaker.videoeditor.VideoEditingActivity#0] No local sync point found
2021-04-27 10:17:44.182 2664-3620/pixelsdev.videomaker.videoeditor E/EGL_emulation: eglQueryContext 32c0 EGL_BAD_ATTRIBUTE
2021-04-27 10:17:44.182 2664-3620/pixelsdev.videomaker.videoeditor E/EGL_emulation: tid 3620: eglQueryContext(2019): error 0x3004 (EGL_BAD_ATTRIBUTE)
2021-04-27 10:17:44.344 544-3672/? E/ActivityManager: ANR in pixelsdev.videomaker.videoeditor (pixelsdev.videomaker.videoeditor/pixelsdev.videomaker.newscreen.LaunchActivity)
PID: 2664
Reason: Input dispatching timed out (e9bb752 pixelsdev.videomaker.videoeditor/pixelsdev.videomaker.newscreen.LaunchActivity (server) is not responding. Waited 5004ms for FocusEvent(hasFocus=false))
Parent: pixelsdev.videomaker.videoeditor/pixelsdev.videomaker.newscreen.LaunchActivity
Load: 14.91 / 5.98 / 2.22
----- Output from /proc/pressure/memory -----
some avg10=13.13 avg60=3.09 avg300=0.69 total=2694915
full avg10=9.52 avg60=1.96 avg300=0.41 total=1716905
----- End output from /proc/pressure/memory -----

CPU usage from 0ms to 9809ms later (2021-04-27 10:17:34.520 to 2021-04-27 10:17:44.328):
  32% 2194/com.android.vending: 10% user + 22% kernel / faults: 20073 minor 29 major
  19% 2664/pixelsdev.videomaker.videoeditor: 6.4% user + 13% kernel / faults: 28450 minor 59 major
  19% 544/system_server: 5.8% user + 14% kernel / faults: 12575 minor 105 major
  8.6% 89/kswapd0: 0% user + 8.6% kernel
  5.7% 362/media.codec: 1.9% user + 3.7% kernel / faults: 52916 minor 87 major
  5.6% 359/mediaserver: 1.1% user + 4.4% kernel / faults: 9811 minor 128 major
  5.6% 1474/com.google.android.gms: 1.9% user + 3.6% kernel / faults: 6960 minor 53 major
  3.8% 2879/com.google.android.apps.messaging: 1.2% user + 2.6% kernel / faults: 5793 minor 7 major
  3.6% 3372/com.google.android.apps.maps: 1.5% user + 2.1% kernel / faults: 4236 minor 71 major
  3.2% 1112/com.google.android.gms.persistent: 0.6% user + 2.6% kernel / faults: 4649 minor 21 major
  2.5% 319/surfaceflinger: 0.1% user + 2.4% kernel / faults: 694 minor 138 major
  2.3% 16/ksoftirqd/1: 0% user + 2.3% kernel
  2.3% 339/adbd: 0.5% user + 1.8% kernel / faults: 2 minor
  2.2% 26/ksoftirqd/3: 0% user + 2.2% kernel
  2.1% 715/com.android.systemui: 1.4% user + 0.7% kernel / faults: 7508 minor 18 major
  1.9% 200/jbd2/dm-5-8: 0% user + 1.9% kernel
  1.9% 2801/com.google.android.webview:sandboxed_process0:org.chromium.content.app.Sand: 0.3% user + 1.6% kernel / faults: 2643 minor
  1.6% 137/kworker/u8:3-kverityd: 0% user + 1.6% kernel
  1.2% 21/ksoftirqd/2: 0% user + 1.2% kernel
  1.2% 298/android.hardware.graphics.composer@2.3-service: 0.2% user + 1% kernel
  0.1% 364/media.swcodec: 0% user + 0% kernel / faults: 5556 minor 212 major
  1.1% 9/ksoftirqd/0: 0% user + 1.1% kernel
  1.1% 170/logd: 0.4% user + 0.7% kernel / faults: 86 minor 6 major
  1.1% 881/com.android.phone: 0.6% user + 0.5% kernel / faults: 2079 minor 3 major
  1.1% 3233/com.google.android.webview:sandboxed_process0:org.chromium.content.app.Sand: 0.3% user + 0.8% kernel / faults: 1964 minor
  1% 297/android.hardware.graphics.allocator@3.0-service: 0% user + 1% kernel / faults: 128 major
  1% 357/media.extractor: 0.5% user + 0.5% kernel / faults: 2380 minor 35 major
  1% 1312/com.google.process.gservices: 0.8% user + 0.2% kernel / faults: 1848 minor
  1% 1378/com.google.android.providers.media.module: 0.4% user + 0.6% kernel / faults: 1015 minor 1 major
  0.9% 316/audioserver: 0.2% user + 0.7% kernel / faults: 213 minor 28 major
  0.7% 141/kworker/u8:4-kverityd: 0% user + 0.7% kernel
  0.5% 194/kworker/u9:1-fscrypt_read_queue: 0% user + 0.5% kernel
  0.5% 321/logcat: 0.3% user + 0.2% kernel / faults: 1 major
  0.4% 10/rcu_preempt: 0% user + 0.4% kernel
  0.4% 92/kworker/u8:1-kverityd: 0% user + 0.4% kernel
  0.4% 306/android.hardware.sensors@2.1-service.multihal: 0.1% user + 0.3% kernel
  0.4% 455/logcat: 0.1% user + 0.3% kernel / faults: 1 major
  0.4% 458/kworker/u8:5-kverityd: 0% user + 0.4% kernel
  0.4% 838/com.android.networkstack.process: 0.3% user + 0.1% kernel / faults: 1472 minor 4 major
  0.3% 136/kworker/2:1H-kblockd: 0% user + 0.3% kernel
  0.3% 171/lmkd: 0% user + 0.3% kernel
  0.3% 195/kworker/u9:2-blk_crypto_wq: 0% user + 0.3% kernel
  0.3% 196/kworker/u9:3-blk_crypto_wq: 0% user + 0.3% kernel
  0.3% 282/statsd: 0.1% user + 0.2% kernel / faults: 90 minor 24 major

2021-04-27 10:17:49.973 2664-4217/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: /storage/emulated/0/Movies/Folder/fastforward1619498869009.mp4: File exists](url)

](url)

@gururajKp
Copy link
Author

I am using this command for changing the color of video "String cmd = ("-y -i "+videoPath+" -t "+ getDurationString(duration)+" -vf transpose hue=h=0:s=2.5 -metadata:s:v rotate=0 -c:v libx264 -preset ultrafast -ar 44100 -c:a aac -ab 128k -strict -2" +filePath);"
I am getting the error "Unable to find a suitable output format for 'hue=h=0:s=2.5'"

below out put of ffmpeg.

[](Copyright (c) 2000-2020 the FFmpeg developers
I/mobile-ffmpeg: built with Android (6454773 based on r365631c2) clang version 9.0.8 (https://android.googlesource.com/toolchain/llvm-project 98c855489587874b2a325e7a516b99d838599c6f) (based on LLVM 9.0.8svn)
I/mobile-ffmpeg: configuration: --cross-prefix=i686-linux-android- --sysroot=/files/android-sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/sysroot --prefix=/home/taner/Projects/mobile-ffmpeg/prebuilt/android-x86/ffmpeg --pkg-config=/usr/bin/pkg-config --enable-version3 --arch=i686 --cpu=i686 --cc=i686-linux-android24-clang --cxx=i686-linux-android24-clang++ --extra-libs='-L/home/taner/Projects/mobile-ffmpeg/prebuilt/android-x86/cpu-features/lib -lndk_compat' --target-os=android --disable-neon --disable-asm --disable-inline-asm --enable-cross-compile --enable-pic --enable-jni --enable-optimizations --enable-swscale --enable-shared --enable-v4l2-m2m --disable-outdev=fbdev --disable-indev=fbdev --enable-small --disable-openssl --disable-xmm-clobber-test --disable-debug --enable-lto --disable-neon-clobber-test --disable-programs --disable-postproc --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --disable-sndio --disable-schannel --disable-securetransport --disable-xlib --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --disable-videotoolbox --disable-audiotoolbox --disable-appkit --disable-alsa --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-gmp --enable-gnutls --enable-libmp3lame --enable-libass --enable-iconv --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxml2 --enable-libopencore-amrnb --enable-libshine --enable-libspeex --enable-libwavpack --enable-libkvazaar --enable-libilbc --enable-libopus --enable-libsnappy --enable-libsoxr --enable-libaom --enable-libtwolame --disable-sdl2 --enable-libvo-amrwbenc --enable-zlib --enable-mediacodec
libavutil 56. 55.100 / 56. 55.100
libavcodec 58. 96.100 / 58. 96.100
I/mobile-ffmpeg: libavformat 58. 48.100 / 58. 48.100
libavdevice 58. 11.101 / 58. 11.101
libavfilter 7. 87.100 / 7. 87.100
I/mobile-ffmpeg: libswscale 5. 8.100 / 5. 8.100
libswresample 3. 8.100 / 3. 8.100
W/mobile-ffmpeg: Trailing option(s) found in the command: may be ignored.
I/mobile-ffmpeg: Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/Movies/VID_20210421_101749.mp4':
Metadata:
I/mobile-ffmpeg: major_brand :
I/mobile-ffmpeg: mp42
minor_version :
0
compatible_brands:
isommp42
I/mobile-ffmpeg: creation_time :
I/mobile-ffmpeg: 2021-04-21T04:47:55.000000Z
I/mobile-ffmpeg: location :
I/mobile-ffmpeg: +37.4234-122.0839/
I/mobile-ffmpeg: location-eng :
+37.4234-122.0839/
I/mobile-ffmpeg: com.android.version:
11
Duration:
I/mobile-ffmpeg: 00:00:04.82
, start:
0.000000
, bitrate:
3741 kb/s
I/mobile-ffmpeg: Stream #0:0
(eng)
I/mobile-ffmpeg: : Video: h264 (avc1 / 0x31637661), yuv420p(tv, GBR), 1280x720, 3056 kb/s
I/mobile-ffmpeg: , SAR 1:1 DAR 16:9
,
24.69 fps,
26.67 tbr,
90k tbn,
I/mobile-ffmpeg: 180k tbc
(default)
Metadata:
rotate :
90
I/mobile-ffmpeg: creation_time :
2021-04-21T04:47:55.000000Z
handler_name :
I/mobile-ffmpeg: VideoHandle
Side data:

displaymatrix: rotation of -90.00 degrees

I/mobile-ffmpeg: Stream #0:1
(eng)
: Audio: amr_nb (samr / 0x726D6173), 8000 Hz, mono, flt, 12 kb/s
I/mobile-ffmpeg: (default)
Metadata:
creation_time :
I/mobile-ffmpeg: 2021-04-21T04:47:55.000000Z
handler_name :
SoundHandle)

@tanersener
Copy link
Collaborator

tanersener commented Apr 27, 2021

The first command fails because of android.permission.WRITE_EXTERNAL_STORAGE permission not available error.

The second issue happens because your command is wrong. There are two video filters after -vf. ffmpeg thinks the second video filter is an option/flag.

@tanersener tanersener added the ffmpeg-question Question about using ffmpeg label Apr 27, 2021
@gururajKp
Copy link
Author

Hi @tanersener HI I changed the command "String[] cmd2 = {"-y", "-i", videoPath, "-t", getDurationString(duration), "-vf","hue=h=0:s=0", filePath};" this command is working for below 11 android emulator, But when I try to execute in 11 Android emulator it gives out put as below. File got created with zero size.

2021-04-29 14:15:07.796 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: configuration: --cross-prefix=i686-linux-android- --sysroot=/files/android-sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/sysroot --prefix=/home/taner/Projects/mobile-ffmpeg/prebuilt/android-x86/ffmpeg --pkg-config=/usr/bin/pkg-config --enable-version3 --arch=i686 --cpu=i686 --cc=i686-linux-android16-clang --cxx=i686-linux-android16-clang++ --extra-libs='-L/home/taner/Projects/mobile-ffmpeg/prebuilt/android-x86/cpu-features/lib -lndk_compat' --target-os=android --disable-neon --disable-asm --disable-inline-asm --enable-cross-compile --enable-pic --enable-jni --enable-optimizations --enable-swscale --enable-shared --enable-v4l2-m2m --disable-outdev=fbdev --disable-indev=fbdev --enable-small --disable-openssl --disable-xmm-clobber-test --disable-debug --enable-lto --disable-neon-clobber-test --disable-programs --disable-postproc --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --disable-sndio --disable-schannel --disable-securetransport --disable-xlib --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --disable-videotoolbox --disable-audiotoolbox --disable-appkit --disable-alsa --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-gmp --enable-gnutls --enable-libmp3lame --enable-libass --enable-iconv --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxml2 --enable-libopencore-amrnb --enable-libshine --enable-libspeex --enable-libwavpack --enable-libkvazaar --enable-libilbc --enable-libopus --enable-libsnappy --enable-libsoxr --enable-libaom --enable-libtwolame --disable-sdl2 --enable-libvo-amrwbenc --enable-zlib --enable-mediacodec
2021-04-29 14:15:07.803 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: libavutil 56. 55.100 / 56. 55.100
2021-04-29 14:15:07.803 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: libavcodec 58. 96.100 / 58. 96.100
2021-04-29 14:15:07.803 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: libavformat 58. 48.100 / 58. 48.100
2021-04-29 14:15:07.803 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: libavdevice 58. 11.101 / 58. 11.101
2021-04-29 14:15:07.803 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: libavfilter 7. 87.100 / 7. 87.100
2021-04-29 14:15:07.803 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: libswscale 5. 8.100 / 5. 8.100
2021-04-29 14:15:07.803 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: libswresample 3. 8.100 / 3. 8.100
2021-04-29 14:15:08.046 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/Movies/VID_20210421_101749.mp4':
2021-04-29 14:15:08.051 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: Metadata:
2021-04-29 14:15:08.051 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: major_brand :
2021-04-29 14:15:08.051 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: mp42
2021-04-29 14:15:08.051 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: minor_version :
2021-04-29 14:15:08.051 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: 0
2021-04-29 14:15:08.051 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: compatible_brands:
2021-04-29 14:15:08.051 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: isommp42
2021-04-29 14:15:08.051 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: creation_time :
2021-04-29 14:15:08.051 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: 2021-04-21T04:47:55.000000Z
2021-04-29 14:15:08.053 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: com.android.version:
2021-04-29 14:15:08.053 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: 11
2021-04-29 14:15:08.053 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: Duration:
2021-04-29 14:15:08.054 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: 00:00:04.82
2021-04-29 14:15:08.054 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: , start:
2021-04-29 14:15:08.054 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: 0.000000
2021-04-29 14:15:08.054 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: , bitrate:
2021-04-29 14:15:08.054 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: 3741 kb/s
2021-04-29 14:15:08.054 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: Stream #0:0
2021-04-29 14:15:08.054 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: (eng)
2021-04-29 14:15:08.054 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: : Video: h264 (avc1 / 0x31637661), yuv420p(tv, GBR), 1280x720, 3056 kb/s
2021-04-29 14:15:08.054 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: , SAR 1:1 DAR 16:9
2021-04-29 14:15:08.054 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: ,
2021-04-29 14:15:08.054 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: 24.69 fps,
2021-04-29 14:15:08.054 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: 26.67 tbr,
2021-04-29 14:15:08.054 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: 90k tbn,
2021-04-29 14:15:08.054 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: 180k tbc
2021-04-29 14:15:08.054 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: (default)
2021-04-29 14:15:08.054 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: Metadata:
2021-04-29 14:15:08.054 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: rotate :
2021-04-29 14:15:08.054 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: 90
2021-04-29 14:15:08.055 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: creation_time :
2021-04-29 14:15:08.055 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: 2021-04-21T04:47:55.000000Z
2021-04-29 14:15:08.055 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: handler_name :
2021-04-29 14:15:08.055 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: VideoHandle
2021-04-29 14:15:08.055 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: Side data:
2021-04-29 14:15:08.055 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg:
2021-04-29 14:15:08.055 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: displaymatrix: rotation of -90.00 degrees
2021-04-29 14:15:08.055 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: Stream #0:1
2021-04-29 14:15:08.055 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: (eng)
2021-04-29 14:15:08.055 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: : Audio: amr_nb (samr / 0x726D6173), 8000 Hz, mono, flt, 12 kb/s
2021-04-29 14:15:08.055 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: (default)
2021-04-29 14:15:08.055 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: Metadata:
2021-04-29 14:15:08.055 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: creation_time :
2021-04-29 14:15:08.055 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: 2021-04-21T04:47:55.000000Z
2021-04-29 14:15:08.055 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: handler_name :
2021-04-29 14:15:08.055 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: SoundHandle
2021-04-29 14:15:08.057 12886-13402/pixelsdev.videomaker.videoeditor E/mobile-ffmpeg: /storage/emulated/0/Movies/Folder/reversescope1619685907559.mp4: File exists

This is how I am calling FFMPEG

[[ final String filePath;
String filePrefix = "Videoeditor";
String fileExtn = ".mp4";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {

        ContentValues valuesvideos = new ContentValues();
        valuesvideos.put(MediaStore.Video.Media.RELATIVE_PATH, "Movies/" + "Folder");
        valuesvideos.put(MediaStore.Video.Media.TITLE, filePrefix+System.currentTimeMillis());
        valuesvideos.put(MediaStore.Video.Media.DISPLAY_NAME, filePrefix+System.currentTimeMillis()+fileExtn);
        valuesvideos.put(MediaStore.Video.Media.MIME_TYPE, "video/mp4");
        valuesvideos.put(MediaStore.Video.Media.DATE_ADDED, System.currentTimeMillis() / 1000);
        valuesvideos.put(MediaStore.Video.Media.DATE_TAKEN, System.currentTimeMillis());
        Uri uri = getContentResolver().insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, valuesvideos);
        File file= null;
        try {
            file = FileUtils.getFileFromUri(this,uri);
        } catch (Exception e) {
            e.printStackTrace();
        }
        filePath=file.getAbsolutePath();

    }else{
        filePrefix = "reverse";
        fileExtn = ".mp4";
        File dest = new File(new File(app_folder), filePrefix + fileExtn);
        int fileNo = 0;
        while (dest.exists()) {
            fileNo++;
            dest = new File(new File(app_folder), filePrefix + fileNo + fileExtn);
        }
        filePath = dest.getAbsolutePath();
    }
    int duration = getVideoDuration(videoPath);

    String[] cmd2 = {"-y", "-i", videoPath, "-t", getDurationString(duration), "-vf","hue=h=0:s=0", filePath};

    execFFmpegBinary(cmd2);](url)

}](url)
[
private void execFFmpegBinary(final String[] command) {

    Config.enableLogCallback(new LogCallback() {
        @Override
        public void apply(LogMessage message)  {
            Log.e(Config.TAG, message.getText());
        }
    });
    Config.enableStatisticsCallback(new StatisticsCallback() {
        @Override
        public void apply(Statistics newStatistics) {
            Log.e(Config.TAG, String.format("frame: %d, time: %d", newStatistics.getVideoFrameNumber(), newStatistics.getTime()));
            Log.d("TAG", "Started command : ffmpeg " + Arrays.toString(command));

        }
    });
    Log.d("TAG", "Started command : ffmpeg " + Arrays.toString(command));
    //progressDialog.setMessage("Processing...");
    progressDialog.show();

    long executionId = com.arthenica.mobileffmpeg.FFmpeg.executeAsync(command, (executionId1, returnCode) -> {
        if (returnCode == Config.RETURN_CODE_SUCCESS) {
            progressDialog.dismiss();
            Toast.makeText(getApplicationContext(),"SUCCESS",Toast.LENGTH_LONG).show();
            Log.d("TAG", "Finished command : ffmpeg " + Arrays.toString(command));
            callActivity();
        }
        else if(returnCode == RETURN_CODE_CANCEL)
        {
            progressDialog.dismiss();
            Toast.makeText(getApplicationContext(),"Command Canelled",Toast.LENGTH_LONG).show();
            Log.d("TAG", "Finished command : ffmpeg " + Arrays.toString(command));
        }
        else {
            Toast.makeText(getApplicationContext(),"Command Failed",Toast.LENGTH_LONG).show();
            progressDialog.dismiss();
        }
    });
    Log.e("TAG", "execFFmpegMergeVideo executionId-" + executionId);
}](url)

@tanersener
Copy link
Collaborator

Your logs have a different error /storage/emulated/0/Movies/Folder/reversescope1619685907559.mp4: File exists. Are you running the same command?

@gururajKp
Copy link
Author

gururajKp commented Apr 29, 2021

@tanersener In first comment u told after -vf there are two video filters, so I changed the command

  1. "String cmd = ("-y -i "+videoPath+" -t "+ getDurationString(duration)+" -vf transpose hue=h=0:s=2.5 -metadata:s:v rotate=0 -c:v libx264 -preset ultrafast -ar 44100 -c:a aac -ab 128k -strict -2" +filePath);"
    to
  2. "String[] cmd2 = {"-y", "-i", videoPath, "-t", getDurationString(duration), "-vf","hue=h=0:s=0", filePath};"

Second command is working below 11 but in 11 it is giving error.

@tanersener
Copy link
Collaborator

tanersener commented Apr 29, 2021

in 11 Android emulator it gives out put as below. File got created with zero size.

This is your message.

/storage/emulated/0/Movies/Folder/reversescope1619685907559.mp4: File exists

And this is the error message in your logs.

What I'm trying to say is, I don't get whether your file is created with zero size or your command fails with File exists error. Can you explain that please?

@gururajKp
Copy link
Author

gururajKp commented Apr 30, 2021

@tanersener my command fails with File exists error (returnCode 1) only in android 11 below 11 command is working.

@tanersener
Copy link
Collaborator

-y option is used to tell ffmpeg to override a file in a command. Are you sure you have that option in your command?

@gururajKp
Copy link
Author

-y option is used to tell ffmpeg to override a file in a command. Are you sure you have that option in your command?

@tanersener yes that command is having "-y".

@tanersener
Copy link
Collaborator

Then you have another problem. I'll suggest deleting the file manually and running the command again.

@gururajKp
Copy link
Author

Then you have another problem. I'll suggest deleting the file manually and running the command again.

@tanersener creating file was the problem.
After using below code things started to work

File outputDir = context.getCacheDir(); // context being the Activity pointer
try {
File outputFile = File.createTempFile("videoedit", ".mp4", outputDir);
filePath = outputFile.getAbsolutePath();
} catch (IOException e) {
e.printStackTrace();
}

@tanersener tanersener self-assigned this May 1, 2021
@tanersener tanersener added library Affects the library LTS Affects LTS releases saf Issue about storage access framework v4.4 Affects v4.4 release and removed LTS Affects LTS releases labels May 1, 2021
@github-actions
Copy link

github-actions bot commented Jul 1, 2021

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@matan-d
Copy link

matan-d commented Jan 18, 2023

Then you have another problem. I'll suggest deleting the file manually and running the command again.

@tanersener creating file was the problem. After using below code things started to work

File outputDir = context.getCacheDir(); // context being the Activity pointer try { File outputFile = File.createTempFile("videoedit", ".mp4", outputDir); filePath = outputFile.getAbsolutePath(); } catch (IOException e) { e.printStackTrace(); }

This is the solution for Scoped Storage (Android 10+)
Thank you, it worked!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
android Affect Android platform ffmpeg-question Question about using ffmpeg library Affects the library no-issue-activity question Further information is requested saf Issue about storage access framework v4.4 Affects v4.4 release
Projects
None yet
Development

No branches or pull requests

3 participants