FFmpeg compiled for Android. Execute FFmpeg commands with ease in your Android app.

Overview

FFMPEG video operations

Kotlin Version Platform API Android Arsenal

FFmpeg compiled for Android. Execute FFmpeg commands with ease in your Android app.

Getting Started

This project is provide in-build FFmpeg operation queries:

Video operation ffmpeg queries like

  • Cut video using time
  • Convert image to video
  • Add water mark on video
  • Add text on video
  • Combine image image and video
  • Combine images
  • Combine videos
  • Compress a video
  • Extract frames from video
  • Fast/Slow motion video
  • Reverse video
  • video fade in / fade out
  • Compress video to GIF
  • Rotate and Flip video (Mirroring)
  • Remove audio from video
  • Update aspect ratio of video

Other extra operation FFmpeg queries like

  • Merge GIFs
  • Merge Audios
  • Update audio volume
  • Fast/Slow audio
  • Crop audio using time
  • Compress Audio

Architectures

FFmpeg Android runs on the following architectures:

  • arm-v7a, arm-v7a-neon, arm64-v8a, x86 and x86_64

Features

  • Enabled network capabilities
  • Multi-threading
  • Supports zlib and Media-codec system libraries
  • Camera access on supported devices
  • Supports API Level 24+

Support target sdk

  • 30

Dependency

Gradle Dependency

  • Add it in your root build.gradle at the end of repositories:

     allprojects {
         repositories {
     	...
     	maven { url 'https://jitpack.io' }
         }
     }
    
  • Add the dependency in your app's build.gradle file

     dependencies {
     	implementation 'com.github.SimformSolutionsPvtLtd:SSffmpegVideoOperation:1.0.7'
     }
    

This is all you have to do to load the FFmpeg library.

Run FFmpeg command

In this sample code we will run the FFmpeg -version command in background call.

  val query:Array<String> = "-i, input,....,...., outout"
        CallBackOfQuery().callQuery(this, query, object : FFmpegCallBack {
            override fun statisticsProcess(statistics: Statistics) {
                Log.i("FFMPEG LOG : ", statistics.videoFrameNumber)
            }

            override fun process(logMessage: LogMessage) {
                Log.i("FFMPEG LOG : ", logMessage.text)
            }

            override fun success() {
            }

            override fun cancel() {
            }

            override fun failed() {
            }
        })

In-build query example

= FFmpegQueryExtension().cutVideo(inputPath, startTimeString, endTimeString, outputPath) CallBackOfQuery().callQuery(this, query, object : FFmpegCallBack { override fun statisticsProcess(statistics: Statistics) { Log.i("FFMPEG LOG : ", statistics.videoFrameNumber) } override fun process(logMessage: LogMessage) { Log.i("FFMPEG LOG : ", logMessage.text) } override fun success() { //Output = outputPath } override fun cancel() { } override fun failed() { } }) ">
val startTimeString = "00:01:00" (HH:MM:SS)
val endTimeString = "00:02:00" (HH:MM:SS)
val query:Array<String> = FFmpegQueryExtension().cutVideo(inputPath, startTimeString, endTimeString, outputPath)
CallBackOfQuery().callQuery(this, query, object : FFmpegCallBack {
            override fun statisticsProcess(statistics: Statistics) {
                Log.i("FFMPEG LOG : ", statistics.videoFrameNumber)
            }

            override fun process(logMessage: LogMessage) {
                Log.i("FFMPEG LOG : ", logMessage.text)
            }

            override fun success() {
                //Output = outputPath
            }

            override fun cancel() {
            }

            override fun failed() {
            }
        })

same for other queries. And you can apply your query also

Medium Blog

For more info go to Multimedia Operations for Android using FFmpeg

Find this library useful? ❤️

Support it by joining stargazers for this repository.

License

Copyright 2021 Simform Solutions

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
Comments
  • this command not working only on android 11 and above.

    this command not working only on android 11 and above.

    val command = arrayOf( "-i", inputPath, "-filter:v", "crop=$width:$height:$x:$y", "-threads", "5", "-preset", "ultrafast", "-strict", "-2", "-c:a", "copy", outputPath ) his command not working only on android 11 and above library version 1.0.8

    help wanted 
    opened by ahmadbajwa0328 18
  • How to stop running command.

    How to stop running command.

    Hello I am using this library and working very great. I want to know how to stop the current running task?

    I didn't find any method to stop the current task. Please advise.

    I have checked it by finishing the activity but the problem is it is not stopped and continues running. and when i m trying to execute the new command the new command is waiting for the previous till it was not stopped.

    Thanks.

    opened by pradeepdotsquares 7
  • Error with convert image to video

    Error with convert image to video

    Please check combine Images to Video and Combine Images and Videos too

    To Reproduce Steps to reproduce the behavior:

    1. Go to 'Convert Image To Video'
    2. Select 1 image and input 1 to the edittext
    3. Create button click
    4. See error

    Error : create file failed or not?

    Screenshots image

    Desktop (please complete the following information):

    • OS: Android 10

    Smartphone (please complete the following information):

    • Device xiaomi readmi note 9
    opened by minhpdn 6
  • I can't use my query

    I can't use my query

    I want to increase the pitch of the audio and am writing my request for this. Like this:

    fun changePitchAudio(inputAudio: String, rate: Double, pitch: Double, output: String): Array { val inputs: ArrayList = ArrayList() inputs.apply { add("-i") add(inputAudio) add("-filter:a") add("asetrate=${rate * pitch}") add("-filter:a") add("aresample=$rate") add("-filter:a") add("atempo=${1 / pitch}") add("-vn") add("-preset") add("ultrafast") add(output) } return inputs.toArray(arrayOfNulls(inputs.size)) }

    but it not working. Please point me where I am wrong

    opened by dmitriy-kip 5
  • Output Video have less resolution

    Output Video have less resolution

    this is the best FFMPEG library i came through Hi guys How can we Encode video to custom resolution as the output video is less size but low resolution is big problem. especially when text overlay over video is used.the drawn text is blurred

    opened by rohitshama18 3
  • Could not find com.kovachcode:timePickerWithSeconds:1.0.1

    Could not find com.kovachcode:timePickerWithSeconds:1.0.1

    Followed the instruction to add this library in my Android Studio project but I am getting this error : Could not find com.kovachcode:timePickerWithSeconds:1.0.1

    Searched in the following locations: - https://dl.google.com/dl/android/maven2/com/kovachcode/timePickerWithSeconds/1.0.1/timePickerWithSeconds-1.0.1.pom - https://repo.maven.apache.org/maven2/com/kovachcode/timePickerWithSeconds/1.0.1/timePickerWithSeconds-1.0.1.pom - https://jitpack.io/com/kovachcode/timePickerWithSeconds/1.0.1/timePickerWithSeconds-1.0.1.pom

    What is the solution?

    opened by PallabJunior 3
  • Compression removes Video

    Compression removes Video

    Describe the bug First of all nice work with this Project I love it. I am currently tinkering around with ffmpeg on mobile and added your Project to mine to use the easy queries. I noticed that the compression fails some times and got outside filming a few videos to test with your App. When you try to compress a self filmed video it removes the video while compression and only gives a a sound file.

    To Reproduce Steps to reproduce the behavior:

    1. Go to Compress a Video
    2. Do a Compression
    3. It returns successfully
    4. In Android..data..app..Output is just a sound file

    Expected behavior A Video File.

    Smartphone (please complete the following information):

    • Device: [Samsung Galaxy S7 Edge]
    • OS: [Android 8.0.0]

    Additional context no changes to the video just filmed, and a try to compress

    opened by fj-gruenewald 3
  • No such filter: 'boxblur'

    No such filter: 'boxblur'

    I am trying to blur the entire video, I came across the following.

    however it doesn't work, I get Conversion failed.

    No such filter: 'boxblur' Error reinitializing filters! Failed to inject frame into filter network: Invalid argument

    I did some research and came across this, so how can I use 'boxblur'.

    If it can't, there is another way to blur the video.

    opened by Mathxr 2
  • Image add to Video Failed

    Image add to Video Failed

    the add image to video activity starts but results in "Conversion Failed" error. could you see logs and provide hint what is wrong here are the logs.

    2021-07-15 11:14:23.097 7073-7073/? I/SKBD: and isTosAccept false 2021-07-15 11:14:23.120 27165-27304/com.simform.videoimageeditor I/mobile-ffmpeg: Loaded mobile-ffmpeg-full-arm64-v8a-4.4-20200725. 2021-07-15 11:14:23.123 27165-27305/com.simform.videoimageeditor D/mobile-ffmpeg: Callback thread started. 2021-07-15 11:14:23.297 7073-7073/? I/SKBD: and isTosAccept false 2021-07-15 11:14:23.432 5796-5914/? D/NetworkController.MobileSignalController(0/-2): onSignalStrengthsChanged signalStrength=SignalStrength: 3 99 -3 -200 -3 -200 -1 99 2147483647 2147483647 2147483647 2147483647 0 2147483647 3 13 -107 0x1 P gsm|lte use_rsrp_and_rssnr_for_lte_level [-128, -118, -108, -98] [-115, -105, -95, -85] level=1 2021-07-15 11:14:23.432 5796-5914/? D/NetworkController.MobileSignalController(0/-2): getMobileIconGroup(): 0 2021-07-15 11:14:23.477 27165-27304/com.simform.videoimageeditor I/mobile-ffmpeg: ffmpeg version v4.4-dev-416 Copyright (c) 2000-2020 the FFmpeg developers 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) configuration: --cross-prefix=aarch64-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-arm64/ffmpeg --pkg-config=/usr/bin/pkg-config --enable-version3 --arch=aarch64 --cpu=armv8-a --cc=aarch64-linux-android24-clang --cxx=aarch64-linux-android24-clang++ --extra-libs='-L/home/taner/Projects/mobile-ffmpeg/prebuilt/android-arm64/cpu-features/lib -lndk_compat' --target-os=android --enable-neon --enable-asm --enable-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 libavformat 58. 48.100 / 58. 48.100 libavdevice 58. 11.101 / 58. 11.101 libavfilter 7. 87.100 / 7. 87.100 libswscale 5. 8.100 / 5. 8.100 libswresample 3. 8.100 / 3. 8.100 Input #0, image2, from '/storage/emulated/0/DCIM/Camera/20210713_154357.jpg': Duration: 00:00:00.04, start: 0.000000, bitrate: 483957 kb/s Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 4608x3456 [SAR 59:59 DAR 4:3], 25 fps, 25 tbr, 25 tbn, 25 tbc Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/MP4_20210715_093813.mp4': Metadata: major_brand : iso6 minor_version : 1 compatible_brands: mp42iso6avc1isom creation_time : 2021-07-15T04:08:13.000000Z Duration: 00:00:19.00, start: 0.000000, bitrate: 1681 kb/s Stream #1:0(und): Video: h264 (avc1 / 0x31637661), yuv420p(tv, bt709), 480x848, 1615 kb/s, 30 fps, 30 tbr, 600 tbn, 1200 tbc (default) Stream #1:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 63 kb/s (default) Input #2, lavfi, from 'anullsrc': Duration: N/A, start: 0.000000, bitrate: 705 kb/s Stream #2:0: Audio: pcm_u8, 44100 Hz, stereo, u8, 705 kb/s Codec AVOption preset (Configuration preset) specified for output file #0 (/storage/emulated/0/Android/data/com.simform.videoimageeditor/files/Output/Output1626327863.mp4) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream. Stream mapping: Stream #0:0 (mjpeg) -> scale Stream #1:0 (h264) -> scale Stream #1:1 (aac) -> concat:in1:a0 Stream #2:0 (pcm_u8) -> concat:in0:a0 concat:out:v0 -> Stream #0:0 (mpeg4) concat:out:a0 -> Stream #0:1 (aac) Press [q] to stop, [?] for help 2021-07-15 11:14:23.477 27165-27304/com.simform.videoimageeditor I/mobile-ffmpeg: [graph 0 input from stream 0:0 @ 0x7affd0ac00] sws_param option is deprecated and ignored [graph 0 input from stream 1:0 @ 0x7affd0ad80] sws_param option is deprecated and ignored [swscaler @ 0x7addbf1000] deprecated pixel format used, make sure you did set range correctly [mp4 @ 0x7af2941600] Frame rate very high for a muxer not efficiently supporting it. Please consider specifying a lower framerate, a different muxer or -vsync 2 [mpeg4 @ 0x7af239ad00] timebase 1/1000000 not supported by MPEG 4 standard, the maximum admitted value for the timebase denominator is 65535 Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height Conversion failed! 2021-07-15 11:14:23.498 7073-7073/? I/SKBD: and isTosAccept false 2021-07-15 11:14:23.579 6727-6983/? D/SDHMS:s: SIOP:: AP:309(389,90) BAT:354(354,0) CHG:385(385,0) USB:0(0,0) WIFI:303(359,50) ATC:0(0,-999) 2021-07-15 11:14:23.672 5478-12965/? D/WifiPermissionsUtil: canAccessScanResults: pkgName = com.sec.android.sdhms, uid = 1000 2021-07-15 11:14:23.698 7073-7073/? I/SKBD: and isTosAccept false

    opened by kalasaceo 1
  • Removing Activity Dependency from CallBackQuery callQuery

    Removing Activity Dependency from CallBackQuery callQuery

    By Creating a handler inside of the callQuery method you can remove the Activity Dependency from callQuery considering all you were doing was calling runOnUiThread in onSuccess. This is also better because now this can be called from a ViewModel without much issue.

    opened by adfwhitestar 0
  • Conflict with  c++_shared

    Conflict with c++_shared

    I believe library shall not add its own c++_shared lib. When we have build arguments:

    android {
        compileSdkVersion project.properties.sdk_version
        defaultConfig {
            minSdkVersion project.properties.min_sdk_version
            targetSdkVersion project.properties.sdk_version
            externalNativeBuild {
                cmake {
                    cppFlags "-std=c++14 -fexceptions"
                    arguments "-DANDROID_ARM_NEON=TRUE",'-DANDROID_STL=c++_shared'
                }
            }
        }
    

    Build fails with:

    2 files found with path 'lib/arm64-v8a/libc++_shared.so' from inputs:

    • /Users/renetik/Development/renetik-instruments-android/project/renetik-instruments-library-audio/build/intermediates/library_jni/debug/jni/arm64-v8a/libc++_shared.so
    • /Users/renetik/.gradle/caches/transforms-3/49930d1a19493a31fa0ff855b95c71e4/transformed/jetified-mobile-ffmpeg-full-4.4/jni/arm64-v8a/libc++_shared.so If you are using jniLibs and CMake IMPORTED targets, see https://developer.android.com/r/tools/jniLibs-vs-imported-targets
    opened by renetik 2
  •  java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol

    java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "av_log_default_callback" referenced by "/data/app/~~_0g3In5IkN7BxbJnYqAviA==/com.jangletech.chatchilli-l3iCrTOj5_bnf2qw-wkaXw==/lib/arm/libmobileffmpeg.so"...

    Describe the bug A clear and concise description of what the bug is.

    To Reproduce Steps to reproduce the behavior:

    1. Go to '...'
    2. Click on '....'
    3. Scroll down to '....'
    4. See error

    Expected behavior A clear and concise description of what you expected to happen.

    Screenshots If applicable, add screenshots to help explain your problem.

    Desktop (please complete the following information):

    • OS: [e.g. iOS]
    • Browser [e.g. chrome, safari]
    • Version [e.g. 22]

    Smartphone (please complete the following information):

    • Device: [e.g. iPhone6]
    • OS: [e.g. iOS8.1]
    • Browser [e.g. stock browser, safari]
    • Version [e.g. 22]

    Additional context Add any other context about the problem here.

    opened by darshanachorage7 0
  • Permission Denied issue callQuery method returns failed

    Permission Denied issue callQuery method returns failed

    2022-06-02 17:11:50.505 21178-22210/ E/sfsffdf: ffmpeg version v4.4-dev-416 2022-06-02 17:11:50.506 21178-22210/ E/sfsffdf: Copyright (c) 2000-2020 the FFmpeg developers 2022-06-02 17:11:50.506 21178-22210/ E/sfsffdf: 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) 2022-06-02 17:11:50.506 21178-22210/ E/sfsffdf: configuration: --cross-prefix=aarch64-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-arm64/ffmpeg --pkg-config=/usr/bin/pkg-config --enable-version3 --arch=aarch64 --cpu=armv8-a --cc=aarch64-linux-android21-clang --cxx=aarch64-linux-android21-clang++ --extra-libs='-L/home/taner/Projects/mobile-ffmpeg/prebuilt/android-arm64/cpu-features/lib -lndk_compat' --target-os=android --enable-neon --enable-asm --enable-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 2022-06-02 17:11:50.521 21178-22210/ E/sfsffdf: libavutil 56. 55.100 / 56. 55.100 2022-06-02 17:11:50.521 21178-22210/ E/sfsffdf: libavcodec 58. 96.100 / 58. 96.100 2022-06-02 17:11:50.521 21178-22210/ E/sfsffdf: libavformat 58. 48.100 / 58. 48.100 2022-06-02 17:11:50.521 21178-22210/ E/sfsffdf: libavdevice 58. 11.101 / 58. 11.101 2022-06-02 17:11:50.522 21178-22210/ E/sfsffdf: libavfilter 7. 87.100 / 7. 87.100 2022-06-02 17:11:50.522 21178-22210/ E/sfsffdf: libswscale 5. 8.100 / 5. 8.100 2022-06-02 17:11:50.522 21178-22210/ E/sfsffdf: libswresample 3. 8.100 / 3. 8.100 2022-06-02 17:11:50.530 21178-22210/ E/sfsffdf: /storage/emulated/0/Movies/abc/ZQQBNHZCWAMPKMS.mp4: Permission denied 2022-06-02 17:11:50.532 21178-22209/ E/sfsffdf: FAILED

    opened by mihirmodiofficial 5
  • Add Text to Image

    Add Text to Image

    Describe the bug I changed AddTextOnVideo feature to add text on Image. Here are queries. but when I run this command, I can see error ffmpeg error initializing filter 'drawtext' with args Please help me Screenshot 2022-04-19 at 12 45 24 PM

    This is my sample code.

    private fun addTextProcess(imagePath: String) {
            val outputPath = Common.getFilePath(this, Common.IMAGE)
            val dateString = Date().dateToString("yyyy-MM-dd HH:mm:ss.SSS")
            val fontPath = Common.getFileFromAssets(this, "roboto_regular.ttf").absolutePath
            val query = ffmpegQueryExtension.addTextOnVideo(imagePath, dateString,
                0.0f,
                0.0f,
                fontPath = fontPath,
                isTextBackgroundDisplay = false,
                fontSize = 30,
                fontcolor = "red",
                output = outputPath
            )
            CallBackOfQuery().callQuery(query, object : FFmpegCallBack {
                override fun process(logMessage: LogMessage) {
                    Log.d("Dalibor", logMessage.text)
                }
    
                override fun success() {
                   Log.d("Dalibor", "Sucess")
                }
    
                override fun cancel() {
                    addTimeStampToPhotos()
                }
    
                override fun failed() {
                    addTimeStampToPhotos()
                }
            })
        }
    
    opened by daliborristic883 1
  • Unknown encoder 'libx264'

    Unknown encoder 'libx264'

    Describe the bug Getting this error message while applying complex filter "Unknown encoder 'libx264'"

    To Reproduce Use the following command: "-i " + clipUri + " -i " + videoUri + " -t 0.1 -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=48000 -filter_complex " + "[0:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:-1:-1,setsar=1,fps=30,format=yuv420p[v0];" + "[1:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:-1:-1,setsar=1,fps=30,format=yuv420p[v1];" + "[1:a]aformat=sample_rates=48000:channel_layouts=stereo[a1];" + "[v0][2:a][v1][a1]concat=n=2:v=1:a=1[v][a]" + " -map [v] -map [a] -c:v libx264 -c:a aac -movflags +faststart " + outputUri

    Expected behavior Merged video output file

    Smartphone (please complete the following information):

    • Device: Redmi note 5 pro
    • OS: 9
    opened by ominfowave 1
Releases(1.0.8)
Owner
Simform Solutions
Simform Solutions
[] FFmpeg build for android random architectures with example jni

AndroidFFmpegLibrary This project aims to create working library providing playing video files in android via ffmpeg libraries. With some effort and N

AppUnite Sp. z o.o. Spk. 1.1k Dec 27, 2022
Android/iOS video player based on FFmpeg n3.4, with MediaCodec, VideoToolbox support.

ijkplayer Platform Build Status Android iOS Video player based on ffplay Download Android: Gradle # required allprojects { repositories {

bilibili 29.8k Dec 22, 2021
Video Transcoder is an application which uses the open source program FFmpeg to transcode video files from one format to another.

Video Transcoder Do you want to encode videos on your phone into different formats, trim videos, or extract audio? Are you looking for a free solution

Branden Archer 358 Dec 30, 2022
Listen to your favourite songs from Spotify with your friends in Discord (via Spotify Connect)

Adieux Listen to your favourite songs from Spotify with your friends in Discord (via Spotify Connect) Requires Spotify Premium. This project is self-h

Conor Byrne 6 Feb 15, 2022
TinyDamage - A Minecraft Mod that changes your Player size based on your Damage

Fabric Example Mod Setup For setup instructions please see the fabric wiki page

Marcel Böcker 2 Jan 13, 2022
Convert your YouTube channel into a native Android app using YouTube Data API v3.

Convert your YouTube channel into an app. Screenshots • Description • Features • Configuration • Documentation Screenshots Description Channelify is a

Aculix Technologies LLP 121 Dec 26, 2022
Noice is an android app that allows you to create your own set of background sounds by mixing clips from environmental sources.

A native Android app to relax, improve focus and boost productivity with minimal background noise.

Ashutosh Gangwar 666 Jan 3, 2023
Android app that uses Spotify API to recommend new music based on your listening history

Android app that uses Spotify API to recommend new music based on your listening history. Written in Kotlin and uses Spotify Web API and Android SDK. New music is presented in swipe cards where a left swipe plays the next song and a right swipe can add the app to your liked songs in Spotify.

null 3 Jun 5, 2022
Detailed listing of multimedia codecs on your Android device - with no ads!

Codec Info Detailed listing of multimedia codecs on your Android device - with no ads! Codec Info is a simple tool that provides detailed listing of m

Krzysztof Nawrot 46 Dec 18, 2022
Blade is an open source music player for Android, allowing you to play music from multiple services : files on your phone, Spotify, and more.

Blade Player Blade is an open source music player for Android, allowing you to play music from multiple services : files on your phone, Spotify, and m

Valentin HAUDIQUET 72 Jan 5, 2023
An app that can initiate call functionality in VoicePing app via broadcast

Guard App An app that can initiate call functionality in VoicePing app via broad

null 1 Jan 13, 2022
Android podcast app made with Jetpack Compose and ExoPlayer.

Podcast App Android podcast app made with Jetpack Compose and ExoPlayer. Podcast information provided by Listen Notes API. Features Jetpack Compose UI

Fabian 302 Jan 2, 2023
Transistor - Simple Radio App for Android

Transistor is an app with a minimalistic approach for listening to radio programs over the internet, which may not be to everyone's liking

y20k 421 Dec 29, 2022
Fire TV Sample App Android - Touch and D-Pad

Fire TV Sample App Android - Touch and D-Pad This sample Android project demonstrates how to build the main UI of a Fire TV application in order to su

Amazon 10 Nov 11, 2022
An offline music player android app, with modern UI and powerful features

Pulse Music An offline music player android app, with modern UI and powerful features If you liked this repo, fork it and leave a STAR. Your support m

Sharath 7 Apr 11, 2022
SocyMusic is an open-source Android music player written in Java with the aim of creating an easy-to-use app for exchanging and listening to top-quality music. Help us create it!

SocyMusic SocyMusic is an open-source Android music player written entirely in Java. It's objectives are to provide top-quality music to everyone for

Benji 23 Dec 26, 2022
Dicio assistant app for Android

Dicio assistant Dicio is a free and open source voice assistant running on Android. It supports many different skills and input/output methods, and it

Stypox 376 Dec 31, 2022
Proof of concept app for Android permanent denial-of-service vulnerability CVE-2020-0443

CVE-2020-0443 This is a proof of concept app that exploits CVE-2020-0443 to brick any Android device. After running the app and rebooting, the device

Sithija 11 Dec 21, 2022
Android app for streaming and downloading Movies, TV-Series and Anime.

CloudStream ⚠️ Warning: By default this app doesn't provide any video sources, you have to install extensions in order to add functionality to the app

null 309 Aug 21, 2022