无法将.ogg文件转换为.mp3或其他文件格式

时间:2020-08-13 12:02:13

标签: ffmpeg android-ffmpeg

我正在尝试将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等格式,则不会引发错误。

1 个答案:

答案 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流。

在您的情况下,您想要将输入流编码为其他输出流。