├── .gitignore
├── .vsconfig
├── Assets
├── Packages.meta
├── Packages
│ ├── FFScreenAudioRecorder.meta
│ └── FFScreenAudioRecorder
│ │ ├── Runtime.meta
│ │ ├── Runtime
│ │ ├── Scripts.meta
│ │ ├── Scripts
│ │ │ ├── FFAudioRecorder.cs
│ │ │ ├── FFAudioRecorder.cs.meta
│ │ │ ├── FFFrameRecorder.cs
│ │ │ ├── FFFrameRecorder.cs.meta
│ │ │ ├── FFMergeAV.cs
│ │ │ ├── FFMergeAV.cs.meta
│ │ │ ├── FFScreenRecorder.cs
│ │ │ ├── FFScreenRecorder.cs.meta
│ │ │ ├── FFmpegPreset.cs
│ │ │ ├── FFmpegPreset.cs.meta
│ │ │ ├── WindowsEventAPI.cs
│ │ │ └── WindowsEventAPI.cs.meta
│ │ ├── com.screenrecorder.rumtime.asmdef
│ │ └── com.screenrecorder.rumtime.asmdef.meta
│ │ ├── Samples~
│ │ ├── Sample.cs
│ │ ├── Sample.cs.meta
│ │ ├── Sample.unity
│ │ └── Sample.unity.meta
│ │ ├── StreamingAssets~
│ │ ├── ffmpeg.meta
│ │ ├── ffmpeg
│ │ │ ├── ffmpeg.exe
│ │ │ └── ffmpeg.exe.meta
│ │ └── output.meta
│ │ ├── package.json
│ │ └── package.json.meta
├── StreamingAssets.meta
└── StreamingAssets
│ ├── ffmpeg.meta
│ ├── ffmpeg
│ ├── ffmpeg.exe
│ └── ffmpeg.exe.meta
│ └── output.meta
├── LICENSE
├── Packages
├── manifest.json
└── packages-lock.json
├── ProjectSettings
├── AudioManager.asset
├── ClusterInputManager.asset
├── DynamicsManager.asset
├── EditorBuildSettings.asset
├── EditorSettings.asset
├── GraphicsSettings.asset
├── InputManager.asset
├── NavMeshAreas.asset
├── PackageManagerSettings.asset
├── Physics2DSettings.asset
├── PresetManager.asset
├── ProjectSettings.asset
├── ProjectVersion.txt
├── QualitySettings.asset
├── TagManager.asset
├── TimeManager.asset
├── UnityConnectSettings.asset
├── VFXManager.asset
└── VersionControlSettings.asset
├── README.md
├── UserSettings
└── EditorUserSettings.asset
└── img
├── img_1.png
├── img_2-0.png
├── img_2-1.png
├── img_2-2.png
├── img_2-3.png
├── img_2-4.png
├── img_2.gif
└── img_3.jpg
/.gitignore:
--------------------------------------------------------------------------------
1 | # This .gitignore file should be placed at the root of your Unity project directory
2 | #
3 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore
4 | #
5 | /[Ll]ibrary/
6 | /[Tt]emp/
7 | /[Oo]bj/
8 | /[Bb]uild/
9 | /[Bb]uilds/
10 | /[Ll]ogs/
11 | /[Mm]emoryCaptures/
12 |
13 | # Asset meta data should only be ignored when the corresponding asset is also ignored
14 | !/[Aa]ssets/**/*.meta
15 |
16 | # Uncomment this line if you wish to ignore the asset store tools plugin
17 | # /[Aa]ssets/AssetStoreTools*
18 |
19 | # Autogenerated Jetbrains Rider plugin
20 | [Aa]ssets/Plugins/Editor/JetBrains*
21 |
22 | # Visual Studio cache directory
23 | .vs/
24 |
25 | # Gradle cache directory
26 | .gradle/
27 |
28 | # Autogenerated VS/MD/Consulo solution and project files
29 | ExportedObj/
30 | .consulo/
31 | *.csproj
32 | *.unityproj
33 | *.sln
34 | *.suo
35 | *.tmp
36 | *.user
37 | *.userprefs
38 | *.pidb
39 | *.booproj
40 | *.svd
41 | *.pdb
42 | *.mdb
43 | *.opendb
44 | *.VC.db
45 |
46 | # Unity3D generated meta files
47 | *.pidb.meta
48 | *.pdb.meta
49 | *.mdb.meta
50 |
51 | # Unity3D generated file on crash reports
52 | sysinfo.txt
53 |
54 | # Builds
55 | *.apk
56 | *.unitypackage
57 |
58 | # Crashlytics generated file
59 | crashlytics-build.properties
60 |
61 |
--------------------------------------------------------------------------------
/.vsconfig:
--------------------------------------------------------------------------------
1 | {
2 | "version": "1.0",
3 | "components": [
4 | "Microsoft.VisualStudio.Workload.ManagedGame"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/Assets/Packages.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5fe505bbde77acc45a668f07a194e07e
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d4ee24373f71ab2498b6c96eddbab8e2
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/Runtime.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9418d2f1abac8e041a17c2448a69638f
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/Runtime/Scripts.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1600ed10d21fa3d4aba030355786fc17
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/Runtime/Scripts/FFAudioRecorder.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Created by John.Tsai on 2022/2/8
3 | // Copyright © 2022 John.Tsai. All rights reserved.
4 | //
5 |
6 | using System;
7 | using System.Collections;
8 | using System.Collections.Generic;
9 | using System.Diagnostics;
10 | using System.IO;
11 | using System.Runtime.InteropServices;
12 | using System.Threading.Tasks;
13 | using UnityEngine;
14 |
15 | [ExecuteInEditMode]
16 | public class FFAudioRecorder : MonoBehaviour
17 | {
18 | #region
19 | [DllImport("user32.dll", EntryPoint = "SetWindowText", CharSet = CharSet.Ansi)]
20 | public static extern int SetWindowText(int hwnd, string lpString);
21 |
22 | [DllImport("user32.dll")]
23 | public static extern IntPtr GetForegroundWindow();
24 | #endregion
25 |
26 | [Tooltip("StreamingAssetsPath + [FFmpegPath]")]
27 | public string ffmpegPath = "/ffmpeg/ffmpeg.exe";
28 | public string AudioInput = "Microphone (Realtek(R) Audio)";
29 | public bool showfflog = true;
30 |
31 | public string OutputFolder = "Output";
32 |
33 | [Tooltip("If 'CustomFileName' is empty, it'll export by default name.")]
34 | public string CustomFileName = string.Empty;
35 |
36 | public string GetOutputName { get; set; }
37 |
38 | private string ffpath = string.Empty;
39 | //private int processId = 0;
40 | private Process process = null;
41 | private Process process_console = null;
42 |
43 | void Start()
44 | {
45 | ffpath = @Application.streamingAssetsPath + ffmpegPath;
46 |
47 | if (!Directory.Exists(Path.Combine(Application.streamingAssetsPath, OutputFolder).TrimEnd('/')))
48 | Directory.CreateDirectory(Path.Combine(Application.streamingAssetsPath, OutputFolder).TrimEnd('/'));
49 |
50 | IntPtr handle = GetForegroundWindow();
51 | SetWindowText(handle.ToInt32(), Application.productName);
52 | }
53 |
54 | private void OnApplicationQuit()
55 | {
56 | if (process != null)
57 | {
58 | process.StandardInput.WriteLine("q");
59 | process.WaitForExit();
60 | process.Close();
61 | }
62 |
63 | if (process_console != null)
64 | {
65 | //process_console.StandardInput.WriteLine("q");
66 | process_console.WaitForExit();
67 | process_console.Close();
68 | }
69 | }
70 |
71 | [ContextMenu("GetDevicesList")]
72 | public void GetDevicesList()
73 | {
74 | var args = "-list_devices true -f dshow -i dummy";
75 | Process(ref process_console, args);
76 | }
77 |
78 | [ContextMenu("StartRecording")]
79 | public void StartRecording()
80 | {
81 | print("[Log] Start Recording...");
82 | // Set output path
83 | var path = Path.Combine(Application.streamingAssetsPath, OutputFolder);
84 | string fileName = CustomFileName.Equals(String.Empty) ?
85 | Path.Combine(path, Application.productName + "_" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".mp3") :
86 | Path.Combine(path, CustomFileName + ".mp3");
87 | var args = "-f dshow -i audio=\"" + AudioInput + "\" -acodec libmp3lame " + " \"" + fileName + "\"";
88 | GetOutputName = fileName;
89 |
90 | var task = Task.Run(() =>
91 | {
92 | Process(ref process, args);
93 | });
94 | }
95 |
96 | [ContextMenu("StopRecording")]
97 | async public void StopRecording()
98 | {
99 | if (process != null)
100 | {
101 | print("[Log] Stop Record");
102 | process.StandardInput.WriteLine("q");
103 | process.WaitForExit();
104 | process.Close();
105 | process = null;
106 |
107 | await Task.Delay(1000);
108 | print("[Log] Output: " + GetOutputName);
109 | }
110 | }
111 |
112 | private void Process(ref Process tprocess, string args)
113 | {
114 | tprocess = new Process();
115 | tprocess.StartInfo.FileName = ffpath;
116 |
117 | // Set args into ffmepg
118 | tprocess.StartInfo.Arguments = args;
119 | tprocess.StartInfo.UseShellExecute = false;
120 | tprocess.StartInfo.RedirectStandardError = true;
121 | tprocess.StartInfo.RedirectStandardInput = true;
122 | tprocess.StartInfo.RedirectStandardOutput = true;
123 | tprocess.StartInfo.CreateNoWindow = true;
124 |
125 | if (showfflog)
126 | tprocess.ErrorDataReceived += new DataReceivedEventHandler(Output);
127 |
128 | tprocess.Start();
129 | //processId = tprocess.Id;
130 | //UnityEngine.Debug.Log("processId:" + processId);
131 | tprocess.BeginErrorReadLine();
132 | }
133 | private void Output(object sendProcess, DataReceivedEventArgs output)
134 | {
135 | if (!string.IsNullOrEmpty(output.Data))
136 | UnityEngine.Debug.Log(output.Data);
137 | }
138 | }
139 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/Runtime/Scripts/FFAudioRecorder.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ddab54daf1666f442a8c5ec192999e89
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/Runtime/Scripts/FFFrameRecorder.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Created by John.Tsai on 2022/2/8
3 | // Copyright © 2022 John.Tsai. All rights reserved.
4 | //
5 |
6 | using System;
7 | using System.Collections;
8 | using System.Collections.Generic;
9 | using System.Diagnostics;
10 | using System.IO;
11 | using System.Runtime.InteropServices;
12 | using System.Threading;
13 | using System.Threading.Tasks;
14 | using UnityEngine;
15 |
16 | [ExecuteInEditMode]
17 | public class FFFrameRecorder : MonoBehaviour
18 | {
19 | #region
20 | [DllImport("user32.dll", EntryPoint = "SetWindowText", CharSet = CharSet.Ansi)]
21 | public static extern int SetWindowText(int hwnd, string lpString);
22 |
23 | [DllImport("user32.dll")]
24 | public static extern IntPtr GetForegroundWindow();
25 | #endregion
26 |
27 | [Tooltip("StreamingAssetsPath + [FFmpegPath]")]
28 | public string ffmpegPath = "/ffmpeg/ffmpeg.exe";
29 |
30 | [Tooltip("H.264 NVIDIA (MP4)\n" +
31 | "H.264 Lossless 420 (MP4)\n" +
32 | "H.264 Lossless 444 (MP4)\n" +
33 | "HEVC Default (MP4)\n" +
34 | "HEVC NVIDIA (MP4)\n" +
35 | "ProRes 422 (QuickTime)\n" +
36 | "ProRes 4444 (QuickTime)\n" +
37 | "VP8 (WebM)\n" +
38 | "VP9 (WebM)\n" +
39 | "HAP (QuickTime)\n" +
40 | "HAP Alpha (QuickTime)\n" +
41 | "HAP Q (QuickTime)"
42 | )]
43 | public FFmpegOut.FFmpegPreset ffmpegPreset = FFmpegOut.FFmpegPreset.H264Default;
44 |
45 |
46 | public Camera TargetCam;
47 | public int framerate = 30;
48 | public Vector2Int captureSize = new Vector2Int(1280, 720);
49 |
50 | public bool showfflog = true;
51 | public string OutputFolder = "Output";
52 |
53 | [Tooltip("If 'CustomFileName' is empty, it'll export by default name.")]
54 | public string CustomFileName = string.Empty;
55 |
56 | public string GetOutputName { get; set; }
57 |
58 | private string imagePath;
59 | private string ffpath = string.Empty;
60 |
61 | private int index = 0;
62 | private Texture2D frame;
63 | private RenderTexture rt;
64 | private Rect rect;
65 | private byte[] bytes;
66 |
67 | void Start()
68 | {
69 | ffpath = @Application.streamingAssetsPath + ffmpegPath;
70 | imagePath = @Application.streamingAssetsPath + "/FFTemp~/";
71 |
72 | if (!Directory.Exists(imagePath.TrimEnd('/')))
73 | Directory.CreateDirectory(imagePath.TrimEnd('/'));
74 |
75 | if (!Directory.Exists(Path.Combine(Application.streamingAssetsPath, OutputFolder).TrimEnd('/')))
76 | Directory.CreateDirectory(Path.Combine(Application.streamingAssetsPath, OutputFolder).TrimEnd('/'));
77 |
78 | IntPtr handle = GetForegroundWindow();
79 | SetWindowText(handle.ToInt32(), Application.productName);
80 |
81 | rect = new Rect(0, 0, captureSize.x, captureSize.y);
82 | rt = new RenderTexture(captureSize.x, captureSize.y, 0);
83 | frame = new Texture2D(captureSize.x, captureSize.y, TextureFormat.RGBA32, false);
84 | }
85 |
86 | [ContextMenu("StartRecording")]
87 | public void StartRecording()
88 | {
89 | if (TargetCam == null)
90 | {
91 | UnityEngine.Debug.Log("FrameRecorder has no camera.");
92 | return;
93 | }
94 |
95 | print("[Log] Start Recording...");
96 | AsyncCapture(cts.Token);
97 | }
98 |
99 | CancellationTokenSource cts = new CancellationTokenSource();
100 |
101 | [ContextMenu("StopRecording")]
102 | public void StopRecording()
103 | {
104 | print("[Log] Stop Record");
105 | cts.Cancel();
106 | AsyncCreateProcess();
107 | }
108 |
109 |
110 | async private void AsyncCapture(CancellationToken ct)
111 | {
112 | if (TargetCam == null)
113 | {
114 | UnityEngine.Debug.Log("FrameRecorder has no camera.");
115 | return;
116 | }
117 |
118 | while (!ct.IsCancellationRequested)
119 | {
120 | CaptureCamera(TargetCam, index);
121 | index++;
122 | await Task.Delay(1000 / framerate);
123 | }
124 | }
125 |
126 | async private void AsyncCreateProcess()
127 | {
128 | Process p = new Process();
129 | var path = Path.Combine(Application.streamingAssetsPath, OutputFolder);
130 |
131 | string fileName = CustomFileName.Equals(String.Empty) ?
132 | Path.Combine(path, Application.productName + "_" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + FFmpegOut.FFmpegPresetExtensions.GetSuffix(ffmpegPreset)) :
133 | Path.Combine(path, CustomFileName + FFmpegOut.FFmpegPresetExtensions.GetSuffix(ffmpegPreset));
134 |
135 | GetOutputName = fileName;
136 |
137 | var task01 = Task.Run(() =>
138 | {
139 | p.StartInfo.FileName = ffpath;
140 | string args = "-f image2 -i " + imagePath + "%d.jpg -vcodec libx264 -r 25 " + fileName;
141 | p.StartInfo.Arguments = args;
142 | p.StartInfo.UseShellExecute = false;
143 | p.StartInfo.RedirectStandardError = true;
144 | p.StartInfo.CreateNoWindow = true;
145 |
146 | if (showfflog)
147 | p.ErrorDataReceived += new DataReceivedEventHandler(Output);
148 | });
149 | task01.Wait();
150 |
151 | var task02 = Task.Run(() =>
152 | {
153 | p.Start();
154 | p.BeginErrorReadLine();
155 | p.WaitForExit();
156 | p.Close();
157 | p.Dispose();
158 |
159 | DirectoryInfo dir = new DirectoryInfo(imagePath);
160 | dir.Delete(true);
161 | //Directory.CreateDirectory(imagePath.TrimEnd('/'));
162 | print("[Log] Output: " + GetOutputName);
163 | });
164 | //task02.Wait();
165 |
166 | await Task.Yield();
167 | }
168 |
169 | private void Output(object sendProcess, DataReceivedEventArgs output)
170 | {
171 | if (!string.IsNullOrEmpty(output.Data))
172 | UnityEngine.Debug.Log(output.Data);
173 | }
174 |
175 | async private void CaptureCamera(Camera camera, int index)
176 | {
177 | camera.targetTexture = rt;
178 | camera.Render();
179 |
180 | RenderTexture.active = rt;
181 | frame.ReadPixels(rect, 0, 0);
182 | frame.Apply();
183 |
184 | camera.targetTexture = null;
185 | RenderTexture.active = null;
186 | bytes = frame.EncodeToJPG();
187 |
188 | // to jpg
189 | var task01 = Task.Run(() =>
190 | {
191 | File.WriteAllBytes(imagePath + index + ".jpg", bytes);
192 | });
193 | await Task.Yield();
194 | }
195 | }
196 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/Runtime/Scripts/FFFrameRecorder.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 408f836881493234881afa520156aee0
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/Runtime/Scripts/FFMergeAV.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Created by John.Tsai on 2022/2/8
3 | // Copyright © 2022 John.Tsai. All rights reserved.
4 | //
5 |
6 | using System;
7 | using System.Collections;
8 | using System.Collections.Generic;
9 | using System.Diagnostics;
10 | using System.IO;
11 | using System.Runtime.InteropServices;
12 | using System.Threading.Tasks;
13 | using UnityEngine;
14 |
15 | [ExecuteInEditMode]
16 | public class FFMergeAV : MonoBehaviour
17 | {
18 | #region
19 | [DllImport("user32.dll", EntryPoint = "SetWindowText", CharSet = CharSet.Ansi)]
20 | public static extern int SetWindowText(int hwnd, string lpString);
21 |
22 | [DllImport("user32.dll")]
23 | public static extern IntPtr GetForegroundWindow();
24 | #endregion
25 |
26 | [Tooltip("StreamingAssetsPath + [FFmpegPath]")]
27 | public string ffmpegPath = "/ffmpeg/ffmpeg.exe";
28 |
29 | public string AudioOutput = "X:/test.mp3";
30 | public string VideoOutput = "X:/test.mp4";
31 |
32 | public bool showfflog = true;
33 |
34 | public string OutputFolder = "Output";
35 |
36 | [Tooltip("If 'CustomFileName' is empty, it'll export by default name.")]
37 | public string CustomFileName = string.Empty;
38 |
39 | public string GetOutputName { get; set; }
40 |
41 | private string ffpath = string.Empty;
42 | //private int processId = 0;
43 | private Process process = null;
44 | private Process process_console = null;
45 |
46 | void Start()
47 | {
48 | ffpath = @Application.streamingAssetsPath + ffmpegPath;
49 |
50 | if (!Directory.Exists(Path.Combine(Application.streamingAssetsPath, OutputFolder).TrimEnd('/')))
51 | Directory.CreateDirectory(Path.Combine(Application.streamingAssetsPath, OutputFolder).TrimEnd('/'));
52 |
53 | IntPtr handle = GetForegroundWindow();
54 | SetWindowText(handle.ToInt32(), Application.productName);
55 | }
56 | private void OnApplicationQuit()
57 | {
58 | if (process != null)
59 | {
60 | //process.StandardInput.WriteLine("q");
61 | process.WaitForExit();
62 | process.Close();
63 | }
64 |
65 | if (process_console != null)
66 | {
67 | //process_console.StandardInput.WriteLine("q");
68 | process_console.WaitForExit();
69 | process_console.Close();
70 | }
71 | }
72 |
73 | [ContextMenu("GetDevicesList")]
74 | public void GetDevicesList()
75 | {
76 | var args = "-list_devices true -f dshow -i dummy";
77 | Process(ref process_console, args);
78 | }
79 |
80 | [ContextMenu("StartMerge")]
81 | public void StartMerge()
82 | {
83 | var path = Path.Combine(Application.streamingAssetsPath, "output");
84 | string fileName = CustomFileName.Equals(String.Empty) ?
85 | Path.Combine(path, Application.productName + "_" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".mp4") :
86 | Path.Combine(path, CustomFileName + ".mp4");
87 | var args = "-i " + VideoOutput + " -i " + AudioOutput + " -c:v copy -c:a aac " + fileName;
88 | GetOutputName = fileName;
89 |
90 | var task = Task.Run(() =>
91 | {
92 | Process(ref process, args);
93 | });
94 | print("[Log] Output: " + GetOutputName);
95 | }
96 |
97 | private void Process(ref Process tprocess, string args)
98 | {
99 | tprocess = new Process();
100 | tprocess.StartInfo.FileName = ffpath;
101 |
102 | // Set args into ffmepg
103 | tprocess.StartInfo.Arguments = args;
104 | tprocess.StartInfo.UseShellExecute = false;
105 | tprocess.StartInfo.RedirectStandardError = true;
106 | tprocess.StartInfo.RedirectStandardInput = true;
107 | tprocess.StartInfo.RedirectStandardOutput = true;
108 | tprocess.StartInfo.CreateNoWindow = true;
109 |
110 | if (showfflog)
111 | tprocess.ErrorDataReceived += new DataReceivedEventHandler(Output);
112 |
113 | tprocess.Start();
114 | //processId = tprocess.Id;
115 | //UnityEngine.Debug.Log("processId:" + processId);
116 | tprocess.BeginErrorReadLine();
117 | }
118 | private void Output(object sendProcess, DataReceivedEventArgs output)
119 | {
120 | if (!string.IsNullOrEmpty(output.Data))
121 | UnityEngine.Debug.Log(output.Data);
122 | }
123 | }
124 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/Runtime/Scripts/FFMergeAV.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 60be17495e79cdb4081eb083578b3353
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/Runtime/Scripts/FFScreenRecorder.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Created by John.Tsai on 2022/2/8
3 | // Copyright © 2022 John.Tsai. All rights reserved.
4 | //
5 |
6 | using System;
7 | using System.Collections;
8 | using System.Collections.Generic;
9 | using System.Diagnostics;
10 | using System.IO;
11 | using System.Runtime.InteropServices;
12 | using System.Threading.Tasks;
13 | using UnityEngine;
14 |
15 | [ExecuteInEditMode]
16 | public class FFScreenRecorder : MonoBehaviour
17 | {
18 | #region
19 | [DllImport("user32.dll", EntryPoint = "SetWindowText", CharSet = CharSet.Ansi)]
20 | public static extern int SetWindowText(int hwnd, string lpString);
21 |
22 | [DllImport("user32.dll")]
23 | public static extern IntPtr GetForegroundWindow();
24 | #endregion
25 |
26 | [Tooltip("StreamingAssetsPath + [FFmpegPath]")]
27 | public string ffmpegPath = "/ffmpeg/ffmpeg.exe";
28 |
29 | [Tooltip("H.264 NVIDIA (MP4)\n" +
30 | "H.264 Lossless 420 (MP4)\n" +
31 | "H.264 Lossless 444 (MP4)\n" +
32 | "HEVC Default (MP4)\n" +
33 | "HEVC NVIDIA (MP4)\n" +
34 | "ProRes 422 (QuickTime)\n" +
35 | "ProRes 4444 (QuickTime)\n" +
36 | "VP8 (WebM)\n" +
37 | "VP9 (WebM)\n" +
38 | "HAP (QuickTime)\n" +
39 | "HAP Alpha (QuickTime)\n" +
40 | "HAP Q (QuickTime)"
41 | )]
42 | public FFmpegOut.FFmpegPreset ffmpegPreset = FFmpegOut.FFmpegPreset.H264Default;
43 | public int framerate = 30;
44 | public Vector2Int captureSize = new Vector2Int(1920, 1080);
45 | public Vector2Int offsetPos = new Vector2Int(0, 0);
46 |
47 | public string AudioInput = "Microphone (Realtek(R) Audio)";
48 | public bool showfflog = true;
49 |
50 | public string OutputFolder = "Output";
51 |
52 | [Tooltip("If 'CustomFileName' is empty, it'll export by default name.")]
53 | public string CustomFileName = string.Empty;
54 |
55 | public string GetOutputName { get; set; }
56 |
57 | private string ffpath = string.Empty;
58 | //private int processId = 0;
59 | private Process process = null;
60 | private Process process_console = null;
61 |
62 | void Start()
63 | {
64 | ffpath = @Application.streamingAssetsPath + ffmpegPath;
65 |
66 | if (!Directory.Exists(Path.Combine(Application.streamingAssetsPath, OutputFolder).TrimEnd('/')))
67 | Directory.CreateDirectory(Path.Combine(Application.streamingAssetsPath, OutputFolder).TrimEnd('/'));
68 |
69 | IntPtr handle = GetForegroundWindow();
70 | SetWindowText(handle.ToInt32(), Application.productName);
71 | }
72 |
73 | private void OnApplicationQuit()
74 | {
75 | if (process != null)
76 | {
77 | process.StandardInput.WriteLine("q");
78 | process.WaitForExit();
79 | process.Close();
80 | }
81 |
82 | if (process_console != null)
83 | {
84 | //process_console.StandardInput.WriteLine("q");
85 | process_console.WaitForExit();
86 | process_console.Close();
87 | }
88 | }
89 |
90 | [ContextMenu("GetDevicesList")]
91 | public void GetDevicesList()
92 | {
93 | var args = "-list_devices true -f dshow -i dummy";
94 | Process(ref process_console, args);
95 | }
96 |
97 | [ContextMenu("StartRecording")]
98 | public void StartRecording()
99 | {
100 | print("[Log] Start Recording...");
101 | // Set output path
102 | var path = Path.Combine(Application.streamingAssetsPath, OutputFolder);
103 |
104 | string fileName = CustomFileName.Equals(String.Empty) ?
105 | Path.Combine(path, Application.productName + "_" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + FFmpegOut.FFmpegPresetExtensions.GetSuffix(ffmpegPreset)) :
106 | Path.Combine(path, CustomFileName + FFmpegOut.FFmpegPresetExtensions.GetSuffix(ffmpegPreset));
107 |
108 | var offset = "-offset_x " + offsetPos.x + " -offset_y " + offsetPos.y;
109 | var resolution = "-video_size " + captureSize.x + "x" + captureSize.y;
110 |
111 | if (captureSize.x == 0 || captureSize.y == 0)
112 | resolution = "";
113 |
114 | var option = FFmpegOut.FFmpegPresetExtensions.GetOptions(ffmpegPreset);
115 | GetOutputName = fileName;
116 |
117 | var args = "-rtbufsize 1500M -f dshow -i audio=\"" + AudioInput + "\" -f -y -rtbufsize 100M -f gdigrab " + offset + " " + resolution + " -framerate " + framerate + " -probesize 10M -draw_mouse 0 -i desktop -c:v libx264 -r 30 -preset ultrafast -tune zerolatency -crf 25 " + option + " \"" + fileName + "\"";
118 |
119 | var task = Task.Run(() =>
120 | {
121 | Process(ref process, args);
122 | });
123 | }
124 |
125 | [ContextMenu("StopRecording")]
126 | async public void StopRecording()
127 | {
128 | if (process != null)
129 | {
130 | print("[Log] Stop Record");
131 | process.StandardInput.WriteLine("q");
132 | process.WaitForExit();
133 | process.Close();
134 | process = null;
135 |
136 | await Task.Delay(1000);
137 | print("[Log] Output: " + GetOutputName);
138 | }
139 | }
140 |
141 | private void Process(ref Process tprocess, string args)
142 | {
143 | tprocess = new Process();
144 | tprocess.StartInfo.FileName = ffpath;
145 |
146 | // Set args into ffmepg
147 | tprocess.StartInfo.Arguments = args;
148 | tprocess.StartInfo.UseShellExecute = false;
149 | tprocess.StartInfo.RedirectStandardError = true;
150 | tprocess.StartInfo.RedirectStandardInput = true;
151 | tprocess.StartInfo.RedirectStandardOutput = true;
152 | tprocess.StartInfo.CreateNoWindow = true;
153 |
154 | if (showfflog)
155 | tprocess.ErrorDataReceived += new DataReceivedEventHandler(Output);
156 |
157 | tprocess.Start();
158 | //processId = tprocess.Id;
159 | //UnityEngine.Debug.Log("processId:" + processId);
160 | tprocess.BeginErrorReadLine();
161 | }
162 |
163 | private void Output(object sendProcess, DataReceivedEventArgs output)
164 | {
165 | if (!string.IsNullOrEmpty(output.Data))
166 | UnityEngine.Debug.Log(output.Data);
167 | }
168 | }
169 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/Runtime/Scripts/FFScreenRecorder.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c09dc5a729c86444c9aab2792cc380be
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/Runtime/Scripts/FFmpegPreset.cs:
--------------------------------------------------------------------------------
1 | // FFmpegOut - FFmpeg video encoding plugin for Unity
2 | // https://github.com/keijiro/KlakNDI
3 |
4 | namespace FFmpegOut
5 | {
6 | public enum FFmpegPreset
7 | {
8 | H264Default,
9 | H264Nvidia,
10 | H264Lossless420,
11 | H264Lossless444,
12 | HevcDefault,
13 | HevcNvidia,
14 | ProRes422,
15 | ProRes4444,
16 | VP8Default,
17 | VP9Default,
18 | Hap,
19 | HapAlpha,
20 | HapQ
21 | }
22 |
23 | static public class FFmpegPresetExtensions
24 | {
25 | public static string GetDisplayName(this FFmpegPreset preset)
26 | {
27 | switch (preset)
28 | {
29 | case FFmpegPreset.H264Default: return "H.264 Default (MP4)";
30 | case FFmpegPreset.H264Nvidia: return "H.264 NVIDIA (MP4)";
31 | case FFmpegPreset.H264Lossless420: return "H.264 Lossless 420 (MP4)";
32 | case FFmpegPreset.H264Lossless444: return "H.264 Lossless 444 (MP4)";
33 | case FFmpegPreset.HevcDefault: return "HEVC Default (MP4)";
34 | case FFmpegPreset.HevcNvidia: return "HEVC NVIDIA (MP4)";
35 | case FFmpegPreset.ProRes422: return "ProRes 422 (QuickTime)";
36 | case FFmpegPreset.ProRes4444: return "ProRes 4444 (QuickTime)";
37 | case FFmpegPreset.VP8Default: return "VP8 (WebM)";
38 | case FFmpegPreset.VP9Default: return "VP9 (WebM)";
39 | case FFmpegPreset.Hap: return "HAP (QuickTime)";
40 | case FFmpegPreset.HapAlpha: return "HAP Alpha (QuickTime)";
41 | case FFmpegPreset.HapQ: return "HAP Q (QuickTime)";
42 | }
43 | return null;
44 | }
45 |
46 | public static string GetSuffix(this FFmpegPreset preset)
47 | {
48 | switch (preset)
49 | {
50 | case FFmpegPreset.H264Default:
51 | case FFmpegPreset.H264Nvidia:
52 | case FFmpegPreset.H264Lossless420:
53 | case FFmpegPreset.H264Lossless444:
54 | case FFmpegPreset.HevcDefault:
55 | case FFmpegPreset.HevcNvidia: return ".mp4";
56 | case FFmpegPreset.ProRes422:
57 | case FFmpegPreset.ProRes4444: return ".mov";
58 | case FFmpegPreset.VP9Default:
59 | case FFmpegPreset.VP8Default: return ".webm";
60 | case FFmpegPreset.Hap:
61 | case FFmpegPreset.HapQ:
62 | case FFmpegPreset.HapAlpha: return ".mov";
63 | }
64 | return null;
65 | }
66 |
67 | public static string GetOptions(this FFmpegPreset preset)
68 | {
69 | switch (preset)
70 | {
71 | case FFmpegPreset.H264Default: return "-pix_fmt yuv420p";
72 | case FFmpegPreset.H264Nvidia: return "-c:v h264_nvenc -pix_fmt yuv420p";
73 | case FFmpegPreset.H264Lossless420: return "-pix_fmt yuv420p -preset ultrafast -crf 0";
74 | case FFmpegPreset.H264Lossless444: return "-pix_fmt yuv444p -preset ultrafast -crf 0";
75 | case FFmpegPreset.HevcDefault: return "-c:v libx265 -pix_fmt yuv420p";
76 | case FFmpegPreset.HevcNvidia: return "-c:v hevc_nvenc -pix_fmt yuv420p";
77 | case FFmpegPreset.ProRes422: return "-c:v prores_ks -pix_fmt yuv422p10le";
78 | case FFmpegPreset.ProRes4444: return "-c:v prores_ks -pix_fmt yuva444p10le";
79 | case FFmpegPreset.VP8Default: return "-c:v libvpx -pix_fmt yuv420p";
80 | case FFmpegPreset.VP9Default: return "-c:v libvpx-vp9";
81 | case FFmpegPreset.Hap: return "-c:v hap";
82 | case FFmpegPreset.HapAlpha: return "-c:v hap -format hap_alpha";
83 | case FFmpegPreset.HapQ: return "-c:v hap -format hap_q";
84 | }
85 | return null;
86 | }
87 | }
88 | }
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/Runtime/Scripts/FFmpegPreset.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a0b2f4a0a2ef79d44853523fbfacb8c9
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/Runtime/Scripts/WindowsEventAPI.cs:
--------------------------------------------------------------------------------
1 | // Author : Shinn
2 | // Date : 20191007
3 | // Only for windows.
4 | // https://docs.microsoft.com/zh-tw/dotnet/api/system.diagnostics.processwindowstyle?view=netframework-4.8
5 | //
6 |
7 | using System;
8 | using System.Diagnostics;
9 | using System.IO;
10 | using System.Runtime.InteropServices;
11 | using UnityEngine;
12 |
13 | namespace ScreenRecorder
14 | {
15 | public static class WindowsEventAPI
16 | {
17 | #region API
18 | ///
19 | /// WindowsStyle
20 | ///
21 | public enum WindowsStyle
22 | {
23 | Hidden,
24 | Maximized,
25 | Minimized,
26 | Normal
27 | }
28 |
29 | ///
30 | /// 開啟 Windows 檔案
31 | ///
32 | ///
33 | ///
34 | public static void OpenExetnationFile(string path, string fileName)
35 | {
36 | string file = Path.Combine(path, fileName);
37 | Process.Start(file);
38 | }
39 |
40 | ///
41 | /// 搜尋目前正在執行的程式
42 | ///
43 | public static void SearchAllProgramsOnRunning()
44 | {
45 | Process[] p1 = Process.GetProcesses();
46 | foreach (Process pro in p1)
47 | UnityEngine.Debug.Log(pro.ProcessName);
48 | }
49 |
50 | ///
51 | /// 尋找目前正在運行的 processName 程式
52 | ///
53 | ///
54 | public static void SearchProgram()
55 | {
56 | Process[] p1 = Process.GetProcesses();
57 | foreach (Process pro in p1)
58 | UnityEngine.Debug.Log(pro.ProcessName);
59 | }
60 |
61 | ///
62 | /// 可自定 Windows 的動作, 像是 隱藏 一般 最大化 最小化, 此程式會開啟程式, 不須額外執行 Process.Start()
63 | ///
64 | ///
65 | ///
66 | ///
67 | ///
68 | /// Example:相對路徑
69 | /// string path = System.IO.Path.Combine(Environment.CurrentDirectory, @"..\exe");
70 | /// WindowsEventAPI.SetWindowEvent(path, "Kinect.exe", ProcessWindowStyle.Minimized);
71 | public static void SetWindowEvent(string path, string fileName, WindowsStyle windowStyle = WindowsStyle.Normal)
72 | {
73 | string file = Path.Combine(path, fileName);
74 | using (Process myProcess = new Process())
75 | {
76 | myProcess.StartInfo.UseShellExecute = true;
77 | myProcess.StartInfo.FileName = file;
78 | myProcess.StartInfo.CreateNoWindow = false;
79 |
80 | myProcess.StartInfo.WindowStyle = Select(windowStyle);
81 | myProcess.Start();
82 | }
83 | }
84 |
85 | public static void SetWindowEvent(string file, WindowsStyle windowStyle = WindowsStyle.Normal)
86 | {
87 | using (Process myProcess = new Process())
88 | {
89 | myProcess.StartInfo.UseShellExecute = true;
90 | myProcess.StartInfo.FileName = file;
91 | myProcess.StartInfo.CreateNoWindow = false;
92 |
93 | myProcess.StartInfo.WindowStyle = Select(windowStyle);
94 | myProcess.Start();
95 | }
96 |
97 | /// Click on screen center.
98 | SetCursorPos(Screen.width / 2, Screen.height / 2);
99 | //System.Threading.Thread.Sleep(100);
100 | Mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
101 | Mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
102 | }
103 |
104 | [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
105 | static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);
106 | [DllImport("user32")]
107 | public static extern int ShowWindow(int hwnd, int nCmdShow);
108 | [DllImport("user32.dll", CharSet = CharSet.Auto)]
109 | static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
110 | const uint WM_CLOSE = 0x0010;
111 |
112 | /////
113 | ///// Close Application CloseWindow(Kinect). No need filename extension.
114 | /////
115 | /////
116 | //public static void CloseWindow(string windowsName)
117 | //{
118 | // IntPtr windowPtr = FindWindowByCaption(IntPtr.Zero, windowsName);
119 | // if (windowPtr == IntPtr.Zero)
120 | // {
121 | // UnityEngine.Debug.LogError("'" + windowsName + "' not found!");
122 | // return;
123 | // }
124 |
125 | // SendMessage(windowPtr, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
126 | //}
127 |
128 | ///
129 | /// Close Application CloseWindow(Kinect), no need filename extension.
130 | ///
131 | ///
132 | public static void CloseWindow(string processName)
133 | {
134 | Process[] p1 = Process.GetProcesses();
135 | foreach (Process pro in p1)
136 | {
137 | if (pro.ProcessName.ToUpper().Contains(processName) || pro.ProcessName.Contains(processName))
138 | pro.CloseMainWindow();
139 | }
140 | }
141 |
142 | ///
143 | /// Open file explorer.
144 | ///
145 | ///
146 | public static void OpenExplorer(string path = "c:/")
147 | {
148 | Process.Start(@path);
149 | }
150 | #endregion
151 |
152 | #region Private function
153 | private static ProcessWindowStyle Select(WindowsStyle style)
154 | {
155 | switch (style)
156 | {
157 | case WindowsStyle.Hidden:
158 | return ProcessWindowStyle.Hidden;
159 | case WindowsStyle.Maximized:
160 | return ProcessWindowStyle.Maximized;
161 | case WindowsStyle.Minimized:
162 | return ProcessWindowStyle.Minimized;
163 | default:
164 | return ProcessWindowStyle.Normal;
165 | }
166 | }
167 |
168 | [DllImport("user32")]
169 | public static extern int SetCursorPos(int x, int y);
170 |
171 | private const int MOUSEEVENTF_MOVE = 0x0001; /* mouse move */
172 | private const int MOUSEEVENTF_LEFTDOWN = 0x0002; /* left button down */
173 | private const int MOUSEEVENTF_LEFTUP = 0x0004; /* left button up */
174 | private const int MOUSEEVENTF_RIGHTDOWN = 0x0008; /* right button down */
175 |
176 | [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
177 | public static extern void Mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
178 | #endregion
179 | }
180 | }
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/Runtime/Scripts/WindowsEventAPI.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 70b99b12833dc5f4a97eae966ca7a36f
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/Runtime/com.screenrecorder.rumtime.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "com.screenrecorder.rumtime"
3 | }
4 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/Runtime/com.screenrecorder.rumtime.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2a54773b82dc72845a5bc1d3218888c4
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/Samples~/Sample.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using UnityEngine;
5 | using UnityEngine.UI;
6 |
7 | public class Sample : MonoBehaviour
8 | {
9 | public FFScreenRecorder screenRecorder;
10 | public Text recordtxt;
11 |
12 | public void Record(bool ison)
13 | {
14 | StartCoroutine(Process(ison, recordtxt.transform.parent.GetComponent()));
15 | }
16 |
17 | public void OnenFolder()
18 | {
19 | ScreenRecorder.WindowsEventAPI.OpenExplorer(Path.Combine(Application.streamingAssetsPath, "output"));
20 | }
21 |
22 | private IEnumerator Process(bool ison, Toggle btnui, float delay = 3)
23 | {
24 | btnui.interactable = false;
25 | if (ison)
26 | {
27 | recordtxt.text = "Stop";
28 | screenRecorder.StartRecording();
29 | }
30 | else
31 | {
32 | recordtxt.text = "Start Recordinig";
33 | screenRecorder.StopRecording();
34 | }
35 | yield return new WaitForSeconds(delay);
36 | btnui.interactable = true;
37 | }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/Samples~/Sample.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 56529a91af0d9e84d8b3396ea0dd97c3
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/Samples~/Sample.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7e529f6f45446ac41ac0c5d8943253aa
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/StreamingAssets~/ffmpeg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 142212b3ad79e3046b520a63d3826189
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/StreamingAssets~/ffmpeg/ffmpeg.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shinn716/Unity-FFmpeg-ScreenRecorder/d4982aea1f038b741178f1da0b5d41e07580f1d3/Assets/Packages/FFScreenAudioRecorder/StreamingAssets~/ffmpeg/ffmpeg.exe
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/StreamingAssets~/ffmpeg/ffmpeg.exe.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8ec4523984b81644a8adaaa8abd43ebc
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/StreamingAssets~/output.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 91822efedb425ca4cb28321d9a0e25e1
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "com.shinn.ffrecorder",
3 | "displayName": "FFScreenAudioRecorder",
4 | "version": "0.1.1",
5 | "keywords": ["Screen/Audio Recorder", "FFmpeg"],
6 | "description": "Put StreamingAssets folder into Assets/",
7 | "samples":
8 | [
9 | {
10 | "displayName": "Samples",
11 | "path": "Samples~"
12 | },
13 | {
14 | "displayName": "StreamingAssets",
15 | "path": "StreamingAssets~"
16 | }
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/Assets/Packages/FFScreenAudioRecorder/package.json.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a99c631744d7234429fa5a8c685a5087
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/StreamingAssets.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 26100a8734b681e4fb0f4b03a32cef29
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/StreamingAssets/ffmpeg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 142212b3ad79e3046b520a63d3826189
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/StreamingAssets/ffmpeg/ffmpeg.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shinn716/Unity-FFmpeg-ScreenRecorder/d4982aea1f038b741178f1da0b5d41e07580f1d3/Assets/StreamingAssets/ffmpeg/ffmpeg.exe
--------------------------------------------------------------------------------
/Assets/StreamingAssets/ffmpeg/ffmpeg.exe.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8ec4523984b81644a8adaaa8abd43ebc
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/StreamingAssets/output.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 91822efedb425ca4cb28321d9a0e25e1
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 John Tsai
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Packages/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.unity.collab-proxy": "1.15.7",
4 | "com.unity.ide.rider": "2.0.7",
5 | "com.unity.ide.visualstudio": "2.0.14",
6 | "com.unity.ide.vscode": "1.2.4",
7 | "com.unity.test-framework": "1.1.29",
8 | "com.unity.textmeshpro": "3.0.6",
9 | "com.unity.timeline": "1.4.8",
10 | "com.unity.ugui": "1.0.0",
11 | "com.unity.modules.ai": "1.0.0",
12 | "com.unity.modules.androidjni": "1.0.0",
13 | "com.unity.modules.animation": "1.0.0",
14 | "com.unity.modules.assetbundle": "1.0.0",
15 | "com.unity.modules.audio": "1.0.0",
16 | "com.unity.modules.cloth": "1.0.0",
17 | "com.unity.modules.director": "1.0.0",
18 | "com.unity.modules.imageconversion": "1.0.0",
19 | "com.unity.modules.imgui": "1.0.0",
20 | "com.unity.modules.jsonserialize": "1.0.0",
21 | "com.unity.modules.particlesystem": "1.0.0",
22 | "com.unity.modules.physics": "1.0.0",
23 | "com.unity.modules.physics2d": "1.0.0",
24 | "com.unity.modules.screencapture": "1.0.0",
25 | "com.unity.modules.terrain": "1.0.0",
26 | "com.unity.modules.terrainphysics": "1.0.0",
27 | "com.unity.modules.tilemap": "1.0.0",
28 | "com.unity.modules.ui": "1.0.0",
29 | "com.unity.modules.uielements": "1.0.0",
30 | "com.unity.modules.umbra": "1.0.0",
31 | "com.unity.modules.unityanalytics": "1.0.0",
32 | "com.unity.modules.unitywebrequest": "1.0.0",
33 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
34 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
35 | "com.unity.modules.unitywebrequesttexture": "1.0.0",
36 | "com.unity.modules.unitywebrequestwww": "1.0.0",
37 | "com.unity.modules.vehicles": "1.0.0",
38 | "com.unity.modules.video": "1.0.0",
39 | "com.unity.modules.vr": "1.0.0",
40 | "com.unity.modules.wind": "1.0.0",
41 | "com.unity.modules.xr": "1.0.0"
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/Packages/packages-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.unity.collab-proxy": {
4 | "version": "1.15.7",
5 | "depth": 0,
6 | "source": "registry",
7 | "dependencies": {
8 | "com.unity.nuget.newtonsoft-json": "2.0.0",
9 | "com.unity.services.core": "1.0.1"
10 | },
11 | "url": "https://packages.unity.com"
12 | },
13 | "com.unity.ext.nunit": {
14 | "version": "1.0.6",
15 | "depth": 1,
16 | "source": "registry",
17 | "dependencies": {},
18 | "url": "https://packages.unity.com"
19 | },
20 | "com.unity.ide.rider": {
21 | "version": "2.0.7",
22 | "depth": 0,
23 | "source": "registry",
24 | "dependencies": {
25 | "com.unity.test-framework": "1.1.1"
26 | },
27 | "url": "https://packages.unity.com"
28 | },
29 | "com.unity.ide.visualstudio": {
30 | "version": "2.0.14",
31 | "depth": 0,
32 | "source": "registry",
33 | "dependencies": {
34 | "com.unity.test-framework": "1.1.9"
35 | },
36 | "url": "https://packages.unity.com"
37 | },
38 | "com.unity.ide.vscode": {
39 | "version": "1.2.4",
40 | "depth": 0,
41 | "source": "registry",
42 | "dependencies": {},
43 | "url": "https://packages.unity.com"
44 | },
45 | "com.unity.nuget.newtonsoft-json": {
46 | "version": "2.0.0",
47 | "depth": 1,
48 | "source": "registry",
49 | "dependencies": {},
50 | "url": "https://packages.unity.com"
51 | },
52 | "com.unity.services.core": {
53 | "version": "1.0.1",
54 | "depth": 1,
55 | "source": "registry",
56 | "dependencies": {
57 | "com.unity.modules.unitywebrequest": "1.0.0"
58 | },
59 | "url": "https://packages.unity.com"
60 | },
61 | "com.unity.test-framework": {
62 | "version": "1.1.29",
63 | "depth": 0,
64 | "source": "registry",
65 | "dependencies": {
66 | "com.unity.ext.nunit": "1.0.6",
67 | "com.unity.modules.imgui": "1.0.0",
68 | "com.unity.modules.jsonserialize": "1.0.0"
69 | },
70 | "url": "https://packages.unity.com"
71 | },
72 | "com.unity.textmeshpro": {
73 | "version": "3.0.6",
74 | "depth": 0,
75 | "source": "registry",
76 | "dependencies": {
77 | "com.unity.ugui": "1.0.0"
78 | },
79 | "url": "https://packages.unity.com"
80 | },
81 | "com.unity.timeline": {
82 | "version": "1.4.8",
83 | "depth": 0,
84 | "source": "registry",
85 | "dependencies": {
86 | "com.unity.modules.director": "1.0.0",
87 | "com.unity.modules.animation": "1.0.0",
88 | "com.unity.modules.audio": "1.0.0",
89 | "com.unity.modules.particlesystem": "1.0.0"
90 | },
91 | "url": "https://packages.unity.com"
92 | },
93 | "com.unity.ugui": {
94 | "version": "1.0.0",
95 | "depth": 0,
96 | "source": "builtin",
97 | "dependencies": {
98 | "com.unity.modules.ui": "1.0.0",
99 | "com.unity.modules.imgui": "1.0.0"
100 | }
101 | },
102 | "com.unity.modules.ai": {
103 | "version": "1.0.0",
104 | "depth": 0,
105 | "source": "builtin",
106 | "dependencies": {}
107 | },
108 | "com.unity.modules.androidjni": {
109 | "version": "1.0.0",
110 | "depth": 0,
111 | "source": "builtin",
112 | "dependencies": {}
113 | },
114 | "com.unity.modules.animation": {
115 | "version": "1.0.0",
116 | "depth": 0,
117 | "source": "builtin",
118 | "dependencies": {}
119 | },
120 | "com.unity.modules.assetbundle": {
121 | "version": "1.0.0",
122 | "depth": 0,
123 | "source": "builtin",
124 | "dependencies": {}
125 | },
126 | "com.unity.modules.audio": {
127 | "version": "1.0.0",
128 | "depth": 0,
129 | "source": "builtin",
130 | "dependencies": {}
131 | },
132 | "com.unity.modules.cloth": {
133 | "version": "1.0.0",
134 | "depth": 0,
135 | "source": "builtin",
136 | "dependencies": {
137 | "com.unity.modules.physics": "1.0.0"
138 | }
139 | },
140 | "com.unity.modules.director": {
141 | "version": "1.0.0",
142 | "depth": 0,
143 | "source": "builtin",
144 | "dependencies": {
145 | "com.unity.modules.audio": "1.0.0",
146 | "com.unity.modules.animation": "1.0.0"
147 | }
148 | },
149 | "com.unity.modules.imageconversion": {
150 | "version": "1.0.0",
151 | "depth": 0,
152 | "source": "builtin",
153 | "dependencies": {}
154 | },
155 | "com.unity.modules.imgui": {
156 | "version": "1.0.0",
157 | "depth": 0,
158 | "source": "builtin",
159 | "dependencies": {}
160 | },
161 | "com.unity.modules.jsonserialize": {
162 | "version": "1.0.0",
163 | "depth": 0,
164 | "source": "builtin",
165 | "dependencies": {}
166 | },
167 | "com.unity.modules.particlesystem": {
168 | "version": "1.0.0",
169 | "depth": 0,
170 | "source": "builtin",
171 | "dependencies": {}
172 | },
173 | "com.unity.modules.physics": {
174 | "version": "1.0.0",
175 | "depth": 0,
176 | "source": "builtin",
177 | "dependencies": {}
178 | },
179 | "com.unity.modules.physics2d": {
180 | "version": "1.0.0",
181 | "depth": 0,
182 | "source": "builtin",
183 | "dependencies": {}
184 | },
185 | "com.unity.modules.screencapture": {
186 | "version": "1.0.0",
187 | "depth": 0,
188 | "source": "builtin",
189 | "dependencies": {
190 | "com.unity.modules.imageconversion": "1.0.0"
191 | }
192 | },
193 | "com.unity.modules.subsystems": {
194 | "version": "1.0.0",
195 | "depth": 1,
196 | "source": "builtin",
197 | "dependencies": {
198 | "com.unity.modules.jsonserialize": "1.0.0"
199 | }
200 | },
201 | "com.unity.modules.terrain": {
202 | "version": "1.0.0",
203 | "depth": 0,
204 | "source": "builtin",
205 | "dependencies": {}
206 | },
207 | "com.unity.modules.terrainphysics": {
208 | "version": "1.0.0",
209 | "depth": 0,
210 | "source": "builtin",
211 | "dependencies": {
212 | "com.unity.modules.physics": "1.0.0",
213 | "com.unity.modules.terrain": "1.0.0"
214 | }
215 | },
216 | "com.unity.modules.tilemap": {
217 | "version": "1.0.0",
218 | "depth": 0,
219 | "source": "builtin",
220 | "dependencies": {
221 | "com.unity.modules.physics2d": "1.0.0"
222 | }
223 | },
224 | "com.unity.modules.ui": {
225 | "version": "1.0.0",
226 | "depth": 0,
227 | "source": "builtin",
228 | "dependencies": {}
229 | },
230 | "com.unity.modules.uielements": {
231 | "version": "1.0.0",
232 | "depth": 0,
233 | "source": "builtin",
234 | "dependencies": {
235 | "com.unity.modules.ui": "1.0.0",
236 | "com.unity.modules.imgui": "1.0.0",
237 | "com.unity.modules.jsonserialize": "1.0.0",
238 | "com.unity.modules.uielementsnative": "1.0.0"
239 | }
240 | },
241 | "com.unity.modules.uielementsnative": {
242 | "version": "1.0.0",
243 | "depth": 1,
244 | "source": "builtin",
245 | "dependencies": {
246 | "com.unity.modules.ui": "1.0.0",
247 | "com.unity.modules.imgui": "1.0.0",
248 | "com.unity.modules.jsonserialize": "1.0.0"
249 | }
250 | },
251 | "com.unity.modules.umbra": {
252 | "version": "1.0.0",
253 | "depth": 0,
254 | "source": "builtin",
255 | "dependencies": {}
256 | },
257 | "com.unity.modules.unityanalytics": {
258 | "version": "1.0.0",
259 | "depth": 0,
260 | "source": "builtin",
261 | "dependencies": {
262 | "com.unity.modules.unitywebrequest": "1.0.0",
263 | "com.unity.modules.jsonserialize": "1.0.0"
264 | }
265 | },
266 | "com.unity.modules.unitywebrequest": {
267 | "version": "1.0.0",
268 | "depth": 0,
269 | "source": "builtin",
270 | "dependencies": {}
271 | },
272 | "com.unity.modules.unitywebrequestassetbundle": {
273 | "version": "1.0.0",
274 | "depth": 0,
275 | "source": "builtin",
276 | "dependencies": {
277 | "com.unity.modules.assetbundle": "1.0.0",
278 | "com.unity.modules.unitywebrequest": "1.0.0"
279 | }
280 | },
281 | "com.unity.modules.unitywebrequestaudio": {
282 | "version": "1.0.0",
283 | "depth": 0,
284 | "source": "builtin",
285 | "dependencies": {
286 | "com.unity.modules.unitywebrequest": "1.0.0",
287 | "com.unity.modules.audio": "1.0.0"
288 | }
289 | },
290 | "com.unity.modules.unitywebrequesttexture": {
291 | "version": "1.0.0",
292 | "depth": 0,
293 | "source": "builtin",
294 | "dependencies": {
295 | "com.unity.modules.unitywebrequest": "1.0.0",
296 | "com.unity.modules.imageconversion": "1.0.0"
297 | }
298 | },
299 | "com.unity.modules.unitywebrequestwww": {
300 | "version": "1.0.0",
301 | "depth": 0,
302 | "source": "builtin",
303 | "dependencies": {
304 | "com.unity.modules.unitywebrequest": "1.0.0",
305 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
306 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
307 | "com.unity.modules.audio": "1.0.0",
308 | "com.unity.modules.assetbundle": "1.0.0",
309 | "com.unity.modules.imageconversion": "1.0.0"
310 | }
311 | },
312 | "com.unity.modules.vehicles": {
313 | "version": "1.0.0",
314 | "depth": 0,
315 | "source": "builtin",
316 | "dependencies": {
317 | "com.unity.modules.physics": "1.0.0"
318 | }
319 | },
320 | "com.unity.modules.video": {
321 | "version": "1.0.0",
322 | "depth": 0,
323 | "source": "builtin",
324 | "dependencies": {
325 | "com.unity.modules.audio": "1.0.0",
326 | "com.unity.modules.ui": "1.0.0",
327 | "com.unity.modules.unitywebrequest": "1.0.0"
328 | }
329 | },
330 | "com.unity.modules.vr": {
331 | "version": "1.0.0",
332 | "depth": 0,
333 | "source": "builtin",
334 | "dependencies": {
335 | "com.unity.modules.jsonserialize": "1.0.0",
336 | "com.unity.modules.physics": "1.0.0",
337 | "com.unity.modules.xr": "1.0.0"
338 | }
339 | },
340 | "com.unity.modules.wind": {
341 | "version": "1.0.0",
342 | "depth": 0,
343 | "source": "builtin",
344 | "dependencies": {}
345 | },
346 | "com.unity.modules.xr": {
347 | "version": "1.0.0",
348 | "depth": 0,
349 | "source": "builtin",
350 | "dependencies": {
351 | "com.unity.modules.physics": "1.0.0",
352 | "com.unity.modules.jsonserialize": "1.0.0",
353 | "com.unity.modules.subsystems": "1.0.0"
354 | }
355 | }
356 | }
357 | }
358 |
--------------------------------------------------------------------------------
/ProjectSettings/AudioManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!11 &1
4 | AudioManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Volume: 1
8 | Rolloff Scale: 1
9 | Doppler Factor: 1
10 | Default Speaker Mode: 2
11 | m_SampleRate: 0
12 | m_DSPBufferSize: 1024
13 | m_VirtualVoiceCount: 512
14 | m_RealVoiceCount: 32
15 | m_EnableOutputSuspension: 1
16 | m_SpatializerPlugin:
17 | m_AmbisonicDecoderPlugin:
18 | m_DisableAudio: 0
19 | m_VirtualizeEffects: 1
20 | m_RequestedDSPBufferSize: 0
21 |
--------------------------------------------------------------------------------
/ProjectSettings/ClusterInputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!236 &1
4 | ClusterInputManager:
5 | m_ObjectHideFlags: 0
6 | m_Inputs: []
7 |
--------------------------------------------------------------------------------
/ProjectSettings/DynamicsManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!55 &1
4 | PhysicsManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 13
7 | m_Gravity: {x: 0, y: -9.81, z: 0}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_BounceThreshold: 2
10 | m_DefaultMaxDepenetrationVelocity: 10
11 | m_SleepThreshold: 0.005
12 | m_DefaultContactOffset: 0.01
13 | m_DefaultSolverIterations: 6
14 | m_DefaultSolverVelocityIterations: 1
15 | m_QueriesHitBackfaces: 0
16 | m_QueriesHitTriggers: 1
17 | m_EnableAdaptiveForce: 0
18 | m_ClothInterCollisionDistance: 0.1
19 | m_ClothInterCollisionStiffness: 0.2
20 | m_ContactsGeneration: 1
21 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
22 | m_AutoSimulation: 1
23 | m_AutoSyncTransforms: 0
24 | m_ReuseCollisionCallbacks: 0
25 | m_ClothInterCollisionSettingsToggle: 0
26 | m_ClothGravity: {x: 0, y: -9.81, z: 0}
27 | m_ContactPairsMode: 0
28 | m_BroadphaseType: 0
29 | m_WorldBounds:
30 | m_Center: {x: 0, y: 0, z: 0}
31 | m_Extent: {x: 250, y: 250, z: 250}
32 | m_WorldSubdivisions: 8
33 | m_FrictionType: 0
34 | m_EnableEnhancedDeterminism: 0
35 | m_EnableUnifiedHeightmaps: 1
36 | m_SolverType: 0
37 | m_DefaultMaxAngularSpeed: 50
38 |
--------------------------------------------------------------------------------
/ProjectSettings/EditorBuildSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1045 &1
4 | EditorBuildSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Scenes: []
8 | m_configObjects: {}
9 |
--------------------------------------------------------------------------------
/ProjectSettings/EditorSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!159 &1
4 | EditorSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 11
7 | m_SerializationMode: 2
8 | m_LineEndingsForNewScripts: 2
9 | m_DefaultBehaviorMode: 0
10 | m_PrefabRegularEnvironment: {fileID: 0}
11 | m_PrefabUIEnvironment: {fileID: 0}
12 | m_SpritePackerMode: 0
13 | m_SpritePackerPaddingPower: 1
14 | m_EtcTextureCompressorBehavior: 1
15 | m_EtcTextureFastCompressor: 1
16 | m_EtcTextureNormalCompressor: 2
17 | m_EtcTextureBestCompressor: 4
18 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref;rsp
19 | m_ProjectGenerationRootNamespace:
20 | m_EnableTextureStreamingInEditMode: 1
21 | m_EnableTextureStreamingInPlayMode: 1
22 | m_AsyncShaderCompilation: 1
23 | m_CachingShaderPreprocessor: 1
24 | m_PrefabModeAllowAutoSave: 1
25 | m_EnterPlayModeOptionsEnabled: 0
26 | m_EnterPlayModeOptions: 3
27 | m_GameObjectNamingDigits: 1
28 | m_GameObjectNamingScheme: 0
29 | m_AssetNamingUsesSpace: 1
30 | m_UseLegacyProbeSampleCount: 0
31 | m_SerializeInlineMappingsOnOneLine: 1
32 | m_DisableCookiesInLightmapper: 0
33 | m_AssetPipelineMode: 1
34 | m_CacheServerMode: 0
35 | m_CacheServerEndpoint:
36 | m_CacheServerNamespacePrefix: default
37 | m_CacheServerEnableDownload: 1
38 | m_CacheServerEnableUpload: 1
39 | m_CacheServerEnableAuth: 0
40 | m_CacheServerEnableTls: 0
41 |
--------------------------------------------------------------------------------
/ProjectSettings/GraphicsSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!30 &1
4 | GraphicsSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 13
7 | m_Deferred:
8 | m_Mode: 1
9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
10 | m_DeferredReflections:
11 | m_Mode: 1
12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
13 | m_ScreenSpaceShadows:
14 | m_Mode: 1
15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
16 | m_LegacyDeferred:
17 | m_Mode: 1
18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
19 | m_DepthNormals:
20 | m_Mode: 1
21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
22 | m_MotionVectors:
23 | m_Mode: 1
24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
25 | m_LightHalo:
26 | m_Mode: 1
27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
28 | m_LensFlare:
29 | m_Mode: 1
30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
31 | m_VideoShadersIncludeMode: 2
32 | m_AlwaysIncludedShaders:
33 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
34 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
35 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
36 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
37 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
38 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
39 | - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0}
40 | m_PreloadedShaders: []
41 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
42 | m_CustomRenderPipeline: {fileID: 0}
43 | m_TransparencySortMode: 0
44 | m_TransparencySortAxis: {x: 0, y: 0, z: 1}
45 | m_DefaultRenderingPath: 1
46 | m_DefaultMobileRenderingPath: 1
47 | m_TierSettings: []
48 | m_LightmapStripping: 0
49 | m_FogStripping: 0
50 | m_InstancingStripping: 0
51 | m_LightmapKeepPlain: 1
52 | m_LightmapKeepDirCombined: 1
53 | m_LightmapKeepDynamicPlain: 1
54 | m_LightmapKeepDynamicDirCombined: 1
55 | m_LightmapKeepShadowMask: 1
56 | m_LightmapKeepSubtractive: 1
57 | m_FogKeepLinear: 1
58 | m_FogKeepExp: 1
59 | m_FogKeepExp2: 1
60 | m_AlbedoSwatchInfos: []
61 | m_LightsUseLinearIntensity: 0
62 | m_LightsUseColorTemperature: 0
63 | m_DefaultRenderingLayerMask: 1
64 | m_LogWhenShaderIsCompiled: 0
65 |
--------------------------------------------------------------------------------
/ProjectSettings/InputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!13 &1
4 | InputManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Axes:
8 | - serializedVersion: 3
9 | m_Name: Horizontal
10 | descriptiveName:
11 | descriptiveNegativeName:
12 | negativeButton: left
13 | positiveButton: right
14 | altNegativeButton: a
15 | altPositiveButton: d
16 | gravity: 3
17 | dead: 0.001
18 | sensitivity: 3
19 | snap: 1
20 | invert: 0
21 | type: 0
22 | axis: 0
23 | joyNum: 0
24 | - serializedVersion: 3
25 | m_Name: Vertical
26 | descriptiveName:
27 | descriptiveNegativeName:
28 | negativeButton: down
29 | positiveButton: up
30 | altNegativeButton: s
31 | altPositiveButton: w
32 | gravity: 3
33 | dead: 0.001
34 | sensitivity: 3
35 | snap: 1
36 | invert: 0
37 | type: 0
38 | axis: 0
39 | joyNum: 0
40 | - serializedVersion: 3
41 | m_Name: Fire1
42 | descriptiveName:
43 | descriptiveNegativeName:
44 | negativeButton:
45 | positiveButton: left ctrl
46 | altNegativeButton:
47 | altPositiveButton: mouse 0
48 | gravity: 1000
49 | dead: 0.001
50 | sensitivity: 1000
51 | snap: 0
52 | invert: 0
53 | type: 0
54 | axis: 0
55 | joyNum: 0
56 | - serializedVersion: 3
57 | m_Name: Fire2
58 | descriptiveName:
59 | descriptiveNegativeName:
60 | negativeButton:
61 | positiveButton: left alt
62 | altNegativeButton:
63 | altPositiveButton: mouse 1
64 | gravity: 1000
65 | dead: 0.001
66 | sensitivity: 1000
67 | snap: 0
68 | invert: 0
69 | type: 0
70 | axis: 0
71 | joyNum: 0
72 | - serializedVersion: 3
73 | m_Name: Fire3
74 | descriptiveName:
75 | descriptiveNegativeName:
76 | negativeButton:
77 | positiveButton: left shift
78 | altNegativeButton:
79 | altPositiveButton: mouse 2
80 | gravity: 1000
81 | dead: 0.001
82 | sensitivity: 1000
83 | snap: 0
84 | invert: 0
85 | type: 0
86 | axis: 0
87 | joyNum: 0
88 | - serializedVersion: 3
89 | m_Name: Jump
90 | descriptiveName:
91 | descriptiveNegativeName:
92 | negativeButton:
93 | positiveButton: space
94 | altNegativeButton:
95 | altPositiveButton:
96 | gravity: 1000
97 | dead: 0.001
98 | sensitivity: 1000
99 | snap: 0
100 | invert: 0
101 | type: 0
102 | axis: 0
103 | joyNum: 0
104 | - serializedVersion: 3
105 | m_Name: Mouse X
106 | descriptiveName:
107 | descriptiveNegativeName:
108 | negativeButton:
109 | positiveButton:
110 | altNegativeButton:
111 | altPositiveButton:
112 | gravity: 0
113 | dead: 0
114 | sensitivity: 0.1
115 | snap: 0
116 | invert: 0
117 | type: 1
118 | axis: 0
119 | joyNum: 0
120 | - serializedVersion: 3
121 | m_Name: Mouse Y
122 | descriptiveName:
123 | descriptiveNegativeName:
124 | negativeButton:
125 | positiveButton:
126 | altNegativeButton:
127 | altPositiveButton:
128 | gravity: 0
129 | dead: 0
130 | sensitivity: 0.1
131 | snap: 0
132 | invert: 0
133 | type: 1
134 | axis: 1
135 | joyNum: 0
136 | - serializedVersion: 3
137 | m_Name: Mouse ScrollWheel
138 | descriptiveName:
139 | descriptiveNegativeName:
140 | negativeButton:
141 | positiveButton:
142 | altNegativeButton:
143 | altPositiveButton:
144 | gravity: 0
145 | dead: 0
146 | sensitivity: 0.1
147 | snap: 0
148 | invert: 0
149 | type: 1
150 | axis: 2
151 | joyNum: 0
152 | - serializedVersion: 3
153 | m_Name: Horizontal
154 | descriptiveName:
155 | descriptiveNegativeName:
156 | negativeButton:
157 | positiveButton:
158 | altNegativeButton:
159 | altPositiveButton:
160 | gravity: 0
161 | dead: 0.19
162 | sensitivity: 1
163 | snap: 0
164 | invert: 0
165 | type: 2
166 | axis: 0
167 | joyNum: 0
168 | - serializedVersion: 3
169 | m_Name: Vertical
170 | descriptiveName:
171 | descriptiveNegativeName:
172 | negativeButton:
173 | positiveButton:
174 | altNegativeButton:
175 | altPositiveButton:
176 | gravity: 0
177 | dead: 0.19
178 | sensitivity: 1
179 | snap: 0
180 | invert: 1
181 | type: 2
182 | axis: 1
183 | joyNum: 0
184 | - serializedVersion: 3
185 | m_Name: Fire1
186 | descriptiveName:
187 | descriptiveNegativeName:
188 | negativeButton:
189 | positiveButton: joystick button 0
190 | altNegativeButton:
191 | altPositiveButton:
192 | gravity: 1000
193 | dead: 0.001
194 | sensitivity: 1000
195 | snap: 0
196 | invert: 0
197 | type: 0
198 | axis: 0
199 | joyNum: 0
200 | - serializedVersion: 3
201 | m_Name: Fire2
202 | descriptiveName:
203 | descriptiveNegativeName:
204 | negativeButton:
205 | positiveButton: joystick button 1
206 | altNegativeButton:
207 | altPositiveButton:
208 | gravity: 1000
209 | dead: 0.001
210 | sensitivity: 1000
211 | snap: 0
212 | invert: 0
213 | type: 0
214 | axis: 0
215 | joyNum: 0
216 | - serializedVersion: 3
217 | m_Name: Fire3
218 | descriptiveName:
219 | descriptiveNegativeName:
220 | negativeButton:
221 | positiveButton: joystick button 2
222 | altNegativeButton:
223 | altPositiveButton:
224 | gravity: 1000
225 | dead: 0.001
226 | sensitivity: 1000
227 | snap: 0
228 | invert: 0
229 | type: 0
230 | axis: 0
231 | joyNum: 0
232 | - serializedVersion: 3
233 | m_Name: Jump
234 | descriptiveName:
235 | descriptiveNegativeName:
236 | negativeButton:
237 | positiveButton: joystick button 3
238 | altNegativeButton:
239 | altPositiveButton:
240 | gravity: 1000
241 | dead: 0.001
242 | sensitivity: 1000
243 | snap: 0
244 | invert: 0
245 | type: 0
246 | axis: 0
247 | joyNum: 0
248 | - serializedVersion: 3
249 | m_Name: Submit
250 | descriptiveName:
251 | descriptiveNegativeName:
252 | negativeButton:
253 | positiveButton: return
254 | altNegativeButton:
255 | altPositiveButton: joystick button 0
256 | gravity: 1000
257 | dead: 0.001
258 | sensitivity: 1000
259 | snap: 0
260 | invert: 0
261 | type: 0
262 | axis: 0
263 | joyNum: 0
264 | - serializedVersion: 3
265 | m_Name: Submit
266 | descriptiveName:
267 | descriptiveNegativeName:
268 | negativeButton:
269 | positiveButton: enter
270 | altNegativeButton:
271 | altPositiveButton: space
272 | gravity: 1000
273 | dead: 0.001
274 | sensitivity: 1000
275 | snap: 0
276 | invert: 0
277 | type: 0
278 | axis: 0
279 | joyNum: 0
280 | - serializedVersion: 3
281 | m_Name: Cancel
282 | descriptiveName:
283 | descriptiveNegativeName:
284 | negativeButton:
285 | positiveButton: escape
286 | altNegativeButton:
287 | altPositiveButton: joystick button 1
288 | gravity: 1000
289 | dead: 0.001
290 | sensitivity: 1000
291 | snap: 0
292 | invert: 0
293 | type: 0
294 | axis: 0
295 | joyNum: 0
296 |
--------------------------------------------------------------------------------
/ProjectSettings/NavMeshAreas.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!126 &1
4 | NavMeshProjectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | areas:
8 | - name: Walkable
9 | cost: 1
10 | - name: Not Walkable
11 | cost: 1
12 | - name: Jump
13 | cost: 2
14 | - name:
15 | cost: 1
16 | - name:
17 | cost: 1
18 | - name:
19 | cost: 1
20 | - name:
21 | cost: 1
22 | - name:
23 | cost: 1
24 | - name:
25 | cost: 1
26 | - name:
27 | cost: 1
28 | - name:
29 | cost: 1
30 | - name:
31 | cost: 1
32 | - name:
33 | cost: 1
34 | - name:
35 | cost: 1
36 | - name:
37 | cost: 1
38 | - name:
39 | cost: 1
40 | - name:
41 | cost: 1
42 | - name:
43 | cost: 1
44 | - name:
45 | cost: 1
46 | - name:
47 | cost: 1
48 | - name:
49 | cost: 1
50 | - name:
51 | cost: 1
52 | - name:
53 | cost: 1
54 | - name:
55 | cost: 1
56 | - name:
57 | cost: 1
58 | - name:
59 | cost: 1
60 | - name:
61 | cost: 1
62 | - name:
63 | cost: 1
64 | - name:
65 | cost: 1
66 | - name:
67 | cost: 1
68 | - name:
69 | cost: 1
70 | - name:
71 | cost: 1
72 | m_LastAgentTypeID: -887442657
73 | m_Settings:
74 | - serializedVersion: 2
75 | agentTypeID: 0
76 | agentRadius: 0.5
77 | agentHeight: 2
78 | agentSlope: 45
79 | agentClimb: 0.75
80 | ledgeDropHeight: 0
81 | maxJumpAcrossDistance: 0
82 | minRegionArea: 2
83 | manualCellSize: 0
84 | cellSize: 0.16666667
85 | manualTileSize: 0
86 | tileSize: 256
87 | accuratePlacement: 0
88 | maxJobWorkers: 0
89 | preserveTilesOutsideBounds: 0
90 | debug:
91 | m_Flags: 0
92 | m_SettingNames:
93 | - Humanoid
94 |
--------------------------------------------------------------------------------
/ProjectSettings/PackageManagerSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &1
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 61
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
13 | m_Name:
14 | m_EditorClassIdentifier:
15 | m_EnablePreviewPackages: 0
16 | m_EnablePackageDependencies: 0
17 | m_AdvancedSettingsExpanded: 1
18 | m_ScopedRegistriesSettingsExpanded: 1
19 | oneTimeWarningShown: 0
20 | m_Registries:
21 | - m_Id: main
22 | m_Name:
23 | m_Url: https://packages.unity.com
24 | m_Scopes: []
25 | m_IsDefault: 1
26 | m_Capabilities: 7
27 | m_UserSelectedRegistryName:
28 | m_UserAddingNewScopedRegistry: 0
29 | m_RegistryInfoDraft:
30 | m_ErrorMessage:
31 | m_Original:
32 | m_Id:
33 | m_Name:
34 | m_Url:
35 | m_Scopes: []
36 | m_IsDefault: 0
37 | m_Capabilities: 0
38 | m_Modified: 0
39 | m_Name:
40 | m_Url:
41 | m_Scopes:
42 | -
43 | m_SelectedScopeIndex: 0
44 |
--------------------------------------------------------------------------------
/ProjectSettings/Physics2DSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!19 &1
4 | Physics2DSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 5
7 | m_Gravity: {x: 0, y: -9.81}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_VelocityIterations: 8
10 | m_PositionIterations: 3
11 | m_VelocityThreshold: 1
12 | m_MaxLinearCorrection: 0.2
13 | m_MaxAngularCorrection: 8
14 | m_MaxTranslationSpeed: 100
15 | m_MaxRotationSpeed: 360
16 | m_BaumgarteScale: 0.2
17 | m_BaumgarteTimeOfImpactScale: 0.75
18 | m_TimeToSleep: 0.5
19 | m_LinearSleepTolerance: 0.01
20 | m_AngularSleepTolerance: 2
21 | m_DefaultContactOffset: 0.01
22 | m_JobOptions:
23 | serializedVersion: 2
24 | useMultithreading: 0
25 | useConsistencySorting: 0
26 | m_InterpolationPosesPerJob: 100
27 | m_NewContactsPerJob: 30
28 | m_CollideContactsPerJob: 100
29 | m_ClearFlagsPerJob: 200
30 | m_ClearBodyForcesPerJob: 200
31 | m_SyncDiscreteFixturesPerJob: 50
32 | m_SyncContinuousFixturesPerJob: 50
33 | m_FindNearestContactsPerJob: 100
34 | m_UpdateTriggerContactsPerJob: 100
35 | m_IslandSolverCostThreshold: 100
36 | m_IslandSolverBodyCostScale: 1
37 | m_IslandSolverContactCostScale: 10
38 | m_IslandSolverJointCostScale: 10
39 | m_IslandSolverBodiesPerJob: 50
40 | m_IslandSolverContactsPerJob: 50
41 | m_SimulationMode: 0
42 | m_QueriesHitTriggers: 1
43 | m_QueriesStartInColliders: 1
44 | m_CallbacksOnDisable: 1
45 | m_ReuseCollisionCallbacks: 0
46 | m_AutoSyncTransforms: 0
47 | m_AlwaysShowColliders: 0
48 | m_ShowColliderSleep: 1
49 | m_ShowColliderContacts: 0
50 | m_ShowColliderAABB: 0
51 | m_ContactArrowScale: 0.2
52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
57 |
--------------------------------------------------------------------------------
/ProjectSettings/PresetManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1386491679 &1
4 | PresetManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_DefaultPresets: {}
8 |
--------------------------------------------------------------------------------
/ProjectSettings/ProjectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!129 &1
4 | PlayerSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 22
7 | productGUID: af7e3b58549b23a47a9db841356e025b
8 | AndroidProfiler: 0
9 | AndroidFilterTouchesWhenObscured: 0
10 | AndroidEnableSustainedPerformanceMode: 0
11 | defaultScreenOrientation: 4
12 | targetDevice: 2
13 | useOnDemandResources: 0
14 | accelerometerFrequency: 60
15 | companyName: DefaultCompany
16 | productName: Unity-FFmpeg-ScreenRecorder
17 | defaultCursor: {fileID: 0}
18 | cursorHotspot: {x: 0, y: 0}
19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
20 | m_ShowUnitySplashScreen: 1
21 | m_ShowUnitySplashLogo: 1
22 | m_SplashScreenOverlayOpacity: 1
23 | m_SplashScreenAnimation: 1
24 | m_SplashScreenLogoStyle: 1
25 | m_SplashScreenDrawMode: 0
26 | m_SplashScreenBackgroundAnimationZoom: 1
27 | m_SplashScreenLogoAnimationZoom: 1
28 | m_SplashScreenBackgroundLandscapeAspect: 1
29 | m_SplashScreenBackgroundPortraitAspect: 1
30 | m_SplashScreenBackgroundLandscapeUvs:
31 | serializedVersion: 2
32 | x: 0
33 | y: 0
34 | width: 1
35 | height: 1
36 | m_SplashScreenBackgroundPortraitUvs:
37 | serializedVersion: 2
38 | x: 0
39 | y: 0
40 | width: 1
41 | height: 1
42 | m_SplashScreenLogos: []
43 | m_VirtualRealitySplashScreen: {fileID: 0}
44 | m_HolographicTrackingLossScreen: {fileID: 0}
45 | defaultScreenWidth: 1920
46 | defaultScreenHeight: 1080
47 | defaultScreenWidthWeb: 960
48 | defaultScreenHeightWeb: 600
49 | m_StereoRenderingPath: 0
50 | m_ActiveColorSpace: 0
51 | m_MTRendering: 1
52 | mipStripping: 0
53 | numberOfMipsStripped: 0
54 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000
55 | iosShowActivityIndicatorOnLoading: -1
56 | androidShowActivityIndicatorOnLoading: -1
57 | iosUseCustomAppBackgroundBehavior: 0
58 | iosAllowHTTPDownload: 1
59 | allowedAutorotateToPortrait: 1
60 | allowedAutorotateToPortraitUpsideDown: 1
61 | allowedAutorotateToLandscapeRight: 1
62 | allowedAutorotateToLandscapeLeft: 1
63 | useOSAutorotation: 1
64 | use32BitDisplayBuffer: 1
65 | preserveFramebufferAlpha: 0
66 | disableDepthAndStencilBuffers: 0
67 | androidStartInFullscreen: 1
68 | androidRenderOutsideSafeArea: 1
69 | androidUseSwappy: 1
70 | androidBlitType: 0
71 | androidResizableWindow: 0
72 | androidDefaultWindowWidth: 1920
73 | androidDefaultWindowHeight: 1080
74 | androidMinimumWindowWidth: 400
75 | androidMinimumWindowHeight: 300
76 | androidFullscreenMode: 1
77 | defaultIsNativeResolution: 1
78 | macRetinaSupport: 1
79 | runInBackground: 0
80 | captureSingleScreen: 0
81 | muteOtherAudioSources: 0
82 | Prepare IOS For Recording: 0
83 | Force IOS Speakers When Recording: 0
84 | deferSystemGesturesMode: 0
85 | hideHomeButton: 0
86 | submitAnalytics: 1
87 | usePlayerLog: 1
88 | bakeCollisionMeshes: 0
89 | forceSingleInstance: 0
90 | useFlipModelSwapchain: 1
91 | resizableWindow: 0
92 | useMacAppStoreValidation: 0
93 | macAppStoreCategory: public.app-category.games
94 | gpuSkinning: 0
95 | xboxPIXTextureCapture: 0
96 | xboxEnableAvatar: 0
97 | xboxEnableKinect: 0
98 | xboxEnableKinectAutoTracking: 0
99 | xboxEnableFitness: 0
100 | visibleInBackground: 1
101 | allowFullscreenSwitch: 1
102 | fullscreenMode: 1
103 | xboxSpeechDB: 0
104 | xboxEnableHeadOrientation: 0
105 | xboxEnableGuest: 0
106 | xboxEnablePIXSampling: 0
107 | metalFramebufferOnly: 0
108 | xboxOneResolution: 0
109 | xboxOneSResolution: 0
110 | xboxOneXResolution: 3
111 | xboxOneMonoLoggingLevel: 0
112 | xboxOneLoggingLevel: 1
113 | xboxOneDisableEsram: 0
114 | xboxOneEnableTypeOptimization: 0
115 | xboxOnePresentImmediateThreshold: 0
116 | switchQueueCommandMemory: 1048576
117 | switchQueueControlMemory: 16384
118 | switchQueueComputeMemory: 262144
119 | switchNVNShaderPoolsGranularity: 33554432
120 | switchNVNDefaultPoolsGranularity: 16777216
121 | switchNVNOtherPoolsGranularity: 16777216
122 | switchNVNMaxPublicTextureIDCount: 0
123 | switchNVNMaxPublicSamplerIDCount: 0
124 | stadiaPresentMode: 0
125 | stadiaTargetFramerate: 0
126 | vulkanNumSwapchainBuffers: 3
127 | vulkanEnableSetSRGBWrite: 0
128 | vulkanEnablePreTransform: 0
129 | vulkanEnableLateAcquireNextImage: 0
130 | vulkanEnableCommandBufferRecycling: 1
131 | m_SupportedAspectRatios:
132 | 4:3: 1
133 | 5:4: 1
134 | 16:10: 1
135 | 16:9: 1
136 | Others: 1
137 | bundleVersion: 1.0
138 | preloadedAssets: []
139 | metroInputSource: 0
140 | wsaTransparentSwapchain: 0
141 | m_HolographicPauseOnTrackingLoss: 1
142 | xboxOneDisableKinectGpuReservation: 1
143 | xboxOneEnable7thCore: 1
144 | vrSettings:
145 | enable360StereoCapture: 0
146 | isWsaHolographicRemotingEnabled: 0
147 | enableFrameTimingStats: 0
148 | useHDRDisplay: 0
149 | D3DHDRBitDepth: 0
150 | m_ColorGamuts: 00000000
151 | targetPixelDensity: 30
152 | resolutionScalingMode: 0
153 | androidSupportedAspectRatio: 1
154 | androidMaxAspectRatio: 2.1
155 | applicationIdentifier: {}
156 | buildNumber:
157 | Standalone: 0
158 | iPhone: 0
159 | tvOS: 0
160 | overrideDefaultApplicationIdentifier: 0
161 | AndroidBundleVersionCode: 1
162 | AndroidMinSdkVersion: 19
163 | AndroidTargetSdkVersion: 0
164 | AndroidPreferredInstallLocation: 1
165 | aotOptions:
166 | stripEngineCode: 1
167 | iPhoneStrippingLevel: 0
168 | iPhoneScriptCallOptimization: 0
169 | ForceInternetPermission: 0
170 | ForceSDCardPermission: 0
171 | CreateWallpaper: 0
172 | APKExpansionFiles: 0
173 | keepLoadedShadersAlive: 0
174 | StripUnusedMeshComponents: 0
175 | VertexChannelCompressionMask: 4054
176 | iPhoneSdkVersion: 988
177 | iOSTargetOSVersionString: 11.0
178 | tvOSSdkVersion: 0
179 | tvOSRequireExtendedGameController: 0
180 | tvOSTargetOSVersionString: 11.0
181 | uIPrerenderedIcon: 0
182 | uIRequiresPersistentWiFi: 0
183 | uIRequiresFullScreen: 1
184 | uIStatusBarHidden: 1
185 | uIExitOnSuspend: 0
186 | uIStatusBarStyle: 0
187 | appleTVSplashScreen: {fileID: 0}
188 | appleTVSplashScreen2x: {fileID: 0}
189 | tvOSSmallIconLayers: []
190 | tvOSSmallIconLayers2x: []
191 | tvOSLargeIconLayers: []
192 | tvOSLargeIconLayers2x: []
193 | tvOSTopShelfImageLayers: []
194 | tvOSTopShelfImageLayers2x: []
195 | tvOSTopShelfImageWideLayers: []
196 | tvOSTopShelfImageWideLayers2x: []
197 | iOSLaunchScreenType: 0
198 | iOSLaunchScreenPortrait: {fileID: 0}
199 | iOSLaunchScreenLandscape: {fileID: 0}
200 | iOSLaunchScreenBackgroundColor:
201 | serializedVersion: 2
202 | rgba: 0
203 | iOSLaunchScreenFillPct: 100
204 | iOSLaunchScreenSize: 100
205 | iOSLaunchScreenCustomXibPath:
206 | iOSLaunchScreeniPadType: 0
207 | iOSLaunchScreeniPadImage: {fileID: 0}
208 | iOSLaunchScreeniPadBackgroundColor:
209 | serializedVersion: 2
210 | rgba: 0
211 | iOSLaunchScreeniPadFillPct: 100
212 | iOSLaunchScreeniPadSize: 100
213 | iOSLaunchScreeniPadCustomXibPath:
214 | iOSLaunchScreenCustomStoryboardPath:
215 | iOSLaunchScreeniPadCustomStoryboardPath:
216 | iOSDeviceRequirements: []
217 | iOSURLSchemes: []
218 | iOSBackgroundModes: 0
219 | iOSMetalForceHardShadows: 0
220 | metalEditorSupport: 1
221 | metalAPIValidation: 1
222 | iOSRenderExtraFrameOnPause: 0
223 | iosCopyPluginsCodeInsteadOfSymlink: 0
224 | appleDeveloperTeamID:
225 | iOSManualSigningProvisioningProfileID:
226 | tvOSManualSigningProvisioningProfileID:
227 | iOSManualSigningProvisioningProfileType: 0
228 | tvOSManualSigningProvisioningProfileType: 0
229 | appleEnableAutomaticSigning: 0
230 | iOSRequireARKit: 0
231 | iOSAutomaticallyDetectAndAddCapabilities: 1
232 | appleEnableProMotion: 0
233 | shaderPrecisionModel: 0
234 | clonedFromGUID: 00000000000000000000000000000000
235 | templatePackageId:
236 | templateDefaultScene:
237 | useCustomMainManifest: 0
238 | useCustomLauncherManifest: 0
239 | useCustomMainGradleTemplate: 0
240 | useCustomLauncherGradleManifest: 0
241 | useCustomBaseGradleTemplate: 0
242 | useCustomGradlePropertiesTemplate: 0
243 | useCustomProguardFile: 0
244 | AndroidTargetArchitectures: 1
245 | AndroidTargetDevices: 0
246 | AndroidSplashScreenScale: 0
247 | androidSplashScreen: {fileID: 0}
248 | AndroidKeystoreName:
249 | AndroidKeyaliasName:
250 | AndroidBuildApkPerCpuArchitecture: 0
251 | AndroidTVCompatibility: 0
252 | AndroidIsGame: 1
253 | AndroidEnableTango: 0
254 | androidEnableBanner: 1
255 | androidUseLowAccuracyLocation: 0
256 | androidUseCustomKeystore: 0
257 | m_AndroidBanners:
258 | - width: 320
259 | height: 180
260 | banner: {fileID: 0}
261 | androidGamepadSupportLevel: 0
262 | chromeosInputEmulation: 1
263 | AndroidMinifyWithR8: 0
264 | AndroidMinifyRelease: 0
265 | AndroidMinifyDebug: 0
266 | AndroidValidateAppBundleSize: 1
267 | AndroidAppBundleSizeToValidate: 150
268 | m_BuildTargetIcons: []
269 | m_BuildTargetPlatformIcons: []
270 | m_BuildTargetBatching: []
271 | m_BuildTargetGraphicsJobs: []
272 | m_BuildTargetGraphicsJobMode: []
273 | m_BuildTargetGraphicsAPIs: []
274 | m_BuildTargetVRSettings: []
275 | openGLRequireES31: 0
276 | openGLRequireES31AEP: 0
277 | openGLRequireES32: 0
278 | m_TemplateCustomTags: {}
279 | mobileMTRendering:
280 | Android: 1
281 | iPhone: 1
282 | tvOS: 1
283 | m_BuildTargetGroupLightmapEncodingQuality: []
284 | m_BuildTargetGroupLightmapSettings: []
285 | m_BuildTargetNormalMapEncoding: []
286 | playModeTestRunnerEnabled: 0
287 | runPlayModeTestAsEditModeTest: 0
288 | actionOnDotNetUnhandledException: 1
289 | enableInternalProfiler: 0
290 | logObjCUncaughtExceptions: 1
291 | enableCrashReportAPI: 0
292 | cameraUsageDescription:
293 | locationUsageDescription:
294 | microphoneUsageDescription:
295 | bluetoothUsageDescription:
296 | switchNMETAOverride:
297 | switchNetLibKey:
298 | switchSocketMemoryPoolSize: 6144
299 | switchSocketAllocatorPoolSize: 128
300 | switchSocketConcurrencyLimit: 14
301 | switchScreenResolutionBehavior: 2
302 | switchUseCPUProfiler: 0
303 | switchUseGOLDLinker: 0
304 | switchApplicationID: 0x01004b9000490000
305 | switchNSODependencies:
306 | switchTitleNames_0:
307 | switchTitleNames_1:
308 | switchTitleNames_2:
309 | switchTitleNames_3:
310 | switchTitleNames_4:
311 | switchTitleNames_5:
312 | switchTitleNames_6:
313 | switchTitleNames_7:
314 | switchTitleNames_8:
315 | switchTitleNames_9:
316 | switchTitleNames_10:
317 | switchTitleNames_11:
318 | switchTitleNames_12:
319 | switchTitleNames_13:
320 | switchTitleNames_14:
321 | switchTitleNames_15:
322 | switchPublisherNames_0:
323 | switchPublisherNames_1:
324 | switchPublisherNames_2:
325 | switchPublisherNames_3:
326 | switchPublisherNames_4:
327 | switchPublisherNames_5:
328 | switchPublisherNames_6:
329 | switchPublisherNames_7:
330 | switchPublisherNames_8:
331 | switchPublisherNames_9:
332 | switchPublisherNames_10:
333 | switchPublisherNames_11:
334 | switchPublisherNames_12:
335 | switchPublisherNames_13:
336 | switchPublisherNames_14:
337 | switchPublisherNames_15:
338 | switchIcons_0: {fileID: 0}
339 | switchIcons_1: {fileID: 0}
340 | switchIcons_2: {fileID: 0}
341 | switchIcons_3: {fileID: 0}
342 | switchIcons_4: {fileID: 0}
343 | switchIcons_5: {fileID: 0}
344 | switchIcons_6: {fileID: 0}
345 | switchIcons_7: {fileID: 0}
346 | switchIcons_8: {fileID: 0}
347 | switchIcons_9: {fileID: 0}
348 | switchIcons_10: {fileID: 0}
349 | switchIcons_11: {fileID: 0}
350 | switchIcons_12: {fileID: 0}
351 | switchIcons_13: {fileID: 0}
352 | switchIcons_14: {fileID: 0}
353 | switchIcons_15: {fileID: 0}
354 | switchSmallIcons_0: {fileID: 0}
355 | switchSmallIcons_1: {fileID: 0}
356 | switchSmallIcons_2: {fileID: 0}
357 | switchSmallIcons_3: {fileID: 0}
358 | switchSmallIcons_4: {fileID: 0}
359 | switchSmallIcons_5: {fileID: 0}
360 | switchSmallIcons_6: {fileID: 0}
361 | switchSmallIcons_7: {fileID: 0}
362 | switchSmallIcons_8: {fileID: 0}
363 | switchSmallIcons_9: {fileID: 0}
364 | switchSmallIcons_10: {fileID: 0}
365 | switchSmallIcons_11: {fileID: 0}
366 | switchSmallIcons_12: {fileID: 0}
367 | switchSmallIcons_13: {fileID: 0}
368 | switchSmallIcons_14: {fileID: 0}
369 | switchSmallIcons_15: {fileID: 0}
370 | switchManualHTML:
371 | switchAccessibleURLs:
372 | switchLegalInformation:
373 | switchMainThreadStackSize: 1048576
374 | switchPresenceGroupId:
375 | switchLogoHandling: 0
376 | switchReleaseVersion: 0
377 | switchDisplayVersion: 1.0.0
378 | switchStartupUserAccount: 0
379 | switchTouchScreenUsage: 0
380 | switchSupportedLanguagesMask: 0
381 | switchLogoType: 0
382 | switchApplicationErrorCodeCategory:
383 | switchUserAccountSaveDataSize: 0
384 | switchUserAccountSaveDataJournalSize: 0
385 | switchApplicationAttribute: 0
386 | switchCardSpecSize: -1
387 | switchCardSpecClock: -1
388 | switchRatingsMask: 0
389 | switchRatingsInt_0: 0
390 | switchRatingsInt_1: 0
391 | switchRatingsInt_2: 0
392 | switchRatingsInt_3: 0
393 | switchRatingsInt_4: 0
394 | switchRatingsInt_5: 0
395 | switchRatingsInt_6: 0
396 | switchRatingsInt_7: 0
397 | switchRatingsInt_8: 0
398 | switchRatingsInt_9: 0
399 | switchRatingsInt_10: 0
400 | switchRatingsInt_11: 0
401 | switchRatingsInt_12: 0
402 | switchLocalCommunicationIds_0:
403 | switchLocalCommunicationIds_1:
404 | switchLocalCommunicationIds_2:
405 | switchLocalCommunicationIds_3:
406 | switchLocalCommunicationIds_4:
407 | switchLocalCommunicationIds_5:
408 | switchLocalCommunicationIds_6:
409 | switchLocalCommunicationIds_7:
410 | switchParentalControl: 0
411 | switchAllowsScreenshot: 1
412 | switchAllowsVideoCapturing: 1
413 | switchAllowsRuntimeAddOnContentInstall: 0
414 | switchDataLossConfirmation: 0
415 | switchUserAccountLockEnabled: 0
416 | switchSystemResourceMemory: 16777216
417 | switchSupportedNpadStyles: 22
418 | switchNativeFsCacheSize: 32
419 | switchIsHoldTypeHorizontal: 0
420 | switchSupportedNpadCount: 8
421 | switchSocketConfigEnabled: 0
422 | switchTcpInitialSendBufferSize: 32
423 | switchTcpInitialReceiveBufferSize: 64
424 | switchTcpAutoSendBufferSizeMax: 256
425 | switchTcpAutoReceiveBufferSizeMax: 256
426 | switchUdpSendBufferSize: 9
427 | switchUdpReceiveBufferSize: 42
428 | switchSocketBufferEfficiency: 4
429 | switchSocketInitializeEnabled: 1
430 | switchNetworkInterfaceManagerInitializeEnabled: 1
431 | switchPlayerConnectionEnabled: 1
432 | switchUseNewStyleFilepaths: 0
433 | switchUseMicroSleepForYield: 1
434 | switchMicroSleepForYieldTime: 25
435 | ps4NPAgeRating: 12
436 | ps4NPTitleSecret:
437 | ps4NPTrophyPackPath:
438 | ps4ParentalLevel: 11
439 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000
440 | ps4Category: 0
441 | ps4MasterVersion: 01.00
442 | ps4AppVersion: 01.00
443 | ps4AppType: 0
444 | ps4ParamSfxPath:
445 | ps4VideoOutPixelFormat: 0
446 | ps4VideoOutInitialWidth: 1920
447 | ps4VideoOutBaseModeInitialWidth: 1920
448 | ps4VideoOutReprojectionRate: 60
449 | ps4PronunciationXMLPath:
450 | ps4PronunciationSIGPath:
451 | ps4BackgroundImagePath:
452 | ps4StartupImagePath:
453 | ps4StartupImagesFolder:
454 | ps4IconImagesFolder:
455 | ps4SaveDataImagePath:
456 | ps4SdkOverride:
457 | ps4BGMPath:
458 | ps4ShareFilePath:
459 | ps4ShareOverlayImagePath:
460 | ps4PrivacyGuardImagePath:
461 | ps4ExtraSceSysFile:
462 | ps4NPtitleDatPath:
463 | ps4RemotePlayKeyAssignment: -1
464 | ps4RemotePlayKeyMappingDir:
465 | ps4PlayTogetherPlayerCount: 0
466 | ps4EnterButtonAssignment: 2
467 | ps4ApplicationParam1: 0
468 | ps4ApplicationParam2: 0
469 | ps4ApplicationParam3: 0
470 | ps4ApplicationParam4: 0
471 | ps4DownloadDataSize: 0
472 | ps4GarlicHeapSize: 2048
473 | ps4ProGarlicHeapSize: 2560
474 | playerPrefsMaxSize: 32768
475 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
476 | ps4pnSessions: 1
477 | ps4pnPresence: 1
478 | ps4pnFriends: 1
479 | ps4pnGameCustomData: 1
480 | playerPrefsSupport: 0
481 | enableApplicationExit: 0
482 | resetTempFolder: 1
483 | restrictedAudioUsageRights: 0
484 | ps4UseResolutionFallback: 0
485 | ps4ReprojectionSupport: 0
486 | ps4UseAudio3dBackend: 0
487 | ps4UseLowGarlicFragmentationMode: 1
488 | ps4SocialScreenEnabled: 0
489 | ps4ScriptOptimizationLevel: 2
490 | ps4Audio3dVirtualSpeakerCount: 14
491 | ps4attribCpuUsage: 0
492 | ps4PatchPkgPath:
493 | ps4PatchLatestPkgPath:
494 | ps4PatchChangeinfoPath:
495 | ps4PatchDayOne: 0
496 | ps4attribUserManagement: 0
497 | ps4attribMoveSupport: 0
498 | ps4attrib3DSupport: 0
499 | ps4attribShareSupport: 0
500 | ps4attribExclusiveVR: 0
501 | ps4disableAutoHideSplash: 0
502 | ps4videoRecordingFeaturesUsed: 0
503 | ps4contentSearchFeaturesUsed: 0
504 | ps4CompatibilityPS5: 0
505 | ps4AllowPS5Detection: 0
506 | ps4GPU800MHz: 1
507 | ps4attribEyeToEyeDistanceSettingVR: 0
508 | ps4IncludedModules: []
509 | ps4attribVROutputEnabled: 0
510 | monoEnv:
511 | splashScreenBackgroundSourceLandscape: {fileID: 0}
512 | splashScreenBackgroundSourcePortrait: {fileID: 0}
513 | blurSplashScreenBackground: 1
514 | spritePackerPolicy:
515 | webGLMemorySize: 32
516 | webGLExceptionSupport: 1
517 | webGLNameFilesAsHashes: 0
518 | webGLDataCaching: 1
519 | webGLDebugSymbols: 0
520 | webGLEmscriptenArgs:
521 | webGLModulesDirectory:
522 | webGLTemplate: APPLICATION:Default
523 | webGLAnalyzeBuildSize: 0
524 | webGLUseEmbeddedResources: 0
525 | webGLCompressionFormat: 0
526 | webGLWasmArithmeticExceptions: 0
527 | webGLLinkerTarget: 1
528 | webGLThreadsSupport: 0
529 | webGLDecompressionFallback: 0
530 | scriptingDefineSymbols: {}
531 | additionalCompilerArguments: {}
532 | platformArchitecture: {}
533 | scriptingBackend: {}
534 | il2cppCompilerConfiguration: {}
535 | managedStrippingLevel: {}
536 | incrementalIl2cppBuild: {}
537 | suppressCommonWarnings: 1
538 | allowUnsafeCode: 0
539 | useDeterministicCompilation: 1
540 | useReferenceAssemblies: 1
541 | enableRoslynAnalyzers: 1
542 | additionalIl2CppArgs:
543 | scriptingRuntimeVersion: 1
544 | gcIncremental: 1
545 | assemblyVersionValidation: 1
546 | gcWBarrierValidation: 0
547 | apiCompatibilityLevelPerPlatform: {}
548 | m_RenderingPath: 1
549 | m_MobileRenderingPath: 1
550 | metroPackageName: Unity-FFmpeg-ScreenRecorder
551 | metroPackageVersion: 1.0.0.0
552 | metroCertificatePath:
553 | metroCertificatePassword:
554 | metroCertificateSubject:
555 | metroCertificateIssuer:
556 | metroCertificateNotAfter: 0000000000000000
557 | metroApplicationDescription: Unity-FFmpeg-ScreenRecorder
558 | wsaImages: {}
559 | metroTileShortName: Unity-FFmpeg-ScreenRecorder
560 | metroTileShowName: 0
561 | metroMediumTileShowName: 0
562 | metroLargeTileShowName: 0
563 | metroWideTileShowName: 0
564 | metroSupportStreamingInstall: 0
565 | metroLastRequiredScene: 0
566 | metroDefaultTileSize: 1
567 | metroTileForegroundText: 2
568 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
569 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1}
570 | metroSplashScreenUseBackgroundColor: 0
571 | platformCapabilities: {}
572 | metroTargetDeviceFamilies: {}
573 | metroFTAName:
574 | metroFTAFileTypes: []
575 | metroProtocolName:
576 | XboxOneProductId:
577 | XboxOneUpdateKey:
578 | XboxOneSandboxId:
579 | XboxOneContentId:
580 | XboxOneTitleId:
581 | XboxOneSCId:
582 | XboxOneGameOsOverridePath:
583 | XboxOnePackagingOverridePath:
584 | XboxOneAppManifestOverridePath:
585 | XboxOneVersion: 1.0.0.0
586 | XboxOnePackageEncryption: 0
587 | XboxOnePackageUpdateGranularity: 2
588 | XboxOneDescription:
589 | XboxOneLanguage:
590 | - enus
591 | XboxOneCapability: []
592 | XboxOneGameRating: {}
593 | XboxOneIsContentPackage: 0
594 | XboxOneEnhancedXboxCompatibilityMode: 0
595 | XboxOneEnableGPUVariability: 1
596 | XboxOneSockets: {}
597 | XboxOneSplashScreen: {fileID: 0}
598 | XboxOneAllowedProductIds: []
599 | XboxOnePersistentLocalStorageSize: 0
600 | XboxOneXTitleMemory: 8
601 | XboxOneOverrideIdentityName:
602 | XboxOneOverrideIdentityPublisher:
603 | vrEditorSettings: {}
604 | cloudServicesEnabled: {}
605 | luminIcon:
606 | m_Name:
607 | m_ModelFolderPath:
608 | m_PortalFolderPath:
609 | luminCert:
610 | m_CertPath:
611 | m_SignPackage: 1
612 | luminIsChannelApp: 0
613 | luminVersion:
614 | m_VersionCode: 1
615 | m_VersionName:
616 | apiCompatibilityLevel: 6
617 | activeInputHandler: 0
618 | cloudProjectId:
619 | framebufferDepthMemorylessMode: 0
620 | qualitySettingsNames: []
621 | projectName:
622 | organizationId:
623 | cloudEnabled: 0
624 | legacyClampBlendShapeWeights: 0
625 | virtualTexturingSupportEnabled: 0
626 |
--------------------------------------------------------------------------------
/ProjectSettings/ProjectVersion.txt:
--------------------------------------------------------------------------------
1 | m_EditorVersion: 2020.3.28f1
2 | m_EditorVersionWithRevision: 2020.3.28f1 (f5400f52e03f)
3 |
--------------------------------------------------------------------------------
/ProjectSettings/QualitySettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!47 &1
4 | QualitySettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 5
7 | m_CurrentQuality: 5
8 | m_QualitySettings:
9 | - serializedVersion: 2
10 | name: Very Low
11 | pixelLightCount: 0
12 | shadows: 0
13 | shadowResolution: 0
14 | shadowProjection: 1
15 | shadowCascades: 1
16 | shadowDistance: 15
17 | shadowNearPlaneOffset: 3
18 | shadowCascade2Split: 0.33333334
19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
20 | shadowmaskMode: 0
21 | skinWeights: 1
22 | textureQuality: 1
23 | anisotropicTextures: 0
24 | antiAliasing: 0
25 | softParticles: 0
26 | softVegetation: 0
27 | realtimeReflectionProbes: 0
28 | billboardsFaceCameraPosition: 0
29 | vSyncCount: 0
30 | lodBias: 0.3
31 | maximumLODLevel: 0
32 | streamingMipmapsActive: 0
33 | streamingMipmapsAddAllCameras: 1
34 | streamingMipmapsMemoryBudget: 512
35 | streamingMipmapsRenderersPerFrame: 512
36 | streamingMipmapsMaxLevelReduction: 2
37 | streamingMipmapsMaxFileIORequests: 1024
38 | particleRaycastBudget: 4
39 | asyncUploadTimeSlice: 2
40 | asyncUploadBufferSize: 16
41 | asyncUploadPersistentBuffer: 1
42 | resolutionScalingFixedDPIFactor: 1
43 | customRenderPipeline: {fileID: 0}
44 | excludedTargetPlatforms: []
45 | - serializedVersion: 2
46 | name: Low
47 | pixelLightCount: 0
48 | shadows: 0
49 | shadowResolution: 0
50 | shadowProjection: 1
51 | shadowCascades: 1
52 | shadowDistance: 20
53 | shadowNearPlaneOffset: 3
54 | shadowCascade2Split: 0.33333334
55 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
56 | shadowmaskMode: 0
57 | skinWeights: 2
58 | textureQuality: 0
59 | anisotropicTextures: 0
60 | antiAliasing: 0
61 | softParticles: 0
62 | softVegetation: 0
63 | realtimeReflectionProbes: 0
64 | billboardsFaceCameraPosition: 0
65 | vSyncCount: 0
66 | lodBias: 0.4
67 | maximumLODLevel: 0
68 | streamingMipmapsActive: 0
69 | streamingMipmapsAddAllCameras: 1
70 | streamingMipmapsMemoryBudget: 512
71 | streamingMipmapsRenderersPerFrame: 512
72 | streamingMipmapsMaxLevelReduction: 2
73 | streamingMipmapsMaxFileIORequests: 1024
74 | particleRaycastBudget: 16
75 | asyncUploadTimeSlice: 2
76 | asyncUploadBufferSize: 16
77 | asyncUploadPersistentBuffer: 1
78 | resolutionScalingFixedDPIFactor: 1
79 | customRenderPipeline: {fileID: 0}
80 | excludedTargetPlatforms: []
81 | - serializedVersion: 2
82 | name: Medium
83 | pixelLightCount: 1
84 | shadows: 1
85 | shadowResolution: 0
86 | shadowProjection: 1
87 | shadowCascades: 1
88 | shadowDistance: 20
89 | shadowNearPlaneOffset: 3
90 | shadowCascade2Split: 0.33333334
91 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
92 | shadowmaskMode: 0
93 | skinWeights: 2
94 | textureQuality: 0
95 | anisotropicTextures: 1
96 | antiAliasing: 0
97 | softParticles: 0
98 | softVegetation: 0
99 | realtimeReflectionProbes: 0
100 | billboardsFaceCameraPosition: 0
101 | vSyncCount: 1
102 | lodBias: 0.7
103 | maximumLODLevel: 0
104 | streamingMipmapsActive: 0
105 | streamingMipmapsAddAllCameras: 1
106 | streamingMipmapsMemoryBudget: 512
107 | streamingMipmapsRenderersPerFrame: 512
108 | streamingMipmapsMaxLevelReduction: 2
109 | streamingMipmapsMaxFileIORequests: 1024
110 | particleRaycastBudget: 64
111 | asyncUploadTimeSlice: 2
112 | asyncUploadBufferSize: 16
113 | asyncUploadPersistentBuffer: 1
114 | resolutionScalingFixedDPIFactor: 1
115 | customRenderPipeline: {fileID: 0}
116 | excludedTargetPlatforms: []
117 | - serializedVersion: 2
118 | name: High
119 | pixelLightCount: 2
120 | shadows: 2
121 | shadowResolution: 1
122 | shadowProjection: 1
123 | shadowCascades: 2
124 | shadowDistance: 40
125 | shadowNearPlaneOffset: 3
126 | shadowCascade2Split: 0.33333334
127 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
128 | shadowmaskMode: 1
129 | skinWeights: 2
130 | textureQuality: 0
131 | anisotropicTextures: 1
132 | antiAliasing: 0
133 | softParticles: 0
134 | softVegetation: 1
135 | realtimeReflectionProbes: 1
136 | billboardsFaceCameraPosition: 1
137 | vSyncCount: 1
138 | lodBias: 1
139 | maximumLODLevel: 0
140 | streamingMipmapsActive: 0
141 | streamingMipmapsAddAllCameras: 1
142 | streamingMipmapsMemoryBudget: 512
143 | streamingMipmapsRenderersPerFrame: 512
144 | streamingMipmapsMaxLevelReduction: 2
145 | streamingMipmapsMaxFileIORequests: 1024
146 | particleRaycastBudget: 256
147 | asyncUploadTimeSlice: 2
148 | asyncUploadBufferSize: 16
149 | asyncUploadPersistentBuffer: 1
150 | resolutionScalingFixedDPIFactor: 1
151 | customRenderPipeline: {fileID: 0}
152 | excludedTargetPlatforms: []
153 | - serializedVersion: 2
154 | name: Very High
155 | pixelLightCount: 3
156 | shadows: 2
157 | shadowResolution: 2
158 | shadowProjection: 1
159 | shadowCascades: 2
160 | shadowDistance: 70
161 | shadowNearPlaneOffset: 3
162 | shadowCascade2Split: 0.33333334
163 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
164 | shadowmaskMode: 1
165 | skinWeights: 4
166 | textureQuality: 0
167 | anisotropicTextures: 2
168 | antiAliasing: 2
169 | softParticles: 1
170 | softVegetation: 1
171 | realtimeReflectionProbes: 1
172 | billboardsFaceCameraPosition: 1
173 | vSyncCount: 1
174 | lodBias: 1.5
175 | maximumLODLevel: 0
176 | streamingMipmapsActive: 0
177 | streamingMipmapsAddAllCameras: 1
178 | streamingMipmapsMemoryBudget: 512
179 | streamingMipmapsRenderersPerFrame: 512
180 | streamingMipmapsMaxLevelReduction: 2
181 | streamingMipmapsMaxFileIORequests: 1024
182 | particleRaycastBudget: 1024
183 | asyncUploadTimeSlice: 2
184 | asyncUploadBufferSize: 16
185 | asyncUploadPersistentBuffer: 1
186 | resolutionScalingFixedDPIFactor: 1
187 | customRenderPipeline: {fileID: 0}
188 | excludedTargetPlatforms: []
189 | - serializedVersion: 2
190 | name: Ultra
191 | pixelLightCount: 4
192 | shadows: 2
193 | shadowResolution: 2
194 | shadowProjection: 1
195 | shadowCascades: 4
196 | shadowDistance: 150
197 | shadowNearPlaneOffset: 3
198 | shadowCascade2Split: 0.33333334
199 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
200 | shadowmaskMode: 1
201 | skinWeights: 255
202 | textureQuality: 0
203 | anisotropicTextures: 2
204 | antiAliasing: 2
205 | softParticles: 1
206 | softVegetation: 1
207 | realtimeReflectionProbes: 1
208 | billboardsFaceCameraPosition: 1
209 | vSyncCount: 1
210 | lodBias: 2
211 | maximumLODLevel: 0
212 | streamingMipmapsActive: 0
213 | streamingMipmapsAddAllCameras: 1
214 | streamingMipmapsMemoryBudget: 512
215 | streamingMipmapsRenderersPerFrame: 512
216 | streamingMipmapsMaxLevelReduction: 2
217 | streamingMipmapsMaxFileIORequests: 1024
218 | particleRaycastBudget: 4096
219 | asyncUploadTimeSlice: 2
220 | asyncUploadBufferSize: 16
221 | asyncUploadPersistentBuffer: 1
222 | resolutionScalingFixedDPIFactor: 1
223 | customRenderPipeline: {fileID: 0}
224 | excludedTargetPlatforms: []
225 | m_PerPlatformDefaultQuality:
226 | Android: 2
227 | CloudRendering: 5
228 | GameCoreScarlett: 5
229 | GameCoreXboxOne: 5
230 | Lumin: 5
231 | Nintendo Switch: 5
232 | PS4: 5
233 | PS5: 5
234 | Stadia: 5
235 | Standalone: 5
236 | WebGL: 3
237 | Windows Store Apps: 5
238 | XboxOne: 5
239 | iPhone: 2
240 | tvOS: 2
241 |
--------------------------------------------------------------------------------
/ProjectSettings/TagManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!78 &1
4 | TagManager:
5 | serializedVersion: 2
6 | tags: []
7 | layers:
8 | - Default
9 | - TransparentFX
10 | - Ignore Raycast
11 | -
12 | - Water
13 | - UI
14 | -
15 | -
16 | -
17 | -
18 | -
19 | -
20 | -
21 | -
22 | -
23 | -
24 | -
25 | -
26 | -
27 | -
28 | -
29 | -
30 | -
31 | -
32 | -
33 | -
34 | -
35 | -
36 | -
37 | -
38 | -
39 | -
40 | m_SortingLayers:
41 | - name: Default
42 | uniqueID: 0
43 | locked: 0
44 |
--------------------------------------------------------------------------------
/ProjectSettings/TimeManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!5 &1
4 | TimeManager:
5 | m_ObjectHideFlags: 0
6 | Fixed Timestep: 0.02
7 | Maximum Allowed Timestep: 0.33333334
8 | m_TimeScale: 1
9 | Maximum Particle Timestep: 0.03
10 |
--------------------------------------------------------------------------------
/ProjectSettings/UnityConnectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!310 &1
4 | UnityConnectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 1
7 | m_Enabled: 0
8 | m_TestMode: 0
9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com
12 | m_DashboardUrl: https://dashboard.unity3d.com
13 | m_TestInitMode: 0
14 | CrashReportingSettings:
15 | m_EventUrl: https://perf-events.cloud.unity3d.com
16 | m_Enabled: 0
17 | m_LogBufferSize: 10
18 | m_CaptureEditorExceptions: 1
19 | UnityPurchasingSettings:
20 | m_Enabled: 0
21 | m_TestMode: 0
22 | UnityAnalyticsSettings:
23 | m_Enabled: 0
24 | m_TestMode: 0
25 | m_InitializeOnStartup: 1
26 | UnityAdsSettings:
27 | m_Enabled: 0
28 | m_InitializeOnStartup: 1
29 | m_TestMode: 0
30 | m_IosGameId:
31 | m_AndroidGameId:
32 | m_GameIds: {}
33 | m_GameId:
34 | PerformanceReportingSettings:
35 | m_Enabled: 0
36 |
--------------------------------------------------------------------------------
/ProjectSettings/VFXManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!937362698 &1
4 | VFXManager:
5 | m_ObjectHideFlags: 0
6 | m_IndirectShader: {fileID: 0}
7 | m_CopyBufferShader: {fileID: 0}
8 | m_SortShader: {fileID: 0}
9 | m_StripUpdateShader: {fileID: 0}
10 | m_RenderPipeSettingsPath:
11 | m_FixedTimeStep: 0.016666668
12 | m_MaxDeltaTime: 0.05
13 | m_CompiledVersion: 0
14 | m_RuntimeVersion: 0
15 |
--------------------------------------------------------------------------------
/ProjectSettings/VersionControlSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!890905787 &1
4 | VersionControlSettings:
5 | m_ObjectHideFlags: 0
6 | m_Mode: Visible Meta Files
7 | m_CollabEditorSettings:
8 | inProgressEnabled: 1
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Unity-FFmpeg-ScreenRecorder
2 | ```
3 | https://github.com/shinn716/Unity-FFmpeg-ScreenRecorder.git?path=Assets/Packages/FFScreenAudioRecorder
4 | ```
5 |
6 |
7 |
8 |
9 | Need to set Audio input in first time.
10 |
11 |
12 | * FFAudioRecorder
13 | Capture microphone and system sound.
14 |
15 |
16 | * FFFrameRecorder
17 | Capture camera frames without audio.
18 |
19 |
20 | * FFMergeAV
21 | Merge Audio(mp3) and Video(mp4).
22 |
23 |
24 | * FFScreenRecorder
25 | FFmpeg Capture screen and audio (speaker and microphone)
26 | Right click on ```FFScreenRecorder``` component and click StartRecording, it will capture screen and audio both.
27 | Then click StopRecording, it will stop recording and export video to ```streamingassets/out```.
28 |
29 |
--------------------------------------------------------------------------------
/UserSettings/EditorUserSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!162 &1
4 | EditorUserSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 4
7 | m_ConfigSettings:
8 | vcSharedLogLevel:
9 | value: 0d5e400f0650
10 | flags: 0
11 | m_VCAutomaticAdd: 1
12 | m_VCDebugCom: 0
13 | m_VCDebugCmd: 0
14 | m_VCDebugOut: 0
15 | m_SemanticMergeMode: 2
16 | m_VCShowFailedCheckout: 1
17 | m_VCOverwriteFailedCheckoutAssets: 1
18 | m_VCProjectOverlayIcons: 1
19 | m_VCHierarchyOverlayIcons: 1
20 | m_VCOtherOverlayIcons: 1
21 | m_VCAllowAsyncUpdate: 1
22 |
--------------------------------------------------------------------------------
/img/img_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shinn716/Unity-FFmpeg-ScreenRecorder/d4982aea1f038b741178f1da0b5d41e07580f1d3/img/img_1.png
--------------------------------------------------------------------------------
/img/img_2-0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shinn716/Unity-FFmpeg-ScreenRecorder/d4982aea1f038b741178f1da0b5d41e07580f1d3/img/img_2-0.png
--------------------------------------------------------------------------------
/img/img_2-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shinn716/Unity-FFmpeg-ScreenRecorder/d4982aea1f038b741178f1da0b5d41e07580f1d3/img/img_2-1.png
--------------------------------------------------------------------------------
/img/img_2-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shinn716/Unity-FFmpeg-ScreenRecorder/d4982aea1f038b741178f1da0b5d41e07580f1d3/img/img_2-2.png
--------------------------------------------------------------------------------
/img/img_2-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shinn716/Unity-FFmpeg-ScreenRecorder/d4982aea1f038b741178f1da0b5d41e07580f1d3/img/img_2-3.png
--------------------------------------------------------------------------------
/img/img_2-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shinn716/Unity-FFmpeg-ScreenRecorder/d4982aea1f038b741178f1da0b5d41e07580f1d3/img/img_2-4.png
--------------------------------------------------------------------------------
/img/img_2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shinn716/Unity-FFmpeg-ScreenRecorder/d4982aea1f038b741178f1da0b5d41e07580f1d3/img/img_2.gif
--------------------------------------------------------------------------------
/img/img_3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shinn716/Unity-FFmpeg-ScreenRecorder/d4982aea1f038b741178f1da0b5d41e07580f1d3/img/img_3.jpg
--------------------------------------------------------------------------------