How to build and use ffmpeg within android - java

I am prototyping a fairly simple camera app to test out using MediaRecorder to create a custom camera activity with one snag, I want to set the aspect ratio of recorded videos to a 1x1. Through much research I have found that this is only possible by using a library like FFMPEG to crop each frame of the video to the size I desire.
I have read many tutorials and articles on different ways to build FFMPEG into Android, but most of them are either outdated and use older versions of both the Android NDK and FFMPEG, or more recent ones just do not work when followed. I tried following the popular http://www.roman10.net/how-to-build-ffmpeg-for-android/‎ and a few other similar ones that all lead to an error about a missing pkg-config file because FFMPEG is generally meant to be installed on linux or another OS apparently. I found some information about building FFMPEG in android by using a make-standalone-toolchain.sh file here http://software.intel.com/en-us/android/blogs/2013/12/06/building-ffmpeg-for-android-on-x86 and can't make heads or tails as to how to go about using this method.
This now leads into my question: What is the best/proven way currently to build and use FFMPEG within android applications? If the standalone toolchain method is the way to go, is there any material better than the one listed that is easier to follow? I would even be open to a reliable template application with the FFMPEG Libraries ready to go (if this is possible); although, I would much rather know how to build this into android for future use.
Thank you in advance for any advice or suggestions on this issue.

I have successfully build ffmpeg libraries using
https://code.google.com/p/dolphin-player/
You have to be on Ubuntu to build that.

This is the guide I liked the most: http://www.roman10.net/how-to-build-ffmpeg-with-ndk-r9/
If you need more options, you can take a look at these, which are equally good:
https://github.com/guardianproject/android-ffmpeg
https://github.com/halfninja/android-ffmpeg-x264
https://vec.io/posts/how-to-build-ffmpeg-with-android-ndk
EDIT: I updated the first link with a more recent article (it uses NDK r9).

Related

Writing an App with Android Studio to watch a Live Video which is provided by a Camera

I am currently working on a project. I have learned Java for ~4 years and am completely new to Android Studio.
In this project, a camera with artificial intelligence should recognize people within a certain radius.
With an Android app that I want to program using Java via Android Studio, I want to access the camera and query the information.
My question would be, with which tool or library can I program such an app and what else do i need?
I tried to use OpenCV and also Exoplayer, watched several different tutorials, but nothing really worked out for me.
My question would be, with which tool or library can I program such an app and what else do i need?
I thought using histograms might be the right apporach. I looked around and found this intersting project. https://isl.cs.technion.ac.il/wp-content/uploads/2020/11/Face_Recognition_Project.pdf
Introduction
Our goal was to create a fully operational mobile application which could detect,
recognize and track human faces.
In order to do that, we have decided to use the Android[3] platform combined
with the opencv library[4][5].
The development of the application was made on Qualcomm MSM8960[6] mobile device which run a 4.0.3 Android OS.
In addition to the application we have built, we also did a research about how
well we can use LDA[1] and PCA[2] in order to recognize faces and also about
the use of LDA in order to do basic pose estimation.
This is also interesting: https://towardsdatascience.com/face-recognition-how-lbph-works-90ec258c3d6b

Running ffplay video within a jframe

I wish to play a video in JFrame. I am already using ffmpeg in my project. As I wish to keep the project light, I am not willing to use other frameworks like JMF or other. I know that I can play video using ffplay. But the problem here is ffplay opens the video in new window when I try
ffplay output.avi
I wish to put that video within my JFrame, like a player. How can I do this?
Request:
Please ask for any other clarifications, details, and suggest improvements or comment what you find wrong before downvoting or voting to close the question:). I will change it. I am really new to Java, I tried searching this but could not find any possible solution.
What I tried? I couln't find anything related to this, so I don't have any code. I am familiar to how to create frames, and can use runtime to ffplay video. But I got no clue how to put that video within my window:(.
All suggestions are welcome if you can suggest me other methods to play the video. But I haven't use any frameworks other than ffmpeg. And do not wish to make the application heavier. So it would be more helpful if it can be achieved using ffplay.
Look at the JMF 2.1.1 - Supported Formats. If the video types you wish to support are covered by the cross-platform1 version of the JMF, or you can find an SPI for the format, I'd say use JMF.
The 'performance pack' version uses natives which are now very old. I would not recommend trying to use them.

How to make H.264 file fast-forwardable in Android application?

I am an intern at company and my 'learning task' is to make Android application in Java, which takes H.264 format videos (at first they will be stored at SD card) and make like a very simple player, which would have the following features:
1.You can pause/play/fast-forward/fast-backward video
2.When you are at certain point of video and it is stopped, you can switch to the same time in a different video (same picture frame index i guess).
How could i do that? Is using Gstreamer a good way? I looked at the poor tutorial available on net and because of my lack of experience in video processing (I've never worked with video in Android applications) I have quite a hard time understanding what is pipelines, also the JNI and even setting up Gstreamer for Eclipse. Is there a better way of doing this? What should I get to know before starting to mess with this program?
Thanks, in advance!
All of your mentioned features are possible in Gstreamer, however, there is a learning curve.
To understand the GStreamer android tutorials, you must first go through the basic tutorials here: http://docs.gstreamer.com/display/GstSDK/Basic+tutorials
If you feel comfortable with the pipeline architecture, then go ahead and set up your android environment (which is no easy task by itself). Gstreamer is a very very powerful framework where you can do almost anything, if you're willing to make the effort to overcome the learning curve.
So i suggest to go ahead in gstreamer only if you have the time and patience, else go for a simpler solution. Unfortunately i'm not familiar with android, so i cannot suggest any. maybe a quick google search will help.

CaptureFromFile in OpenCV on Android in Java

Maybe I'm being a bit slow, but I can't find the equivalent of CaptureFromFile for grabbing video frames one by one from a file in OpenCV in Java on Android.
Can anyone put me out of my misery please and show me where to look?
Many thanks
Barry
OpenCV does not support video reading/writing on Android yet.
Take a look at solution in here. Also, it seems like Open CV is available thrue Android NDK, here you may find how to use it. In addition, you may take a look at Processing, which i believe supports Open CV and able to export code as apk.

How to play tracker modules on Android?

I posted this question over at anddev.org and thougt here was a good place to post this too because this site has a bigger usergroup.
I will make it shorter here: How can i play .xm or .mod files on the android platform? Is there a good android compatible library for the playback? I cant seem to find one. I dont search a player like Extended Multimedia Player, just a library.
I know i could convert all the modules to mp3 but I don't like that. It would blow up the app in filesize.
Regards.
AndEngine is probably a good way to go.
Or if you just want to add mod/xm playing to your own code base, check out my page:
building libmodplug for android
there are a few caveats (using older Android NDK, building version 0.8.6 of libmodplug, could use better thread handling) but basically it works. There's an example apk with source.
Also recently added a new app using libmodplug with soundtracks from two of my games - 44 songs in 1.2MB :)
PGsoundtracks
The 2D game engine AndEngine has an extension that can play .mod files, it might suit your needs:
http://code.google.com/p/andenginemodplayerextension/
download xmp player from Android Market. That is the module Andengine extensions are using. You don't need Andengine nor their extensions for that.

Categories