2010-05-09 38 views

回答

0

有沒有真正簡單的方法來做到這一點;我的建議是使用ffmpeg,或者通過使用C#封裝來調用外部函數。似乎有幾個ffmpeg的C#包裝器(如this one),但它們似乎都處於不同的開發階段,並且不是真正可用的。你唯一的選擇可能是通過外部調用它。

+0

ffmpeg-sharp不完整且陳舊。你有沒有成功?我發現Tao更好一些,但最終通過C++/CLI包裝器直接調用它。 – 2010-05-09 22:17:22

+0

對於大多數事情來說,它本質上是無用的 - 就像我建議的那樣,我最終使用了系統ffmpeg和管道進出。控制較少,但足以實現容器格式之間的簡單轉換。 – TkTech 2010-05-09 23:06:45

6

這取決於你的意思是「轉換」。 3GP和AVI都是封裝格式,所以你只是試圖改變容器格式,還是你想重新編碼流?

無論哪種方式,你應該看看ffmpegWindows info)。對於簡單的情況(即您擁有文件,需要單個輸出文件),您應該考慮在命令行(即System.Diagnostics.Process)上調用它,這很容易(並且不涉及任何授權問題)。如果您希望通過編程訪問的libavcodec/libavormat,我高度建議跳過任何.NET包裝庫(他們都是在吸吮的不同狀態; Tao是最好的,但是,這不是多說了),而是寫一個C++/CLI包裝。一旦我開始瞭解數據編組等問題,並想出如何構建它(Part 1, Part 2),它並不難。