Android ffmpeg命令显示java.io.IOException:运行exec()时出错

fcg9iug3  于 2023-05-27  发布在  Android
关注(0)|答案(1)|浏览(130)

我想在我的Android项目中使用ffmpeg二进制可执行文件。为此,我使用了此(https://github.com/hiteshsondhi88/ffmpeg-android/releases/download/v0.3.3/prebuilt-binaries.zip)链接中的预构建ffmpeg Android二进制文件。
按照步骤,我必须将executable文件放入/data/data/com.example.rampedsample目录,这里的com.example.rampedsample是我的项目packageName。我无法在我的设备中找到此位置,因为它是unrooted.So我使用DDMS透视图将可执行文件粘贴到Android emulatorcom.example.rampedsample目录中。
在我的活动中使用了下面的代码

try {
            Process p = Runtime.getRuntime().exec("/data/data/com.example.rampedsample/ffmpeg "+Environment.getExternalStorageDirectory()+"/Movies/ramp_video.mp4"
                    +" -map 0:v -codec copy "+Environment.getExternalStorageDirectory()+"/Movies/ramp_video2.mp4");

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

Android Manifest权限

<uses-permission 
    android:name="android.permission.WRITE_EXTERNAL_STORAGE"         
    />

错误

04-13 16:59:55.314: W/System.err(11387): java.io.IOException: Error running exec(). Command: [/data/data/com.example.rampedsample/ffmpeg, /mnt/sdcard/Movies/ramp_video.mp4, -map, 0:v, -codec, copy, /mnt/sdcard/Movies/ramp_video2.mp4] Working Directory: null Environment: null
04-13 16:59:55.314: W/System.err(11387):    at java.lang.ProcessManager.exec(ProcessManager.java:211)
04-13 16:59:55.355: W/System.err(11387):    at java.lang.Runtime.exec(Runtime.java:168)
04-13 16:59:55.355: W/System.err(11387):    at java.lang.Runtime.exec(Runtime.java:241)
04-13 16:59:55.355: W/System.err(11387):    at java.lang.Runtime.exec(Runtime.java:184)
04-13 16:59:55.355: W/System.err(11387):    at com.example.rampedsample.MainActivity.onCreate(MainActivity.java:18)
04-13 16:59:55.355: W/System.err(11387):    at android.app.Activity.performCreate(Activity.java:5008)
04-13 16:59:55.355: W/System.err(11387):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
z4iuyo4d

z4iuyo4d1#

请添加READ和WRITE存储

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

也请参阅此命令并使用它

"-y -i " + oldPath + " -c:a copy -s hd720 " + newFile.getPath()

old path - /storage/emulated/0/DCIM/input.mp4
new path - storage/emulated/0/DCIM/output.mp4

相关问题