Huy Tower
Huy Tower

Reputation: 7966

Compress video with ffmpeg4android library

I tried to follow ffmpeg4android library, and I get the problem when compressing the video, as the Log image below.

I use intent to transfer to Compressing Media class,

Intent intent = new Intent(this, CompressingMedia.class);
intent.putExtra("file_path", mLlItems.get(0).getPath());
startActivity(intent);

This is the class was transfered to :

public class CompressingMedia extends BaseWizard {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Intent intent = getIntent();

    Log.d(Prefs.TAG, "path " + intent.getExtras().getString("file_path"));
    // /storage/emulated/0/DCIM/Camera/VID_20140312_090612.mp4

    String command = "ffmpeg -y -i " + intent.getExtras().getString("file_path") + 
            " -strict experimental -s 320x240 -r 15 -aspect 3:4 -ab 12288 -vcodec mpeg4 -b 2097152 -sample_fmt s16 /sdcard/out.mp4";

    // if you want to change the default work location (/sdcard/videokit/) use the uncomment the below method.
    // It must be defined before calling the copyLicenseAndDemoFilesFromAssetsToSDIfNeeded method,
    // in order for this method to copy the assets to the correct location.
            //      setWorkingFolder("/sdcard/videokit/");

    // this will copy the license file and the demo video file.
    // to the videokit work folder location.
    // without the license file the library will not work.
    copyLicenseAndDemoFilesFromAssetsToSDIfNeeded();

    commandStr = command;
    setCommand(commandStr);

    runTranscoing();
    }
}

Although I received the notification Transcoding Successfully, but it looks like the capacity of file after compressing is always be 0. (the log in the bottom of images)

I don't know the result as image below is good or not, I can not get the expected result - The video was compressed totally successfully.

Someone know why after compressing the file is always be 0, please tell me. Thanks.

This is the Log Cat :

03-13 14:49:45.655: I/ActivityManager(6065): Timeline: Activity_launch_request id:app.cloudstringers time:38212359

03-13 14:49:45.665: V/Home(6065): Global ID is 000400010007;Sell is 3

03-13 14:49:45.770: D/ffmpeg4android(6065): path /storage/emulated/0/videokit/out.mp4

03-13 14:49:45.770: I/ffmpeg4android(6065): workingFolderPath: /sdcard/videokit/

03-13 14:49:45.775: D/ffmpeg4android(6065): Working directory exists, not coping assests (license file and demo videos)

03-13 14:49:45.785: D/ffmpeg4android(6065): output directory exists.

03-13 14:49:45.785: I/ffmpeg4android(6065): Command is set

03-13 14:49:45.785: I/ffmpeg4android(6065): set remoteNotificationIconId: 0

03-13 14:49:45.785: D/ffmpeg4android(6065): Client Cannot unbind - service not bound

03-13 14:49:45.785: D/ffmpeg4android(6065): Client stopService()

03-13 14:49:45.790: W/ContextImpl(6065): Implicit intents with startService are not safe: Intent { act=com.netcompss.ffmpeg4android.FFMpegRemoteServiceBridge } android.content.ContextWrapper.stopService:499 com.netcompss.ffmpeg4android_client.BaseWizard.stopService:451 com.netcompss.ffmpeg4android_client.BaseWizard.runTranscoing:285

03-13 14:49:45.795: I/ffmpeg4android(6065): !!!!!!!!!!!!!!!!!!services.size(): 1

03-13 14:49:45.795: I/ffmpeg4android(6065): putting Base categoty

03-13 14:49:45.810: D/ffmpeg4android(6065): started: com.netcompss.ffmpeg4android.FFMpegRemoteServiceBridge

03-13 14:49:45.810: D/ffmpeg4android(6065): Client startService()

03-13 14:49:45.810: D/ffmpeg4android(6065): bindService() called

03-13 14:49:45.815: W/ContextImpl(6065): Implicit intents with startService are not safe: Intent { act=com.netcompss.ffmpeg4android.FFMpegRemoteServiceBridge } android.content.ContextWrapper.bindService:517 com.netcompss.ffmpeg4android_client.BaseWizard.bindService:462 com.netcompss.ffmpeg4android_client.BaseWizard.runTranscoing:288

03-13 14:49:45.820: D/ffmpeg4android(6065): Client bindService()

03-13 14:49:45.935: I/ffmpeg4android(6616): =======service onCreate(): Stopping forground (to overcome 2.3.x bug)

03-13 14:49:45.935: I/ffmpeg4android(6616): =======service onBind()=======

03-13 14:49:45.940: I/ffmpeg4android(6616): ===onStartCommand called

03-13 14:49:45.940: I/ffmpeg4android(6616): ===onStartCommand cat: Base

03-13 14:49:45.940: D/ffmpeg4android(6616): onStartCommand, START_STICKY, base Command

03-13 14:49:45.955: I/ffmpeg4android(6616): get remoteNotificationIconId: 0

03-13 14:49:45.955: I/ffmpeg4android(6616): notifIcon is set

03-13 14:49:45.955: I/ffmpeg4android(6616): Start RemoteService with notification id: 5326

03-13 14:49:45.965: I/ffmpeg4android(6616): Run called.

03-13 14:49:45.965: D/ffmpeg4android(6616): Sleeping, waiting for command

03-13 14:49:45.970: D/ffmpeg4android(6065): Client onServiceConnected()

03-13 14:49:45.970: I/ffmpeg4android(6065): invokeService called

03-13 14:49:45.970: I/Videokit(6065): licenseCheck in path: /sdcard/videokit

03-13 14:49:45.970: I/Videokit(6065): isLicExistsComplex...

03-13 14:49:45.970: I/Videokit(6065): trying to open /sdcard/videokit/ffmpeglicense.lic

03-13 14:49:45.970: I/Videokit(6065): license file found...

03-13 14:49:45.970: I/Videokit(6065): time decoded: 1394535283

03-13 14:49:45.970: I/Videokit(6065): timeStrDec 1394535283 is a valid number.

03-13 14:49:45.970: I/Videokit(6065): time diff: 161702

03-13 14:49:45.970: I/Videokit(6065): You used 1 of your 15 trial days.

03-13 14:49:45.970: I/ffmpeg4android(6065): setting remote notification info

03-13 14:49:45.970: D/ffmpeg4android(6616): command items num: 21

03-13 14:49:45.970: D/ffmpeg4android(6616): command: ffmpeg -y -i /storage/emulated/0/videokit/out.mp4 -strict experimental -s 320x240 -r 15 -aspect 3:4 -ab 12288 -vcodec mpeg4 -b 2097152 -sample_fmt s16 /sdcard/out.mp4

03-13 14:49:45.970: D/ffmpeg4android(6616): workingFolder from remote: /sdcard/videokit

03-13 14:49:45.970: D/ffmpeg4android(6065): deleteing: /sdcard/videokit/vk.log isdeleted: true

03-13 14:49:45.975: D/ffmpeg4android(6065): deleteing: /sdcard/videokit/ffmpeg4android.log isdeleted: false

03-13 14:49:45.975: D/ffmpeg4android(6065): deleteing: /sdcard/videokit/videokit.log isdeleted: true

03-13 14:49:45.980: D/ffmpeg4android(6065): Client invokeService()

03-13 14:49:45.980: D/ffmpeg4android(6065): Acquire wake lock

03-13 14:49:46.265: D/ffmpeg4android(6616): Sleeping, waiting for command

03-13 14:49:46.295: D/ffmpeg4android(6065): TranscodeBackground doInBackground started

03-13 14:49:46.295: I/ffmpeg4android(6616): =======remote service runTranscoding ======

03-13 14:49:46.340: V/HomeAsync(6065): TOTAL_SPACE is 1;AVAILABLE_SPACE is 0.451

03-13 14:49:46.345: I/ActivityManager(6065): Timeline: Activity_idle id: android.os.BinderProxy@423deed8 time:38213045

03-13 14:49:46.345: I/ActivityManager(6065): Timeline: Activity_idle id: android.os.BinderProxy@420323a0 time:38213045

03-13 14:49:46.565: D/dalvikvm(6616): Trying to load lib /data/app-lib/app.cloudstringers-2/libvideokit.so 0x41b285f0

03-13 14:49:46.570: D/dalvikvm(6616): Added shared lib /data/app-lib/app.cloudstringers-2/libvideokit.so 0x41b285f0

03-13 14:49:46.570: I/Videokit(6616): Loading native library compiled at 21:59:53 Oct 23 2013

03-13 14:49:46.575: I/ffmpeg4android(6616): ===============Running command from thread path: /sdcard/videokit

03-13 14:49:46.575: I/Videokit(6616): vk ffmpeg sdcardPath: /sdcard/videokit

03-13 14:49:46.575: I/Videokit(6616): licenseCheck in path: /sdcard/videokit

03-13 14:49:46.575: I/Videokit(6616): isLicExistsComplex...

03-13 14:49:46.575: I/Videokit(6616): trying to open /sdcard/videokit/ffmpeglicense.lic

03-13 14:49:46.575: I/Videokit(6616): license file found...

03-13 14:49:46.575: I/ffmpeg4android(6616): =======ProgressBackgroundRemote doInBackground=========

03-13 14:49:46.575: I/Videokit(6616): time decoded: 1394535283

03-13 14:49:46.575: I/Videokit(6616): timeStrDec 1394535283 is a valid number.

03-13 14:49:46.575: I/Videokit(6616): time diff: 161703

03-13 14:49:46.575: I/Videokit(6616): You used 1 of your 15 trial days.

03-13 14:49:46.575: D/Videokit(6616): license check rc: 0

03-13 14:49:46.575: D/Videokit(6616): run() called verion 2.0

03-13 14:49:46.575: D/Videokit(6616): run passing off to main()

03-13 14:49:46.800: D/ffmpeg4android(6065): onServiceDisconnected

03-13 14:49:48.640: I/ffmpeg4android(6065): Got real duration: 00:00:07.78

03-13 14:49:48.640: I/ffmpeg4android(6065): ==== getting currentVkLogSize from VK

03-13 14:49:48.640: D/ffmpeg4android(6065): currentVkLogSize: 5751

03-13 14:49:48.645: I/ffmpeg4android(6065): No ffmpeg4android_log file, using vk log

03-13 14:49:48.645: I/line(6065): _rate, rate, width or height

03-13 14:49:48.650: I/line(6065): Statistics: 0 seeks, 0 writeouts

03-13 14:49:48.650: I/line(6065): Statistics: 72873 bytes read, 2 seeks

03-13 14:49:48.650: D/ffmpeg4android(6065): currentTimeStr: exit

03-13 14:49:48.650: D/ffmpeg4android(6065): ============Found one of the exit tokens in the log============

03-13 14:49:48.650: I/ffmpeg4android(6065): onProgressUpdate: 100

03-13 14:49:48.650: D/ffmpeg4android(6065): Releasing wake lock

03-13 14:49:48.650: D/ffmpeg4android(6065): TranscodeBackground onPostExecute

03-13 14:49:48.700: D/ffmpeg4android(6065): /sdcard/videokit/null length in bytes: 0

03-13 14:49:48.700: D/ffmpeg4android(6065): showNotifications

03-13 14:49:48.700: W/ffmpeg4android(6065): output file is not set use the setOutputFilePath method to set the full output file path

03-13 14:49:48.705: I/ffmpeg4android(6065): FFMPEG finished.

03-13 14:49:48.710: D/ffmpeg4android(6065): releaseService()

03-13 14:49:48.710: D/ffmpeg4android(6065): Client stopService()

03-13 14:49:48.710: W/ContextImpl(6065): Implicit intents with startService are not safe: Intent { act=com.netcompss.ffmpeg4android.FFMpegRemoteServiceBridge } android.content.ContextWrapper.stopService:499 com.netcompss.ffmpeg4android_client.BaseWizard.stopService:451 com.netcompss.ffmpeg4android_client.BaseWizard.handleServiceFinished:513

Upvotes: 3

Views: 7556

Answers (2)

Eli
Eli

Reputation: 768

According to your log, the command you used is not correct. Its possible your video file does not correspond to the size, and aspect parameters you used.

See your log line here: 03-13 14:49:48.645: I/line(6065): _rate, rate, width or height

The best way is to post a link to the input video file so I can check it.

Upvotes: 0

George Y.
George Y.

Reputation: 11779

You may also consider using the real (and free!) FFmpeg for Android from the original source: http://trac.ffmpeg.org/wiki/How%20to%20compile%20FFmpeg%20for%20Android instead of using some third-party compilation from a guy who seems to violate FFmpeg LGPL license.

Upvotes: 2

Related Questions