我做了大量的研究,但是找不到適用於Unity3d/c#的合適解決方案。我正在使用Fove-HMD並想錄制/製作集成攝像頭的視頻。到目前爲止,我管理每個更新都拍攝了相機的快照,但我找不到將這些快照合併到視頻中的方法。有人知道轉換它們的方法嗎?還是有人能指出我正確的方向,我可以繼續研究?將Texture2D轉換爲視頻
public class FoveCamera : SingletonBase<FoveCamera>{
private bool camAvailable;
private WebCamTexture foveCamera;
private List<Texture2D> snapshots;
void Start()
{
//-------------just checking if webcam is available
WebCamDevice[] devices = WebCamTexture.devices;
if (devices.Length == 0)
{
Debug.LogError("FoveCamera could not be found.");
camAvailable = false;
return;
}
foreach (WebCamDevice device in devices)
{
if (device.name.Equals("FOVE Eyes"))
foveCamera = new WebCamTexture(device.name);//screen.width and screen.height
}
if (foveCamera == null)
{
Debug.LogError("FoveCamera could not be found.");
return;
}
//-------------camera found, start with the video
foveCamera.Play();
camAvailable = true;
}
void Update() {
if (!camAvailable)
{
return;
}
//loading snap from camera
Texture2D snap = new Texture2D(foveCamera.width,foveCamera.height);
snap.SetPixels(foveCamera.GetPixels());
snapshots.Add(snap);
}
}
該代碼到目前爲止工作。 Start-Method的第一部分僅用於查找和啓用相機。在更新方法中,我將每次更新都視爲視頻的快照。
當我「停止」更新方法後,我想將收集到的Texture2D對象轉換爲視頻。
在此先感謝
您的解決方案聽起來不錯。然而,FFMPEG似乎並不適用於團結。我已經嘗試過很多版本,但是不論是否支持c#版本,或者dll都無法識別。 – Pezl
我已經使用FFMPEG與Unity,但通過使用自己的C++ DLL,從來沒有與純C#。你有沒有檢查過,如果你不混合32位和64位體系結構的DLL? AForge隨附32位FFMPEG,但Unity Editor通常爲64位(由於Unity 2017只有64位,Unity 5仍可以下載爲32位https://unity3d.com/get-unity/download/archive) – R2RT
我玩過AForge,看起來我忘了Unity沒有提及'System.Drawing',其中定義了'Bitmap'。處理它甚至更加骯髒(將System.Drawing.dll複製到Plugins文件夾),所以我寧願跳過該選項 – R2RT