我正在尝试将ogg音频文件转换为mp3或可以在ios设备中播放的其他音频文件格式,但是ogg文件没有被转换为mp3和caf等其他格式。我正在Android设备上测试转换。
这是我的ffmpeg命令参数:
Command: "ffmpeg -y -i $inputFilePath -c:a copy $outputFilePath"
Both input and output filenames were surrounded with quotations
[-y, -i, /data/user/0/com.musicapp/files/composer_audios/testtt ogg file.ogg, -c:a, copy, /storage/emulated/0/Android/data/com.musicapp/files/ball.mp3]
当我尝试转换为mp3时。引发此错误:
FFmpeg exited with rc: 1
[mp3 @ 0x73f7b36a00] Invalid audio stream. Exactly one MP3 audio stream is required.
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
当我尝试转换为.caf文件时,会引发此错误:
FFmpeg exited with rc: 1
[caf @ 0x73f7b36a00] unsupported codec
Could not write header for output file #0 (incorrect codec parameters ?): Invalid data found when processing input
但是,如果我尝试将mp3文件转换为caf,mkv,mp4等格式,则不会引发错误。
答案 0 :(得分:3)
删除package com.example.edxposedapptemplate;
import android.graphics.Color;
import android.widget.TextView;
import android.os.Bundle;
import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;
import static de.robv.android.xposed.XposedHelpers.setFloatField;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XC_MethodReplacement;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;
public class MyModule implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
XposedBridge.log("Loaded app: " + lpparam.packageName);
if (!lpparam.packageName.equals("com.google.android.youtube")) {//check if the package being loaded is YouTube
return;
}
XposedBridge.log("YouTube loaded");
XposedHelpers.findAndHookMethod("com.google.android.apps.youtube.app.application.upgrade.NewVersionAvailableActivity", lpparam.classLoader, "onCreate", Bundle.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
XposedHelpers.callMethod(param.thisObject, "f");
XposedHelpers.callMethod(param.thisObject, "h");
}
});
}
}
选项。
关于该选项,the ffmpeg documentation说:
一个特殊值
-c:a copy
(仅输出),指示流将不被重新编码。
您正在禁用编码并建议ffmpeg将vorbis流视为mp3流。
在您的情况下,您想要将输入流编码为其他输出流。