OneClick Movie Maker Released

Here it is, OneClick Movie Maker is released. We can download it from Google Play at: https://play.google.com/store/apps/details?id=roman10.chocolate

The idea of this app is to make video editing easy with just a single click. Well, maybe multiple clicks eventually. The screenshot below illustrate the idea.

screenshot_phone_3

Figure 1. OneClick Movie Maker Video Effects

As shown above, we can apply a video effects/filters to videos by a single click. The video will starts playing with the effects automatically. Once we’re sure which effect/filter to apply, we click the top right button to trigger the video processing.

The processing is completely asynchronous. Actually, it runs on a remote process on its own. This means one can continue to play with the app without worrying about the video processing, which can take a long time if the video is big.

The app can handle multiple video editing easily. We can apply filters to as many videos as we want without waiting for the previous ones to finish. These video processing will be queued and finished one by one. Better still, the app provides an interface for one to manage the tasks pending, as shown below.

screenshot_phone_3

Figure 2. OneClick Video Maker: manages current tasks

Once the videos are processed, they’ll appear in processed page and videos page, where we can play and share the video.

I’ve made a demo video about the app. Hopefully it gives everyone a brief idea of how the app works.

 

The app is still in beta stage, I’ll add more functions, including adding frame borders, more effects/filters etc. Hope you’ll like it. 😉 The app can be downloaded from Google play OneClick Movie Maker.

Android Video2Gif Released

Several months ago, my friend asks my help to convert a video to an animated gif so it can be shared on a social network. I googled a little bit and managed to do it with a few command line tools on Linux. It’s not difficult but it can be troublesome, especially for non-tech people.
Then I searched for Android gif making apps. There are plenty of them, but none are made for converting video to gif. I decided to write one.
I got busy with my new job and a few other stuff, the development is delayed. When I resume, there’s already an app that does video to gif, and it takes the “video to gif” app name. 🙂
So here is the app, Android Video2Gif. You can convert a video to gif by three clicks.

  1. click a video from Videos tab or Browser tab, this goes to video extract screen.
  2. click extract on top right corner of the screen, this might take a while to sample frames from the video. After it’s done, it goes to gif edit screen.
  3. click ok to start gif generation.

Below are a few screenshots.

sc

Pic 1. Video2Gif Screenshots

The app is still in beta, so I expect there will be issues on some devices. As always, all feedback are welcome.

Android Audio Editor 1.0.0 Released

Last Saturday, I released a new app Android Audio Editor.

Because I was busy with my master thesis and a few other stuff, I haven’t released any new apps for over 10 months. Now my master course is over and I’m back to app development again. It feels good. 🙂

This new app took me about one month to finish. It uses the open source ffmpeg library and ringdroid application. Below is a few screenshots of the app.

1

In terms of functions, Android audio editor has the following main features.

  • ringtone maker: create free ringtone/alarm/notification from mp3 or aac file
  • audio conversion: wav to mp3 conversion, wma to mp3, m4a to mp3, mp3/wav/wma/m4a to aac conversion
  • audio extraction: extract mp3 from mp4 video

As always, if you have any suggestions, please leave a comment.

Video Converter Android > 1,000,000 Downloads

Last Saturday, Oct 6 2012, to be exact, Video Converter Android has reached 1,000,000 downloads milestone.

The app is first released on Dec 17 2011. It takes less than 10 months to reach the 1 million downloads, much faster than I expected. 🙂

I checked my blog, below is a list of milestones in terms of downloads.

  • Jan 21 2012: 50, 000 downloads
  • Feb 20, 2012: 100, 000 downloads
  • Jul 26 2012: 500, 000 downloads
  • Oct 6 2012: 1,000,000 downloads

The daily download count is now stable at around 8000.

Enough good news. The bad news about the stats is the active users are only around 20%. That means the app cannot keep the users for long. I personally think there’s a few reasons listed as below.

  • video conversion is generally slow. I cannot do much about this. Hopefully when mobile devices get more powerful, this will change.
  • Not many times people need to convert videos. Lots of people may download the app, convert it and then uninstall the app.
  • The app size is big, especially the codec (~10MB). People will uninstall the app for more space.
  • The app doesn’t work for some videos on some devices. I am trying to support more devices and videos, but it is hard.

Anyway, I will continue to refine the app. If you have any ideas of how to make the app better, please leave a comment below.

Write Search Engine Friendly Android App Description — Geek’s Approach with Apache Solr, Apache Nutch and Adwords

Many Android users find apps through search. Therefore it is important to write a search engine friendly app description. In this post, we’ll build a search engine to see how our app description works.

The basic idea is as follows. Firstly, we crawl app descriptions related to our app in Google Play (using Apache Nutch). Secondly, we get a few search terms which are frequently used by mobile phone users and related to our app. The third step is to use Nutch to crawl our app description (stored in a text file). The fourth step is to build a search engine to search the data crawled (using Apache Solr). The fifth step is to search with the terms we obtained at step 2 and see how our app ranks. We can refine our app description, and repeat step 3 and step 5.

Below we describe each step in detail.

1. Crawl Google Play app description data using Apache Nutch.

If you don’t have Apache Nutch set up, please refer to Apache Nutch set up and basic usage. In addition, please follow instructions at Apache Nutch Crawling HTTPS to enable HTTPS crawling for Apache Nutch. Note that we need this because Google Play data is accessed through HTTPS.

Note that the conf/nutch-site.xml should have the following configuration.

<configuration>

       <property>

               <name>http.agent.name</name>

               <value>Nutch Test Spider</value>

       </property>

       <property>

               <name>plugin.includes</name>

 

<value>protocol-httpclient|urlfilter-regex|parse-(html|tika)|index-(basic|anchor)|scoring-opic|urlnormalizer-(pass|regex|basic)</value>

 

       </property>

</configuration>

We want to crawl only app description data, so we change the conf/regex-urlfilter.txt file to something as below.

# skip file: ftp: and mailto: urls

-^(file|ftp|mailto):

# skip image and other suffixes we can't yet parse

# for a more extensive coverage use the urlfilter-suffix plugin

-.(gif|GIF|jpg|JPG|png|PNG|ico|ICO|css|CSS|sit|SIT|eps|EPS|wmf|WMF|zip|ZIP|ppt|PPT|mpg|MPG|xls|XLS|gz|GZ|rpm|RPM|tgz|TGZ|mov|MOV|exe|EXE|jpeg|JPEG|bmp|BMP|js|JS)$

# skip URLs with slash-delimited segment that repeats 3+ times, to break loops

-.*(/[^/]+)/[^/]+1/[^/]+1/

#skip comments and description in other languages

-reviewId

-hl=

# accept app description only

+^https://play.google.com/store/apps/details?id

Specifically, we filtered out URLs contains reviewId and hl, which corresponds to the review pages and description pages in other languages (we only consider default description here).

We’ll create a urls folder with a file named seed.txt under it by the commands below.

cd ${nutch root folder}
mkdir urls
cd urls
touch seed.txt

The following content should be added to the seed.txt file. (In our example, we’ll crawl data related to the app Video Converter Android)

https://play.google.com/store/apps/details?id=roman10.media.converter

Then we can use the following script to crawl the data.

#!/bin/bash

bin/nutch inject crawl/crawldb urls

for i in {1..10}

do

   bin/nutch generate crawl/crawldb crawl/segments -topN 100

   s2=`ls -dtr crawl/segments/2* | tail -1`

   echo $s2

   bin/nutch fetch $s2

   bin/nutch parse $s2

   bin/nutch updatedb crawl/crawldb $s2

done

bin/nutch invertlinks crawl/linkdb -dir crawl/segments

The number of iterations and topN can be other values depend on how many data we want to collect.

Save the content to a script crawl.sh under nutch root directory, and start crawling by enter the following command,

chmod +x crawl.sh
./crawl.sh

2. Obtain a list of keywords using Google Adwords Keyword Tool.

The Google Adwords Keyword Tool allows us to get keywords and their search frequencies. The advanced options let us to constrain the result based on locations, languages, etc. Since we’re dealing with mobile apps, we set the “Show Ideas and Statistics for” as “All mobile devices”. Below is a screenshot of the tool.

Below is a list of 12 keywords and the times they’ve been searched within a month.

video converter: 450,000
video to video converter: 450,000
video to audio: 301,000
video audio: 301,000
audio from video: 301,000
video converters: 201,000
video convert: 135,000
free video converter: 74,000
videos converter: 74,000
video converter free: 74,000
free video converters: 40,500
mp4 video converter: 12,100

3. Use Apache Nutch to Crawl App Description in Text

Suppose our app description is saved in a file /home/roman10/desp/app.txt, we will make the following changes to enable crawling for text app description at Nutch.
Firstly, the conf/nutch-site.xml should be updated with the following configuration.

<configuration>

       <property>

               <name>http.agent.name</name>

               <value>Nutch Test Spider</value>

       </property>

       <property>

<name>plugin.includes</name>

<value>protocol-file|urlfilter-regex|parse-(xml|text|html|js|pdf|tika)|index-basic|query-(basic|site|url)</value>

       </property>

</configuration>

Secondly, we change the regex-urlfilter.txt to something below.

# skip http, ftp and mail, crawl for file

-^(http|ftp|mailto):

# skip image and other suffixes we can't yet parse

# for a more extensive coverage use the urlfilter-suffix plugin

-.(gif|GIF|jpg|JPG|png|PNG|ico|ICO|css|CSS|sit|SIT|eps|EPS|wmf|WMF|zip|ZIP|ppt|PPT|mpg|MPG|xls|XLS|gz|GZ|rpm|RPM|tgz|TGZ|mov|MOV|exe|EXE|jpeg|JPEG|bmp|BMP|js|JS)$

# skip URLs containing certain characters as probable queries, etc.

-[?*!@=]

# accept anything else

+.

Thirdly, we’ll create update seed.txt under urls folder to pointing to the file.

file:////home/roman10/desp/app.txt

Fourth, we update the crawl.sh script to something below.

#!/bin/bash

bin/nutch inject localfs/crawldb urls

bin/nutch generate localfs/crawldb localfs/segments -topN 1

s2=`ls -dtr localfs/segments/2* | tail -1`

echo $s2

bin/nutch fetch $s2

bin/nutch parse $s2

bin/nutch updatedb localfs/crawldb $s2

bin/nutch invertlinks localfs/linkdb -dir localfs/segments

Lastly, we perform the text crawling by enter the command below.

./crawl.sh

4. Build the Search Engine with Apache Solr

The detailed instructions of how to set up Apache Solr can be found at post Apache Solr: Basic Set Up and Integration with Apache Nutch.

To index the crawled http app description and text description, we shall use the command below.

bin/nutch solrindex http://127.0.0.1:8983/solr/ crawl/crawldb -linkdb crawl/linkdb crawl/segments/*
bin/nutch solrindex http://127.0.0.1:8983/solr/ localfs/crawldb -linkdb localfs/linkdb localfs/segments/*

Note that the indexing can be done with Apache Solr running.

5. Search the App using the Keywords and Refine the Description

We go to http://localhost:8983/solr/admin/ to search the list of keywords we obtained at step 2. Once we are at the page, click “FULL INTERFACE” at “Make a Query” to switch to full interface. Check the “Debug:enable” checkbox. We can then start searching. Below is a screenshot of the interface with query string set to “video converter”.

Once we hit the Search button, below is the list of results returned.

According to the result above, our description in the text file ranks at number 1, therefore we’re confident about it. Note that the crawled description from the web page may contain some other content besides description, therefore it may not be a fair comparison. But it should be good enough for a rough estimation of how good our description is.

In case our description does not rank good, we can refine the description, crawl, index and search again until we get a good ranking.

One Small Change in a Minute that Increases Daily App Download by 2000+

Recently I made a small change to my Video Converter Android app description. And the dialy download count has increased from 2500~3000 to 5000+, as shown below,

increase

The change only takes one minute. I added the descriptions in all languages Google Play allows. And it’s all done by Google translate automatically. Google Play developer console has make this really simple. It can be done in a minute.

I thought about the reason behind this. If users want to find some apps, they will probably search by the keywords. Many people use their mother tongue to search. The description is probably the most important information that the search engine is collecting about an app. The description, name etc. are analyzed to build the search index. If the description is in many languages, the search engine is going to have more info to build the index and have more keywords related to the app. Therefore the app can reach a broader range of users through search.

That’s it, since the small change in one minute, Video Converter Android has enjoyed 5000+ daily downloads.

Video Converter Android > 500,000 Downloads

Video converter android has reached 500,000 downloads today. My previous estimation was that it will reach this milestone next month, but recently the daily download count has been stable around 5,000, that’s 2,000 more than the previous daily download count. So here we are, at 500, 269 total downloads on Jul 26 2012.

Video converter android is firstly released on Dec 17 2011. It takes less than 8 months to reach 500,000. I will continue to polish the app, make it more user friendly, and provide more features.

Below is screenshot of the statistics shown on my Google play developer console,

Figure 1. video converter android total downloads and active installs

And here is the recent daily download count jump from ~3000 to ~5000,

increase

Figure 2. the daily download count jump

I’ll write a separate post to explain why this jump occurs.

Video Converter Android 1.1.0 Released

If you simply want to download the app, go to go to https://play.google.com/store/apps/details?id=roman10.media.converter

It has been two and a half months since Video Converter Android 1.0.0 is released. For all the users who have sent feedback and suggestions to me, I apologize for the delay and I hope the new version can resolve issues by some of you.

The highlights of the new version are as below,

  • Reduce size profile: user specify a target video size, the converter will try to convert to about the size. It will even convert to multiple output files if a single file of target size is too small for the video.
  • Keep quality profile: lots of users feedback to me that the quality of conversion sucks. This profile allows you to keep the original quality.
  • Arbitrary resolution: previously users can only select from a few resolutions. Now you can enter the height and width as whatever value you want. Unreasonable values will fail.
  • UI polish: lots of UI improvement has been made. Below is a screenshot of the new UI. Hope you like it.

1_1_0_converting1_1_0_quality1_1_0_size

Figure 1. Screenshots of Video Converter Android 1.1.0

I’ll continue to work on the app. The features expected are as the following,

  • Extract audio and save as mp3 function
  • Extract video clip from original video
  • Extract a frame from original video

As always, bug reports, suggestions and feedback are appreciated! Please leave comments below.

For downloading the app, go to https://play.google.com/store/apps/details?id=roman10.media.converter

Side Note: Video Converter Android has been downloaded for more than 400,000 times and it’s expected to surpass 500K next month.

Video Converter Android > 100,000 Downloads

Video Converter Android has crossed 100,000 downloads on Feb 20, 2012. It has been in Top 100 list of Android Video&Media category for over a month.

Recently I’ve been busy with my work and study, so I didn’t have time for improving the app. It’s functioning well on most Android devices, but there’re still lots of users sending failure feedback. I’ll try to resolve the issues as long as I have some time for the app again.

Video Converter Android Has > 50,000 Downloads

Video converter android has reached 50,000 downloads on Jan 21 2012. It reaches this number in slightly more than one month.

Though it’s still in beta release with lots of issues and not so good reviews (~3.0), the download figure makes me believe it’s an app that people need. The app is even listed at Top 50 in Video&Media category for about two weeks.

The next release will be around end of Jan 2012. I’ll also release a paid version for ARMV7 device with NEON function. The new features include more settings for video conversion, including resolution, bitrate, etc. A basic ffmpeg command line interface will be provided.

Stay tuned!