我正在使用ffmpeg转换视频,并且会话持续时间显示为00:00:00.00。 这是我的传递论点
"-i " + FileName + " -ar 22050 -b 500k -f flv -t " + Duration + " " + outputfile
我的代码将其呈现给
-i 1.mov -ar 22050 -b 500k -f flv -t 00:03:34.99 1.flv
我错过了什么?
filargs = "flvtool2 -UP " + outputfile;
proc = new Process();
proc.StartInfo.FileName = spath + "flvtool2.exe";
proc.StartInfo.Arguments = filargs;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = false;
proc.StartInfo.RedirectStandardOutput = false;
proc.Start();
proc.WaitForExit();
proc.Close();
我试过这个,没有效果,持续时间仍为0.其中“outputfile”是我没有持续时间的转换文件
答案 0 :(得分:1)
我在刚刚运行的测试中看到同样的问题。这似乎是ffmpeg中的一个已知问题。对于flv,它不能正确写入所有元数据,包括持续时间。您可以使用flvtool2为您修复元数据。跑吧:
flvtool2 -UP file.flv
它将根据时间戳自动查找持续时间并将元数据写入文件。我只是尝试了它并且效果很好。
答案 1 :(得分:0)
我已经解决了我的问题
static void Fix(string Path)
{
string spath;
spath = AppDomain.CurrentDomain.BaseDirectory;
string filargs = "-U " + Path;
Process proc1 = new Process();
proc1.StartInfo.FileName = spath + "flvtool2.exe";
proc1.StartInfo.Arguments = filargs;
proc1.StartInfo.UseShellExecute = false;
proc1.StartInfo.CreateNoWindow = false;
proc1.StartInfo.RedirectStandardOutput
= false;
proc1.Start();
proc1.WaitForExit();
proc1.Close();
}
它做得很好