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

问题描述

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

解决方法

删除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流。

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