2

i want to convert images into video in android using FFMPEG,still now i compiled the library successfully,and also get Libffmpeg.so. Using Platform: UBUNTU,Eclipse My problem is- when i use this library command too convert video into images through Java code i mean through my Activity i got Error- JAVA.IO.EXCEPTION.Enable to execute .Exec() command But if i exceute this command through CMD then my video file is created successfully. i want to know whats the problem behind it,i am searching from 2 days on it,but could not get the solution,i thing its problem of Execute Permission In android.Plzzz help me,,,or tell me is it possible to in android to make a video file using FFMPEG.

Code:

public class Mpeg extends Activity {

String cmd;

static {

    System.loadLibrary("ffmpeg");

}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_mpeg);
    File mf = Environment.getExternalStorageDirectory();




    String install="$adb push ./asl-native /sdcard/asl-native";

    String ins="$adb shell /system/bin/chmod 0777 /sdcard/asl-native";

    String start="$adb shell /system/bin/chmod 0777 /sdcard/asl-native";
    String str="$adb shell /system/bin/chmod 0777 /sdcard/asl-native";

    try{
        Process p = Runtime.getRuntime().exec(install);

        p = Runtime.getRuntime().exec(ins);

        p = Runtime.getRuntime().exec(start);

        p = Runtime.getRuntime().exec(str);


        Log.e("filee name", "goodddddd"+ install);
        Log.e("full command", "goodddddd"+ ins);

        }
        catch (Exception e) {
            Log.e("image", "exception");
        } 



    String livestream = mf.getAbsoluteFile()+"/smile.png";
    Log.e("image", "imageeeeeeeee " + livestream);

    String folderpth = mf.getAbsoluteFile()+"/RABBA.MP3";




    Log.e("Test", "songggggggggg " + folderpth);


    String output=mf.getAbsoluteFile()+"/plztest.mp4";;

    //String output = new File(Environment.getExternalStorageDirectory(), "plzz.mp4").getAbsolutePath();
    Log.e("Test", "outputttttt " + output);

    cmd= "ffmpeg -i "+ livestream +" -i "+ folderpth +" -acodec copy "+ output;

     Log.e("chck plzzzzz", "after "+ cmd);

    //String jaiho="ffmpeg -i image8.jpg -i file.m4a -acodec copy test.mp4";

    // Boolean heloo=isDeviceRooted_BySu();

     //Log.e("check file", "after "+ heloo);


    Button   run=(Button)findViewById(R.id.btn);


        run.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 // Perform action on click

                 try {
                     Execute();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
             }
         });


    /*

     try{

    Process p = Runtime.getRuntime().exec(cmd);
    Log.e("check file", "main fileeee ");

    }
    catch (IOException e) {
        throw new RuntimeException(e);

    } 
    */

 }


 public void Execute() throws IOException, InterruptedException{


       Process process=Runtime.getRuntime().exec(cmd);
        // process = pb.command(com).redirectErrorStream(true).start();


    }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.mpeg, menu);
    return true;
}


public static boolean isDeviceRooted_BySu() {
    try {
        Log.d("BySu", "BySu");
        Process p = Runtime.getRuntime().exec("su");
        return true;
    } catch (IOException e) {
        e.printStackTrace();
    }
    return false;
}

}


Logcat output:

06-05 17:58:10.686: D/dalvikvm(1189): Trying to load lib /data/data/com.example.myfmpeg /lib/libffmpeg.so 0x412a5cf0
06-05 17:58:10.756: I/dalvikvm(1189): threadid=3: reacting to signal 3
06-05 17:58:10.955: D/dalvikvm(1189): Added shared lib /data/data/com.example.myfmpeg/lib/libffmpeg.so 0x412a5cf0
06-05 17:58:10.955: D/dalvikvm(1189): No JNI_OnLoad found in /data/data/com.example.myfmpeg/lib/libffmpeg.so 0x412a5cf0, skipping init
06-05 17:58:11.024: I/dalvikvm(1189): Wrote stack traces to '/data/anr/traces.txt'
06-05 17:58:11.215: I/dalvikvm(1189): threadid=3: reacting to signal 3
06-05 17:58:11.326: I/dalvikvm(1189): Wrote stack traces to '/data/anr/traces.txt'
06-05 17:58:11.466: E/image(1189): imageeeeeeeee /mnt/sdcard/smile.png
06-05 17:58:11.466: E/Test(1189): songggggggggg /mnt/sdcard/RABBA.MP3
06-05 17:58:11.476: E/Test(1189): outputttttt /mnt/sdcard/video.mp4
06-05 17:58:11.476: E/chck plzzzzz(1189): after ffmpeg -i /mnt/sdcard/smile.png -i /mnt/sdcard/RABBA.MP3 -acodec copy /mnt/sdcard/video.mp4
06-05 17:58:11.896: E/AndroidRuntime(1189): FATAL EXCEPTION: main
06-05 17:58:11.896: E/AndroidRuntime(1189): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myfmpeg/com.example.myfmpeg.Mpeg}: java.lang.RuntimeException: java.io.IOException: Error running exec(). Command: [ffmpeg, -i, /mnt/sdcard/smile.png, -i, /mnt/sdcard/RABBA.MP3, -acodec, copy, /mnt/sdcard/video.mp4] Working Directory: null Environment: null
06-05 17:58:11.896: E/AndroidRuntime(1189):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at android.os.Looper.loop(Looper.java:137)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at android.app.ActivityThread.main(ActivityThread.java:4424)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at java.lang.reflect.Method.invokeNative(Native Method)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at java.lang.reflect.Method.invoke(Method.java:511)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-05 17:58:11.896: E/AndroidRuntime(1189):     at dalvik.system.NativeStart.main(Native Method)
06-05 17:58:11.896: E/AndroidRuntime(1189): Caused by: java.lang.RuntimeException: java.io.IOException: Error running exec(). Command: [ffmpeg, -i, /mnt/sdcard/smile.png, -i, /mnt/sdcard/RABBA.MP3, -acodec, copy, /mnt/sdcard/video.mp4] Working Directory: null Environment: null
Michael
  • 57,169
  • 9
  • 80
  • 125
Nitish Singla
  • 171
  • 1
  • 8
  • Are you using the libffmpeg.so created on Ubuntu inside Android? That's only going to work if the platforms for both Ubuntu and Android were same, which they aren't! Please look up "Cross-compiling FFMPEG on Android" – alok Oct 27 '16 at 07:26

0 Answers0