2010-05-26 88 views
2

我正在使用ffmpeg轉換視頻,並且會話持續時間顯示爲00:00:00.00。 這裏是我傳遞參數ffmpeg設置轉換時間

"-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

你檢查,你是通過它的持續時間是正確的(以秒或HH:MM:SS [.XXX] )?輸出文件是否正確播放,報告時間不正確,還是根本不播放?你可以從命令行嘗試相同的命令,並在這裏粘貼ffmpeg的輸出。 – 2010-05-26 14:09:08

+0

這是我的確切命令。 -i 1.mov -ar 22050 -b 500k -f flv -t 00:03:34.99 1.flv 會話成功進行,但有些玩家看不到持續時間,查找線被禁用。 – 2010-05-26 15:17:41

回答

1

我看到在測試同樣的問題我只是跑了。這似乎是ffmpeg中的一個已知問題。對於flv,它不會正確寫入所有元數據,包括持續時間。您可以使用flvtool2爲您修復元數據。只要運行:

flvtool2 -UP file.flv 

,它會自動找到基於時間戳的持續時間和寫入元數據文件。我剛剛嘗試過,效果很好。

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(); 
     } 

它完美的工作