我想将任何视频尽快转换为.mp4,而不必担心质量损失。我使用了下一个命令,可以在37秒内完成10秒钟的视频。
string path = string.Empty;
string xmlInputData = string.Empty;
try
{
path = "XML file path";
xmlInputData = File.ReadAllText(path);
Messages _Messages = Deserialize<Messages>(xmlInputData);
}
catch (Exception ex)
{
throw;
}
}
public static T Deserialize<T>(string input) where T : class
{
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(typeof(T));
using (StringReader sr = new StringReader(input))
{
return (T)ser.Deserialize(sr);
}
}
然而,对于10秒的视频而言,37秒仍然太长。我可以对命令进行任何改进以减少执行时间吗?
编辑(其他信息):
即使命令通常可用于任何FFmpeg(视FFmpeg版本而定,也有一些变体),我仍在使用FFmpeg Android(-vcodec h264
-crf 32
-preset ultrafast
)。
到目前为止,在我的案例中使用的命令给出了最快的结果:
implementation 'com.writingminds:FFmpegAndroid:0.3.2'
常规FFmpeg命令应为
mFfmpeg.execute(
arrayOf(
"-i" , videoCopy?.path,
"-vcodec", "h264",
"-crf", "32",
"-preset", "ultrafast",
"-y", uploadFile?.path),
object : ExecuteBinaryResponseHandler() { ... }
"-ffmpeg -i {video?.path} -vcodec h264 -crf 32 -preset ultrafast -y {uploadFile?.path}"
是我的原始视频video
,File
是我要保存结果的uploadFile
。
在Samsung J3(SM-J320M,您可以在线找到其规格)中,该命令花费了上述37秒。
执行此命令后,FFmpeg返回的第一条onProgress消息将打印:
File