├── .gitattributes ├── .gitignore ├── AudioToAAC ├── AudioConfig.cs ├── AudioInfo.cs ├── AudioToAAC.csproj ├── AudioToAAC.sln ├── CommandHelper.cs ├── Form1.Designer.cs ├── Form1.cs ├── Form1.resx ├── ID3 │ ├── Collection.cs │ ├── Enumerations.cs │ ├── FileStreamEx.cs │ ├── Frames Classes │ │ ├── ArrayFrames.cs │ │ ├── BinaryFrame.cs │ │ ├── MediaPlayerFrames.cs │ │ ├── Other.cs │ │ ├── StreamFrames.cs │ │ └── TextFrame.cs │ ├── FramesInfo.cs │ ├── ID3Error.cs │ ├── ID3Info.cs │ ├── ID3v1.cs │ ├── ID3v2.cs │ ├── ID3v2Frames namespace.cs │ └── Main.cs ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── Tag.cs ├── app.config ├── backup.txt ├── packages.config └── packages │ ├── ID3.0.3.0 │ ├── .signature.p7s │ ├── ID3.0.3.0.nupkg │ └── lib │ │ ├── net40 │ │ └── Id3.dll │ │ ├── sl4-wp71 │ │ └── Id3.dll │ │ ├── sl40 │ │ └── Id3.dll │ │ └── winrt45 │ │ └── Id3.dll │ ├── ID3.Files.0.3.0 │ ├── .signature.p7s │ ├── ID3.Files.0.3.0.nupkg │ └── lib │ │ └── net40 │ │ └── Id3.Files.dll │ └── ID3.WinForms.0.3.0 │ ├── .signature.p7s │ ├── ID3.WinForms.0.3.0.nupkg │ └── lib │ └── net40 │ └── Id3.WinForms.dll ├── CommonLibrary ├── CommonLibrary.csproj ├── EnableDrag.cs ├── FileUtility.cs ├── MediaInfo.cs ├── OpenFolderDialog.cs ├── ProcessCmd.cs ├── Properties │ └── AssemblyInfo.cs ├── StringExtension.cs └── Win32.cs ├── Easyx264CoderGUI ├── 20131120094621866_easyicon_net_48.ico ├── ColorMatrix.cs ├── CommandLine │ ├── CommandHelper.cs │ ├── Eac3toCommand.cs │ ├── FFmpegCommand.cs │ ├── NvEncCommand.cs │ ├── QSVEncCommand.cs │ ├── X264Command.cs │ ├── X265Command.cs │ └── x264ArgsManager.cs ├── Config.cs ├── Easyx265CoderGUI.csproj ├── EncoderExcepetion.cs ├── EncoderTaskInfo.cs ├── EncoderTaskInfoForm.Designer.cs ├── EncoderTaskInfoForm.cs ├── EncoderTaskInfoForm.resx ├── FileConfig │ ├── AudioConfig.cs │ ├── DeepClone.cs │ ├── FileConfig.cs │ └── VedioConfig.cs ├── Form1.Designer.cs ├── Form1.cs ├── Form1.resx ├── MediaInfoExtension.cs ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ ├── Settings.settings │ └── app.manifest ├── Resource1.Designer.cs ├── Resource1.resx ├── Template │ └── avs │ │ └── 简单地图炮.txt ├── TextManager.cs ├── app.config └── config.xml ├── Easyx265CoderGUI.sln ├── FlvBugger ├── FlvBugger.csproj ├── Properties │ └── AssemblyInfo.cs ├── Utils │ └── FlvParser.cs └── flvbugger.cs ├── LosslessAviRgbConverter ├── AudioConfig.cs ├── ColorMatrix.cs ├── CommandHelper.cs ├── FileConfig.cs ├── FileUtility.cs ├── Form1.Designer.cs ├── Form1.cs ├── Form1.resx ├── LosslessAviRgbConverter.csproj ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── Resource1.Designer.cs ├── Resource1.resx └── VedioConfig.cs ├── README.md ├── TestConsole ├── App.config ├── Program.cs ├── Properties │ └── AssemblyInfo.cs └── TestConsole.csproj ├── ToolSet ├── CommandLine │ ├── Eac3toCommand.cs │ ├── MkvMergeCommand.cs │ ├── Mp4boxCommand.cs │ └── ffmpegCommand.cs ├── Form1.Designer.cs ├── Form1.cs ├── Form1.resx ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── TextChangedEventArgs.cs ├── TextboxFile.Designer.cs ├── TextboxFile.cs ├── TextboxFile.resx ├── ToolSet.csproj └── app.config └── 添加到任务列表逻辑代码图.dgml /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.sln.docstates 8 | .vs 9 | 10 | # Build results 11 | [Dd]ebug/ 12 | [Dd]ebugPublic/ 13 | [Rr]elease/ 14 | x64/ 15 | build/ 16 | bld/ 17 | [Bb]in/ 18 | [Oo]bj/ 19 | 20 | # Roslyn cache directories 21 | *.ide/ 22 | 23 | # MSTest test Results 24 | [Tt]est[Rr]esult*/ 25 | [Bb]uild[Ll]og.* 26 | 27 | #NUNIT 28 | *.VisualState.xml 29 | TestResult.xml 30 | 31 | # Build Results of an ATL Project 32 | [Dd]ebugPS/ 33 | [Rr]eleasePS/ 34 | dlldata.c 35 | 36 | *_i.c 37 | *_p.c 38 | *_i.h 39 | *.ilk 40 | *.meta 41 | *.obj 42 | *.pch 43 | *.pdb 44 | *.pgc 45 | *.pgd 46 | *.rsp 47 | *.sbr 48 | *.tlb 49 | *.tli 50 | *.tlh 51 | *.tmp 52 | *.tmp_proj 53 | *.log 54 | *.vspscc 55 | *.vssscc 56 | .builds 57 | *.pidb 58 | *.svclog 59 | *.scc 60 | 61 | # Chutzpah Test files 62 | _Chutzpah* 63 | 64 | # Visual C++ cache files 65 | ipch/ 66 | *.aps 67 | *.ncb 68 | *.opensdf 69 | *.sdf 70 | *.cachefile 71 | 72 | # Visual Studio profiler 73 | *.psess 74 | *.vsp 75 | *.vspx 76 | 77 | # TFS 2012 Local Workspace 78 | $tf/ 79 | 80 | # Guidance Automation Toolkit 81 | *.gpState 82 | 83 | # ReSharper is a .NET coding add-in 84 | _ReSharper*/ 85 | *.[Rr]e[Ss]harper 86 | *.DotSettings.user 87 | 88 | # JustCode is a .NET coding addin-in 89 | .JustCode 90 | 91 | # TeamCity is a build add-in 92 | _TeamCity* 93 | 94 | # DotCover is a Code Coverage Tool 95 | *.dotCover 96 | 97 | # NCrunch 98 | _NCrunch_* 99 | .*crunch*.local.xml 100 | 101 | # MightyMoose 102 | *.mm.* 103 | AutoTest.Net/ 104 | 105 | # Web workbench (sass) 106 | .sass-cache/ 107 | 108 | # Installshield output folder 109 | [Ee]xpress/ 110 | 111 | # DocProject is a documentation generator add-in 112 | DocProject/buildhelp/ 113 | DocProject/Help/*.HxT 114 | DocProject/Help/*.HxC 115 | DocProject/Help/*.hhc 116 | DocProject/Help/*.hhk 117 | DocProject/Help/*.hhp 118 | DocProject/Help/Html2 119 | DocProject/Help/html 120 | 121 | # Click-Once directory 122 | publish/ 123 | 124 | # Publish Web Output 125 | *.[Pp]ublish.xml 126 | *.azurePubxml 127 | ## TODO: Comment the next line if you want to checkin your 128 | ## web deploy settings but do note that will include unencrypted 129 | ## passwords 130 | #*.pubxml 131 | 132 | # NuGet Packages Directory 133 | packages/* 134 | ## TODO: If the tool you use requires repositories.config 135 | ## uncomment the next line 136 | #!packages/repositories.config 137 | 138 | # Enable "build/" folder in the NuGet Packages folder since 139 | # NuGet packages use it for MSBuild targets. 140 | # This line needs to be after the ignore of the build folder 141 | # (and the packages folder if the line above has been uncommented) 142 | !packages/build/ 143 | 144 | # Windows Azure Build Output 145 | csx/ 146 | *.build.csdef 147 | 148 | # Windows Store app package directory 149 | AppPackages/ 150 | 151 | # Others 152 | sql/ 153 | *.Cache 154 | ClientBin/ 155 | [Ss]tyle[Cc]op.* 156 | ~$* 157 | *~ 158 | *.dbmdl 159 | *.dbproj.schemaview 160 | *.pfx 161 | *.publishsettings 162 | node_modules/ 163 | 164 | # RIA/Silverlight projects 165 | Generated_Code/ 166 | 167 | # Backup & report files from converting an old project file 168 | # to a newer Visual Studio version. Backup files are not needed, 169 | # because we have git ;-) 170 | _UpgradeReport_Files/ 171 | Backup*/ 172 | UpgradeLog*.XML 173 | UpgradeLog*.htm 174 | 175 | # SQL Server files 176 | *.mdf 177 | *.ldf 178 | 179 | # Business Intelligence projects 180 | *.rdl.data 181 | *.bim.layout 182 | *.bim_*.settings 183 | 184 | # Microsoft Fakes 185 | FakesAssemblies/ 186 | 187 | # LightSwitch generated files 188 | GeneratedArtifacts/ 189 | _Pvt_Extensions/ 190 | ModelManifest.xml 191 | /.vs/Easyx265CoderGUI/v15/Server/sqlite3/storage.ide-wal 192 | /.vs/Easyx265CoderGUI/v15/Server/sqlite3/storage.ide-shm 193 | /.vs/Easyx265CoderGUI/v15/Server/sqlite3/storage.ide 194 | /.vs/Easyx265CoderGUI/v15/Server/sqlite3/db.lock 195 | /.vs/Easyx265CoderGUI/v15/sqlite3/storage.ide -------------------------------------------------------------------------------- /AudioToAAC/AudioConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace AudioToAAC 7 | { 8 | [Serializable] 9 | public class AudioConfig 10 | { 11 | public string Input; 12 | public string Output; 13 | public int Channel = 0; 14 | public bool UseEac3to = false; 15 | public bool Enabled = true; 16 | public float Quality = 0.65f; 17 | public int Tracker = 2; 18 | public AudioEncoder Encoder = AudioEncoder.aac; 19 | public string CommandLineArgs = ""; 20 | } 21 | 22 | public enum AudioEncoder 23 | { 24 | aac, 25 | opus, 26 | flac 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /AudioToAAC/AudioInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace AudioToAAC 7 | { 8 | public class AudioInfo 9 | { 10 | public AudioInfo() 11 | { } 12 | public AudioInfo(string fullname) 13 | { 14 | FullName = fullname; 15 | } 16 | public AudioInfo(string fullname, string dirpath) 17 | { 18 | FullName = fullname; 19 | DirPath = dirpath; 20 | } 21 | 22 | public string FullName { set; get; } 23 | public string DirPath { set; get; } 24 | 25 | public AudioEncoder Encoder = AudioEncoder.aac; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /AudioToAAC/AudioToAAC.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {19A73F4F-D526-460B-89C7-855D2005432B} 8 | WinExe 9 | Properties 10 | AudioToAAC 11 | 批量音频转码 12 | v4.5.1 13 | 512 14 | 15 | 16 | 17 | 18 | AnyCPU 19 | true 20 | full 21 | false 22 | F:\Easyx265Gui\ 23 | DEBUG;TRACE 24 | prompt 25 | 4 26 | 27 | 28 | AnyCPU 29 | pdbonly 30 | true 31 | F:\Easyx265Gui\ 32 | TRACE 33 | prompt 34 | 4 35 | 36 | 37 | 38 | ..\packages\ID3.0.3.0\lib\net40\Id3.dll 39 | 40 | 41 | ..\packages\ID3.Files.0.3.0\lib\net40\Id3.Files.dll 42 | 43 | 44 | ..\packages\ID3.WinForms.0.3.0\lib\net40\Id3.WinForms.dll 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | Form 63 | 64 | 65 | Form1.cs 66 | 67 | 68 | 69 | 70 | 71 | Form1.cs 72 | 73 | 74 | ResXFileCodeGenerator 75 | Resources.Designer.cs 76 | Designer 77 | 78 | 79 | True 80 | Resources.resx 81 | True 82 | 83 | 84 | 85 | 86 | SettingsSingleFileGenerator 87 | Settings.Designer.cs 88 | 89 | 90 | True 91 | Settings.settings 92 | True 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | {ed4fd018-9180-40d3-8fde-fb191c99ae17} 101 | CommonLibrary 102 | 103 | 104 | 105 | 112 | -------------------------------------------------------------------------------- /AudioToAAC/AudioToAAC.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.29102.190 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AudioToAAC", "AudioToAAC.csproj", "{19A73F4F-D526-460B-89C7-855D2005432B}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {19A73F4F-D526-460B-89C7-855D2005432B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {19A73F4F-D526-460B-89C7-855D2005432B}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {19A73F4F-D526-460B-89C7-855D2005432B}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {19A73F4F-D526-460B-89C7-855D2005432B}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {68B8D7A4-8965-4AEE-B226-3026670BBCB3} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /AudioToAAC/CommandHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.IO; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Windows.Forms; 8 | using CommonLibrary; 9 | 10 | namespace AudioToAAC 11 | { 12 | public class CommandHelper 13 | { 14 | public static void RunFFmpegToOpus(AudioConfig audioConfig) 15 | { 16 | string tmp = Path.GetTempPath(); 17 | 18 | string bat = getAudioOpus(audioConfig); 19 | ProcessCmd.RunBat(bat, tmp); 20 | } 21 | 22 | public static string getAudioOpus(AudioConfig audioconfig) 23 | { 24 | string ffmpegfile = ""; 25 | 26 | ffmpegfile = Path.Combine(Application.StartupPath, "tools\\ffmpeg.exe"); 27 | 28 | 29 | var audioargs = audioconfig.CommandLineArgs; 30 | if (audioargs.Contains("mixlfe")) 31 | { 32 | audioargs = ""; 33 | } 34 | int bitrat = 0; 35 | if (audioconfig.Quality != 0) 36 | { 37 | if (audioconfig.Quality < 20) 38 | { 39 | bitrat = (int)(audioconfig.Quality * 500); 40 | } 41 | else 42 | { 43 | bitrat = (int)audioconfig.Quality; 44 | } 45 | audioargs += " -ab " + bitrat.ToString(); 46 | } 47 | string neroAacEncfile = Path.Combine(Application.StartupPath, "tools\\opusenc"); 48 | return $"{ffmpegfile.Maohao()} -i {audioconfig.Input.Maohao()} {audioargs} -f wav pipe:| {neroAacEncfile.Maohao()} --quiet --ignorelength --vbr --bitrate {bitrat} - {audioconfig.Output.Maohao()}"; 49 | //return $"{ffmpegfile.Maohao()} -i {input.Maohao()} {audioargs} -c:a libopus -vn -vbr on { output.Maohao()}"; 50 | } 51 | 52 | public static void RunFFmpegToAAC(AudioConfig audioConfig) 53 | { 54 | string bat = getAudiobat(audioConfig); 55 | 56 | 57 | ProcessCmd.RunBat(bat, Path.GetTempPath()); 58 | } 59 | 60 | private static string getAudiobat(AudioConfig audioconfig) 61 | { 62 | string ffmpegfile = Path.Combine(Application.StartupPath, "tools\\ffmpeg.exe"); 63 | var audioargs = audioconfig.CommandLineArgs; 64 | if (audioconfig.Channel > 0) 65 | { 66 | audioargs += "-ac " + audioconfig.Channel.ToString(); 67 | } 68 | string neroAacEncfile = Path.Combine(Application.StartupPath, "tools\\neroAacEnc.exe"); 69 | return string.Format("tools\\ffmpeg.exe -vn -i \"{0}\" {3} -f wav pipe:| tools\\neroAacEnc -ignorelength -q {2} -lc -if - -of \"{1}\"", 70 | audioconfig.Input, audioconfig.Output, audioconfig.Quality, audioargs); 71 | } 72 | 73 | 74 | public static void RunFFmpegToFlac(AudioConfig audioconfig) 75 | { 76 | ProcessStartInfo processinfo = new ProcessStartInfo(); 77 | string bat = getAudioFlacBat(audioconfig.Input, audioconfig.Output, audioconfig); 78 | ProcessCmd.RunBat(bat, Path.GetTempPath()); 79 | } 80 | 81 | private static string getAudioFlacBat(string input, string output, AudioConfig audioconfig) 82 | { 83 | string ffmpegfile = Path.Combine(Application.StartupPath, "tools\\ffmpeg.exe"); 84 | return $"{ffmpegfile.Maohao()} -i {input.Maohao()} -c:a flac -compression_level 9 {output.Maohao()}"; 85 | //return $"{ffmpegfile.Maohao()} -i {input.Maohao()} {audioargs} -c:a libopus -vn -vbr on { output.Maohao()}"; 86 | } 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /AudioToAAC/Form1.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 17, 17 122 | 123 | 124 | 137, 17 125 | 126 | 127 | 258, 17 128 | 129 | 130 | 46 131 | 132 | -------------------------------------------------------------------------------- /AudioToAAC/ID3/Collection.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections; 4 | using System.Text; 5 | using System.ComponentModel; 6 | 7 | namespace ID3.ID3v2Frames 8 | { 9 | public class FilterCollection 10 | { 11 | private ArrayList _Frames; 12 | 13 | internal FilterCollection() 14 | { 15 | _Frames = new ArrayList(); 16 | } 17 | 18 | /// 19 | /// Add FrameID to FrameList if not exists 20 | /// 21 | /// FrameID to add to list 22 | public void Add(string FrameID) 23 | { 24 | if (!_Frames.Contains(FrameID)) 25 | _Frames.Add(FrameID); 26 | } 27 | 28 | /// 29 | /// Remove Specific frame from list 30 | /// 31 | /// FrameID to remove from list 32 | public void Remove(string FrameID) 33 | { 34 | _Frames.Remove(FrameID); 35 | } 36 | 37 | /// 38 | /// Get list of frames 39 | /// 40 | public string[] Frames 41 | { 42 | get 43 | { return (string[])_Frames.ToArray(typeof(string)); } 44 | } 45 | 46 | /// 47 | /// Remove all frames from frame list 48 | /// 49 | public void Clear() 50 | { 51 | _Frames.Clear(); 52 | } 53 | 54 | /// 55 | /// Indicate is specific frame in the list 56 | /// 57 | /// FrameID to search 58 | /// true if exists false if not 59 | public bool IsExists(string FrameID) 60 | { 61 | if (_Frames.Contains(FrameID)) 62 | return true; 63 | else 64 | return false; 65 | } 66 | } 67 | 68 | public class FramesCollection 69 | { 70 | private ArrayList _Items; // Store All Data 71 | 72 | /// 73 | /// New Frames Collection 74 | /// 75 | internal FramesCollection() 76 | { 77 | _Items = new ArrayList(); 78 | } 79 | 80 | /// 81 | /// Add new item to list 82 | /// 83 | /// 84 | public void Add(T item) 85 | { 86 | // Remove Item if Exists 87 | _Items.Remove(item); 88 | 89 | _Items.Add(item); 90 | } 91 | 92 | /// 93 | /// Remove Specific Item from list 94 | /// 95 | /// Item to remove 96 | public void Remove(T item) 97 | { 98 | _Items.Remove(item); 99 | } 100 | 101 | /// 102 | /// Remove at specific position 103 | /// 104 | /// 105 | public void RemoveAt(int index) 106 | { 107 | _Items.RemoveAt(index); 108 | } 109 | 110 | /// 111 | /// Clear all 112 | /// 113 | public void Clear() 114 | { 115 | _Items.Clear(); 116 | } 117 | 118 | /// 119 | /// Array of items 120 | /// 121 | public T[] Items 122 | { 123 | get 124 | { return (T[])_Items.ToArray(typeof(T)); } 125 | } 126 | 127 | /// 128 | /// Get sum of lengths of items 129 | /// 130 | public int Length 131 | { 132 | get 133 | { 134 | int Len = 0; 135 | foreach (ILengthable IL in _Items) 136 | Len += IL.Length; 137 | return Len; 138 | } 139 | } 140 | 141 | /// 142 | /// Sort Items 143 | /// 144 | public void Sort() 145 | { 146 | _Items.Sort(); 147 | } 148 | 149 | /// 150 | /// Counts items of current FramesCollection 151 | /// 152 | public int Count 153 | { 154 | get 155 | { return _Items.Count; } 156 | } 157 | 158 | public IEnumerator GetEnumerator() 159 | { 160 | return _Items.GetEnumerator(); 161 | } 162 | } 163 | } 164 | -------------------------------------------------------------------------------- /AudioToAAC/ID3/Enumerations.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace ID3 6 | { 7 | /// 8 | /// Provide TextEncoding for frames that support it. 9 | /// 10 | public enum TextEncodings 11 | { 12 | Ascii = 0, 13 | UTF_16 = 1, 14 | UTF_16BE = 2, 15 | UTF8 = 3 16 | } 17 | 18 | /// 19 | /// Provide frame flags for all frames 20 | /// 21 | [Flags] 22 | public enum FrameFlags 23 | { 24 | TagAlterPreservation = 0x8000, 25 | FileAlterPreservation = 0x4000, 26 | ReadOnly = 0x2000, 27 | Compression = 0x0080, 28 | Encryption = 0x0040, 29 | GroupingIdentity = 0x0020 30 | } 31 | 32 | public enum TimeStamps 33 | { 34 | MpegFrame = 1, 35 | Milliseconds 36 | } 37 | 38 | public enum IncrementDecrement 39 | { 40 | Dcrement = 0, 41 | Increment 42 | } 43 | 44 | [Flags] 45 | public enum ID3v2Flags 46 | { 47 | Unsynchronisation = 128, 48 | ExtendedHeader = 64, 49 | Expremential = 32 50 | } 51 | 52 | public enum FilterTypes 53 | { 54 | NoFilter = 0, 55 | LoadFiltersOnly = 1, 56 | NotLoadFilters = 2 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /AudioToAAC/ID3/Frames Classes/MediaPlayerFrames.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | /* 6 | 7 | */ 8 | namespace ID3.ID3v2Frames.MediaPlayerFrames 9 | { 10 | class MediaPlayerFrames 11 | { 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /AudioToAAC/ID3/ID3Error.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections; 4 | using System.Text; 5 | 6 | namespace ID3 7 | { 8 | public class ID3Error 9 | { 10 | private string _Message; 11 | private string _FrameID; 12 | 13 | /// 14 | /// Create new ID3Error 15 | /// 16 | /// Error number according to Standard 17 | /// Version of ID3 18 | /// FrameID that error occured in 19 | /// Message of error 20 | /// Error level 21 | internal ID3Error(string Message, string FrameID) 22 | { 23 | this.FrameID = FrameID; 24 | _Message = Message; 25 | } 26 | 27 | /// 28 | /// Get message of error that occured 29 | /// 30 | public string Message 31 | { get { return _Message; } } 32 | 33 | /// 34 | /// Get FrameID that error occured in 35 | /// 36 | public string FrameID 37 | { 38 | get { return _FrameID; } 39 | private set 40 | { 41 | if (value == null) 42 | _FrameID = ""; 43 | else 44 | _FrameID = value; 45 | } 46 | } 47 | } 48 | 49 | /// 50 | /// Static class contain error occured 51 | /// 52 | public class ErrorCollection : IEnumerator 53 | { 54 | private ArrayList _Errors; 55 | int _Index = -1; 56 | 57 | public ErrorCollection() 58 | { 59 | _Errors = new ArrayList(); 60 | } 61 | 62 | internal void Add(ID3Error item) 63 | { _Errors.Add(item); } 64 | 65 | /// 66 | /// Get list of Errors 67 | /// 68 | public ID3Error[] List 69 | { 70 | get 71 | { return (ID3Error[])_Errors.ToArray(typeof(ID3Error)); } 72 | } 73 | 74 | /// 75 | /// Get number of errors that occured 76 | /// 77 | public int Count 78 | { 79 | get 80 | { return _Errors.Count; } 81 | } 82 | 83 | /// 84 | /// Clear list of errors 85 | /// 86 | public void Clear() 87 | { _Errors.Clear(); } 88 | 89 | public IEnumerator GetEnumerator() 90 | { 91 | return this; 92 | } 93 | 94 | #region IEnumerator Members 95 | 96 | public object Current 97 | { 98 | get { return _Errors[_Index]; } 99 | } 100 | 101 | public bool MoveNext() 102 | { 103 | _Index++; 104 | if (_Index < _Errors.Count) 105 | return true; 106 | else 107 | { 108 | Reset(); 109 | return false; 110 | } 111 | } 112 | 113 | public void Reset() 114 | { 115 | _Index = -1; 116 | } 117 | 118 | #endregion 119 | } 120 | } 121 | -------------------------------------------------------------------------------- /AudioToAAC/ID3/ID3Info.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.IO; 5 | using ID3.ID3v1Frame; 6 | 7 | namespace ID3 8 | { 9 | /// 10 | /// Provide ID3 Information for a file 11 | /// 12 | public class ID3Info 13 | { 14 | private ID3v1 _ID3v1; 15 | private ID3v2 _ID3v2; 16 | 17 | /// 18 | /// Create new ID3 Info class 19 | /// 20 | /// FileAddress for read ID3 info 21 | /// Indicate load data in constructor or not 22 | public ID3Info(string FilePath, bool LoadData) 23 | { 24 | _ID3v1 = new ID3v1(FilePath, LoadData); 25 | _ID3v2 = new ID3v2(FilePath, LoadData); 26 | } 27 | 28 | /// 29 | /// Get ID3 version 2 Tags 30 | /// 31 | public ID3v2 ID3v2Info 32 | { 33 | get 34 | { return _ID3v2; } 35 | } 36 | 37 | /// 38 | /// Gets ID3 version Tag 39 | /// 40 | public ID3v1 ID3v1Info 41 | { 42 | get 43 | { return _ID3v1; } 44 | } 45 | 46 | /// 47 | /// Load both ID3v1 and ID3v2 information from file 48 | /// 49 | public void Load() 50 | { 51 | _ID3v2.Load(); 52 | _ID3v1.Load(); 53 | } 54 | 55 | /// 56 | /// Save both ID3v2 and ID3v1 57 | /// 58 | public void Save() 59 | { 60 | _ID3v2.Save(); 61 | _ID3v1.Save(); 62 | } 63 | 64 | /// 65 | /// Save both ID3v2 and ID3v1 66 | /// 67 | /// minor version of ID3v2 to save 68 | /// Rename Formula 69 | public void Save(int ID3v2Version, string RenameFormula) 70 | { 71 | _ID3v1.Save(); 72 | _ID3v2.Save(ID3v2Version, RenameFormula); 73 | _ID3v1.FilePath = _ID3v2.FilePath; 74 | } 75 | 76 | /// 77 | /// Save both ID3v2 and ID3v1 78 | /// 79 | /// minor version of ID3v2 80 | public void Save(int ID3v2Version) 81 | { 82 | _ID3v1.Save(); 83 | _ID3v2.Save(ID3v2Version); 84 | } 85 | 86 | public void AttachAnotherFile(string filepath) 87 | { 88 | _ID3v1.FilePath = filepath; 89 | _ID3v2.AttachAnotherFile(filepath); 90 | } 91 | 92 | /// 93 | /// Get FilePath current ID3Info 94 | /// 95 | public string FilePath 96 | { 97 | get 98 | { return _ID3v1.FilePath; } 99 | } 100 | 101 | /// 102 | /// Get FileName of current ID3Info file 103 | /// 104 | public string FileName 105 | { 106 | get 107 | { return _ID3v1.FileName; } 108 | } 109 | 110 | public override bool Equals(object obj) 111 | { 112 | if (obj.GetType() != this.GetType()) 113 | return false; 114 | 115 | if (this.FilePath == ((ID3Info)obj).FilePath) 116 | return true; 117 | else 118 | return false; 119 | } 120 | 121 | public override int GetHashCode() 122 | { 123 | return base.GetHashCode(); 124 | } 125 | } 126 | } 127 | -------------------------------------------------------------------------------- /AudioToAAC/ID3/ID3v2Frames namespace.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gxrsprite/EasyX265EncoderGui/96d106c21f8679aa534f8722c6d45ffacfced7cd/AudioToAAC/ID3/ID3v2Frames namespace.cs -------------------------------------------------------------------------------- /AudioToAAC/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Windows.Forms; 5 | 6 | namespace AudioToAAC 7 | { 8 | static class Program 9 | { 10 | /// 11 | /// 应用程序的主入口点。 12 | /// 13 | [STAThread] 14 | static void Main() 15 | { 16 | Application.EnableVisualStyles(); 17 | Application.SetCompatibleTextRenderingDefault(false); 18 | Application.Run(new Form1()); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /AudioToAAC/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // 有关程序集的常规信息通过以下 6 | // 特性集控制。更改这些特性值可修改 7 | // 与程序集关联的信息。 8 | [assembly: AssemblyTitle("AudioToAAC")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("AudioToAAC")] 13 | [assembly: AssemblyCopyright("Copyright © 2013")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // 将 ComVisible 设置为 false 使此程序集中的类型 18 | // 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, 19 | // 则将该类型上的 ComVisible 特性设置为 true。 20 | [assembly: ComVisible(false)] 21 | 22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 23 | [assembly: Guid("d017de9e-aec7-4d15-9fc5-cc806c3e4b0f")] 24 | 25 | // 程序集的版本信息由下面四个值组成: 26 | // 27 | // 主版本 28 | // 次版本 29 | // 生成号 30 | // 修订号 31 | // 32 | // 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, 33 | // 方法是按如下所示使用“*”: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /AudioToAAC/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace AudioToAAC.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AudioToAAC.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /AudioToAAC/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /AudioToAAC/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace AudioToAAC.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /AudioToAAC/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /AudioToAAC/Tag.cs: -------------------------------------------------------------------------------- 1 | using Id3; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Diagnostics; 5 | using System.IO; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Text.RegularExpressions; 9 | using System.Windows.Forms; 10 | 11 | namespace AudioToAAC 12 | { 13 | public class TagConsole 14 | { 15 | public static void ReadTagToID3(Id3Tag id3, string filename) 16 | { 17 | ProcessStartInfo processinfo = new ProcessStartInfo(); 18 | string tagfile = Path.Combine(Application.StartupPath, "tools\\tag.exe"); 19 | processinfo.FileName = tagfile; 20 | processinfo.Arguments = "\"" + filename + "\" --stdout"; 21 | processinfo.UseShellExecute = false; //输出信息重定向 22 | processinfo.CreateNoWindow = true; 23 | processinfo.RedirectStandardInput = true; 24 | processinfo.RedirectStandardOutput = true; 25 | processinfo.RedirectStandardError = false; 26 | processinfo.WindowStyle = ProcessWindowStyle.Hidden; 27 | Process tag = new Process(); 28 | tag.StartInfo = processinfo; 29 | tag.Start(); 30 | 31 | var result = tag.StandardOutput.ReadToEnd(); 32 | 33 | id3.Title.Value = GetValueByText(result, "Title"); 34 | id3.Artists.Value = GetValueByText(result, "Artist"); 35 | id3.Track.Value = GetValueByText(result, "Track"); 36 | id3.Genre.Value = GetValueByText(result, "Genre"); 37 | id3.Year.Value = GetValueByText(result, "Year"); 38 | Id3.Frames.CommentFrame c = new Id3.Frames.CommentFrame(); 39 | c.Comment = GetValueByText(result, "Comment"); 40 | id3.Comments.Add(c); 41 | 42 | } 43 | 44 | public static string GetValueByText(string text, string key) 45 | { 46 | return Regex.Match(text, string.Format(@"{0}:\s*(?<{0}>.*?)\r", key)).Groups[key].Value; 47 | } 48 | 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /AudioToAAC/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /AudioToAAC/backup.txt: -------------------------------------------------------------------------------- 1 |  AudioInfo info = item.Tag as AudioInfo; 2 | string bat = getbat(info.FullName, ""); 3 | ProcessStartInfo processinfo = new ProcessStartInfo(); 4 | processinfo.FileName = "ffmpeg";//Environment.GetEnvironmentVariable("ComSpec"); 5 | processinfo.Arguments = ffmpegArg(info.FullName); 6 | processinfo.UseShellExecute = false; //输出信息重定向 7 | //processinfo.CreateNoWindow = true; 8 | processinfo.RedirectStandardInput = true; 9 | processinfo.RedirectStandardOutput = true; 10 | processinfo.RedirectStandardError = true; 11 | Process ffmpeg = new Process(); 12 | ffmpeg.StartInfo = processinfo; 13 | ffmpeg.Start(); 14 | processinfo.FileName = "neroAacEnc"; 15 | processinfo.Arguments = neroaacArg( 16 | Path.GetFileNameWithoutExtension(info.FullName) + ".m4a"); 17 | Process neroaac = new Process(); 18 | neroaac.StartInfo = processinfo; 19 | neroaac.Start(); 20 | 21 | { 22 | char[] buffer = new char[10000]; 23 | int bytecount = ffmpeg.StandardOutput.ReadBlock(buffer, 0, 10000); 24 | neroaac.StandardInput.Write(buffer, 0, bytecount); 25 | } while ((!ffmpeg.StandardOutput.EndOfStream)) 26 | ffmpeg.WaitForExit(); //等待进程结束 27 | neroaac.WaitForExit(); 28 | 29 | private string ffmpegArg(string input) 30 | { 31 | return string.Format(" -i \"{0}\" -f wav ", 32 | input); 33 | } 34 | 35 | private string neroaacArg(string output) 36 | { 37 | return string.Format(" -ignorelength -q {2} -lc -if - -of \"{1}\" ", 38 | output); 39 | } 40 | 41 | ID3Info id3 = new ID3Info(info.FullName, true); 42 | if (id3.ID3v1Info.HaveTag || id3.ID3v2Info.HaveTag) 43 | { 44 | id3.AttachAnotherFile(output); 45 | id3.Save(); 46 | } 47 | else 48 | { 49 | id3.AttachAnotherFile(output); 50 | TagConsole.ReadTagToID3(id3, info.FullName); 51 | id3.Save(); 52 | } -------------------------------------------------------------------------------- /AudioToAAC/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /AudioToAAC/packages/ID3.0.3.0/.signature.p7s: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gxrsprite/EasyX265EncoderGui/96d106c21f8679aa534f8722c6d45ffacfced7cd/AudioToAAC/packages/ID3.0.3.0/.signature.p7s -------------------------------------------------------------------------------- /AudioToAAC/packages/ID3.0.3.0/ID3.0.3.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gxrsprite/EasyX265EncoderGui/96d106c21f8679aa534f8722c6d45ffacfced7cd/AudioToAAC/packages/ID3.0.3.0/ID3.0.3.0.nupkg -------------------------------------------------------------------------------- /AudioToAAC/packages/ID3.0.3.0/lib/net40/Id3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gxrsprite/EasyX265EncoderGui/96d106c21f8679aa534f8722c6d45ffacfced7cd/AudioToAAC/packages/ID3.0.3.0/lib/net40/Id3.dll -------------------------------------------------------------------------------- /AudioToAAC/packages/ID3.0.3.0/lib/sl4-wp71/Id3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gxrsprite/EasyX265EncoderGui/96d106c21f8679aa534f8722c6d45ffacfced7cd/AudioToAAC/packages/ID3.0.3.0/lib/sl4-wp71/Id3.dll -------------------------------------------------------------------------------- /AudioToAAC/packages/ID3.0.3.0/lib/sl40/Id3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gxrsprite/EasyX265EncoderGui/96d106c21f8679aa534f8722c6d45ffacfced7cd/AudioToAAC/packages/ID3.0.3.0/lib/sl40/Id3.dll -------------------------------------------------------------------------------- /AudioToAAC/packages/ID3.0.3.0/lib/winrt45/Id3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gxrsprite/EasyX265EncoderGui/96d106c21f8679aa534f8722c6d45ffacfced7cd/AudioToAAC/packages/ID3.0.3.0/lib/winrt45/Id3.dll -------------------------------------------------------------------------------- /AudioToAAC/packages/ID3.Files.0.3.0/.signature.p7s: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gxrsprite/EasyX265EncoderGui/96d106c21f8679aa534f8722c6d45ffacfced7cd/AudioToAAC/packages/ID3.Files.0.3.0/.signature.p7s -------------------------------------------------------------------------------- /AudioToAAC/packages/ID3.Files.0.3.0/ID3.Files.0.3.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gxrsprite/EasyX265EncoderGui/96d106c21f8679aa534f8722c6d45ffacfced7cd/AudioToAAC/packages/ID3.Files.0.3.0/ID3.Files.0.3.0.nupkg -------------------------------------------------------------------------------- /AudioToAAC/packages/ID3.Files.0.3.0/lib/net40/Id3.Files.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gxrsprite/EasyX265EncoderGui/96d106c21f8679aa534f8722c6d45ffacfced7cd/AudioToAAC/packages/ID3.Files.0.3.0/lib/net40/Id3.Files.dll -------------------------------------------------------------------------------- /AudioToAAC/packages/ID3.WinForms.0.3.0/.signature.p7s: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gxrsprite/EasyX265EncoderGui/96d106c21f8679aa534f8722c6d45ffacfced7cd/AudioToAAC/packages/ID3.WinForms.0.3.0/.signature.p7s -------------------------------------------------------------------------------- /AudioToAAC/packages/ID3.WinForms.0.3.0/ID3.WinForms.0.3.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gxrsprite/EasyX265EncoderGui/96d106c21f8679aa534f8722c6d45ffacfced7cd/AudioToAAC/packages/ID3.WinForms.0.3.0/ID3.WinForms.0.3.0.nupkg -------------------------------------------------------------------------------- /AudioToAAC/packages/ID3.WinForms.0.3.0/lib/net40/Id3.WinForms.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gxrsprite/EasyX265EncoderGui/96d106c21f8679aa534f8722c6d45ffacfced7cd/AudioToAAC/packages/ID3.WinForms.0.3.0/lib/net40/Id3.WinForms.dll -------------------------------------------------------------------------------- /CommonLibrary/CommonLibrary.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {ED4FD018-9180-40D3-8FDE-FB191C99AE17} 8 | Library 9 | Properties 10 | CommonLibrary 11 | CommonLibrary 12 | v4.5.1 13 | 512 14 | 15 | 16 | true 17 | full 18 | false 19 | bin\Debug\ 20 | DEBUG;TRACE 21 | prompt 22 | 4 23 | 24 | 25 | pdbonly 26 | true 27 | bin\Release\ 28 | TRACE 29 | prompt 30 | 4 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 61 | -------------------------------------------------------------------------------- /CommonLibrary/EnableDrag.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.InteropServices; 5 | using System.Text; 6 | 7 | namespace CommonLibrary 8 | { 9 | public class EnableDrag 10 | { 11 | public enum ChangeWindowMessageFilterFlags : uint 12 | { 13 | Add = 1, Remove = 2 14 | }; 15 | [DllImport("user32")] 16 | public static extern bool ChangeWindowMessageFilter(uint msg, ChangeWindowMessageFilterFlags flags); 17 | 18 | public static void EnableDragMethod() 19 | { 20 | ChangeWindowMessageFilter(0x233/*_WM_DROPFILES*/, ChangeWindowMessageFilterFlags.Add/*_MSGFLT_ADD*/); 21 | ChangeWindowMessageFilter(0x0049/*_WM_COPYGLOBALDATA*/, ChangeWindowMessageFilterFlags.Add/*_MSGFLT_ADD*/); 22 | 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /CommonLibrary/FileUtility.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Text; 6 | 7 | namespace CommonLibrary 8 | { 9 | public class FileUtility 10 | { 11 | /// 12 | /// 递归枚举所有文件 13 | /// 14 | /// 15 | /// 16 | public static IEnumerable GetFiles(string dir) 17 | { 18 | if (File.GetAttributes(dir).HasFlag(FileAttributes.Directory)) 19 | { 20 | foreach (String file in System.IO.Directory.GetFiles(dir)) 21 | { 22 | yield return file; 23 | } 24 | foreach (string dir1 in System.IO.Directory.GetDirectories(dir)) 25 | { 26 | foreach (string ff in GetFiles(dir1)) 27 | { 28 | yield return ff; 29 | } 30 | } 31 | } 32 | yield return dir; 33 | 34 | } 35 | 36 | 37 | public static String MakeRelativePath(String fromPath, String toPath) 38 | { 39 | if (String.IsNullOrEmpty(fromPath)) throw new ArgumentNullException("fromPath"); 40 | if (String.IsNullOrEmpty(toPath)) throw new ArgumentNullException("toPath"); 41 | 42 | Uri fromUri = new Uri(fromPath); 43 | Uri toUri = new Uri(toPath); 44 | 45 | Uri relativeUri = fromUri.MakeRelativeUri(toUri); 46 | String relativePath = Uri.UnescapeDataString(relativeUri.ToString()); 47 | 48 | return relativePath.Replace('/', Path.DirectorySeparatorChar); 49 | } 50 | 51 | public static string GetNoSameNameFile(string fullname) 52 | { 53 | if (File.Exists(fullname)) 54 | { 55 | string newfilename = Path.GetFileNameWithoutExtension(fullname) + "_" + Path.GetRandomFileName().Substring(0, 4); 56 | string newfullname = Path.Combine(Path.GetDirectoryName(fullname), newfilename + Path.GetExtension(fullname)); 57 | 58 | newfullname = GetNoSameNameFile(newfullname); 59 | return newfullname; 60 | } 61 | else 62 | { 63 | return fullname; 64 | } 65 | } 66 | 67 | public static string RandomName(string path) 68 | { 69 | return Path.Combine(path, Guid.NewGuid().ToString("N")); 70 | } 71 | 72 | public static string AppendRandomName(string path, string filename) 73 | { 74 | return GetNoSameNameFile(Path.Combine(path, filename)); 75 | } 76 | 77 | public static string GetFullNameWithoutExtension(string filefullname) 78 | { 79 | return Path.Combine(Path.GetFullPath(filefullname), Path.GetFileNameWithoutExtension(filefullname)); 80 | } 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /CommonLibrary/MediaInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.IO; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Text.RegularExpressions; 8 | using System.Windows.Forms; 9 | 10 | namespace CommonLibrary 11 | { 12 | [Serializable] 13 | public class MediaInfo 14 | { 15 | public string MediaInfoText { set; get; } 16 | public MediaInfo(string filename) 17 | { 18 | ProcessStartInfo processinfo = new ProcessStartInfo(); 19 | string mediainfofile = Path.Combine(Application.StartupPath, "tools\\mediainfo"); 20 | processinfo.FileName = mediainfofile; 21 | processinfo.Arguments = "\"" + filename + "\""; 22 | processinfo.UseShellExecute = false; //输出信息重定向 23 | processinfo.CreateNoWindow = true; 24 | processinfo.RedirectStandardInput = true; 25 | processinfo.RedirectStandardOutput = true; 26 | processinfo.RedirectStandardError = false; 27 | processinfo.WindowStyle = ProcessWindowStyle.Hidden; 28 | Process mediainfo = new Process(); 29 | mediainfo.StartInfo = processinfo; 30 | mediainfo.Start(); 31 | MediaInfoText = mediainfo.StandardOutput.ReadToEnd(); 32 | mediainfo.Dispose(); 33 | } 34 | 35 | 36 | public int DelayRelativeToVideo 37 | { 38 | get 39 | { 40 | string delayStr = GetValueByText("Delay relative to video").Replace("ms", ""); 41 | int delay = 0; 42 | int.TryParse(delayStr, out delay); 43 | return delay; 44 | } 45 | } 46 | 47 | public ScanType ScanType 48 | { 49 | get 50 | { 51 | string value = GetValueByText("Scan type").Replace("ms", ""); 52 | if (value.Equals("Interlaced", StringComparison.OrdinalIgnoreCase)) 53 | { 54 | return ScanType.Interlaced; 55 | } 56 | else 57 | { 58 | return ScanType.Progressive; 59 | } 60 | } 61 | } 62 | 63 | public ScanOrder ScanOrder 64 | { 65 | get 66 | { 67 | string value = GetValueByText("Scan order").Replace("ms", ""); 68 | if (value.Contains("Bottom")) 69 | return ScanOrder.BottomFieldFirst; 70 | else 71 | return ScanOrder.TopFieldFirst; 72 | } 73 | } 74 | 75 | public string GetValueByText(string key) 76 | { 77 | return Regex.Match(MediaInfoText, string.Format(@"{0}\s*:\s(?.*?)\r", key)).Groups["Value"].Value; 78 | } 79 | } 80 | 81 | public enum ScanType 82 | { 83 | Progressive, 84 | Interlaced 85 | } 86 | public enum ScanOrder 87 | { 88 | TopFieldFirst, 89 | BottomFieldFirst 90 | } 91 | 92 | } 93 | -------------------------------------------------------------------------------- /CommonLibrary/ProcessCmd.cs: -------------------------------------------------------------------------------- 1 | using CommonLibrary; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Diagnostics; 5 | using System.IO; 6 | using System.Linq; 7 | using System.Text; 8 | 9 | namespace CommonLibrary 10 | { 11 | public class ProcessCmd 12 | { 13 | public static void SilenceRun(string process, string args) 14 | { 15 | ProcessStartInfo processinfo = new ProcessStartInfo(); 16 | processinfo.UseShellExecute = false; 17 | processinfo.CreateNoWindow = true; 18 | processinfo.RedirectStandardInput = true; 19 | processinfo.RedirectStandardOutput = true; 20 | processinfo.RedirectStandardError = true; 21 | processinfo.WindowStyle = ProcessWindowStyle.Hidden; 22 | processinfo.FileName = process; 23 | if (!File.Exists(process)) 24 | { 25 | throw new ArgumentException("找不到指定程序:" + process, process); 26 | } 27 | processinfo.Arguments = args; 28 | Process p = new Process(); 29 | p.StartInfo = processinfo; 30 | p.Start(); 31 | p.WaitForExit(); 32 | } 33 | 34 | public static void Run(string process, string args = "") 35 | { 36 | ProcessStartInfo processinfo = new ProcessStartInfo(); 37 | processinfo.FileName = process; 38 | if (!File.Exists(process)) 39 | { 40 | throw new ArgumentException("找不到指定程序:" + process, process); 41 | } 42 | processinfo.Arguments = args; 43 | Process p = new Process(); 44 | p.StartInfo = processinfo; 45 | p.Start(); 46 | p.WaitForExit(); 47 | } 48 | 49 | public static void RunBat(string bat, string temp) 50 | { 51 | var batfile = FileUtility.RandomName(temp) + ".bat"; 52 | File.WriteAllText(batfile, bat, Encoding.Default); 53 | ProcessCmd.Run(batfile); 54 | } 55 | 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /CommonLibrary/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // 有关程序集的常规信息通过以下 6 | // 特性集控制。更改这些特性值可修改 7 | // 与程序集关联的信息。 8 | [assembly: AssemblyTitle("CommonLibrary")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("CommonLibrary")] 13 | [assembly: AssemblyCopyright("Copyright © 2014")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // 将 ComVisible 设置为 false 使此程序集中的类型 18 | // 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, 19 | // 则将该类型上的 ComVisible 特性设置为 true。 20 | [assembly: ComVisible(false)] 21 | 22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 23 | [assembly: Guid("808b01d9-2c59-416f-9768-9e1ea35951a9")] 24 | 25 | // 程序集的版本信息由下面四个值组成: 26 | // 27 | // 主版本 28 | // 次版本 29 | // 生成号 30 | // 修订号 31 | // 32 | // 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, 33 | // 方法是按如下所示使用“*”: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /CommonLibrary/StringExtension.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace CommonLibrary 7 | { 8 | public static class StringExtension 9 | { 10 | public static string Wrap(this string src, string span) 11 | { 12 | if (!src.StartsWith(span)) 13 | { 14 | src = span + src; 15 | } 16 | if (!src.EndsWith(span)) 17 | { 18 | src = src + span; 19 | } 20 | return src; 21 | } 22 | public static string Maohao(this string src) 23 | { 24 | if (string.IsNullOrEmpty(src)) 25 | { 26 | return string.Empty; 27 | } 28 | if (!src.StartsWith("\"") && !src.EndsWith("\"")) 29 | { 30 | return src.Wrap("\""); 31 | } 32 | else 33 | { 34 | return src; 35 | } 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /CommonLibrary/Win32.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.InteropServices; 5 | using System.Text; 6 | 7 | namespace CommonLibrary 8 | { 9 | //public static class NativeWrappers 10 | //{ 11 | // public enum ChangeWindowMessageFilterFlags : uint { Add = 1, Remove = 2 }; 12 | // [DllImport("user32")] 13 | // public static extern bool ChangeWindowMessageFilter(uint msg, ChangeWindowMessageFilterFlags flags); 14 | 15 | 16 | // [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] 17 | // public static extern uint RegisterWindowMessage(string lpString); 18 | //} 19 | } 20 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/20131120094621866_easyicon_net_48.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gxrsprite/EasyX265EncoderGui/96d106c21f8679aa534f8722c6d45ffacfced7cd/Easyx264CoderGUI/20131120094621866_easyicon_net_48.ico -------------------------------------------------------------------------------- /Easyx264CoderGUI/ColorMatrix.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace Easyx264CoderGUI 7 | { 8 | 9 | public class ColorMatrix 10 | { 11 | public string x264 = ""; 12 | public string avs = ""; 13 | public string tvrange = ""; 14 | public static ColorMatrix From(string _x264, string _avs, string _tvrange) 15 | { 16 | return new ColorMatrix(_x264, _avs, _tvrange); 17 | } 18 | public ColorMatrix(string _x264, string _avs, string _tvrange) 19 | { 20 | x264 = _x264; 21 | avs = _avs; 22 | tvrange = _tvrange; 23 | } 24 | 25 | public static ColorMatrix bt709 = ColorMatrix.From("bt709", "709", "false"); 26 | public static ColorMatrix YCgCo = ColorMatrix.From("YCgCo", "YCgCo", "true"); 27 | public static ColorMatrix Convert(string Matrix) 28 | { 29 | switch (Matrix) 30 | { 31 | case "YCbCr.BT709": 32 | return ColorMatrix.bt709; 33 | case "YCgCo": 34 | return ColorMatrix.YCgCo; 35 | default: 36 | return ColorMatrix.bt709; 37 | } 38 | } 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/CommandLine/Eac3toCommand.cs: -------------------------------------------------------------------------------- 1 | using CommonLibrary; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Diagnostics; 5 | using System.IO; 6 | using System.Linq; 7 | using System.Text; 8 | 9 | namespace Easyx264CoderGUI.CommandLine 10 | { 11 | public class Eac3toCommand 12 | { 13 | public static string Eac3toExecute = "tools" + Path.DirectorySeparatorChar + "eac3to.exe"; 14 | public static string OpusEnc = "tools" + Path.DirectorySeparatorChar + "opusenc"; 15 | 16 | public static string ConvertMusic(FileConfig fileConfig) 17 | { 18 | AudioConfig audioConfig = fileConfig.AudioConfig; 19 | string tmp = Config.Temp; 20 | string audiofile = FileUtility.RandomName(tmp) + ".m4a"; 21 | var eac3to = Path.Combine(Environment.CurrentDirectory, Eac3toExecute); 22 | string bat = $"{eac3to.Maohao()} {fileConfig.VedioFileFullName.Maohao()} {audioConfig.Tracker}: {audiofile.Maohao()} -quality={audioConfig.Quality} {audioConfig.CommandLineArgs}"; 23 | ProcessCmd.RunBat(bat, Config.Temp); 24 | return audiofile; 25 | } 26 | 27 | public static string ConvertAudioTOpus(FileConfig fileConfig) 28 | { 29 | AudioConfig audioConfig = fileConfig.AudioConfig; 30 | string tmp = Config.Temp; 31 | string audiofile = FileUtility.RandomName(tmp) + ".opus"; 32 | int bitrat = 0; 33 | if (audioConfig.Quality < 1) 34 | { 35 | bitrat = (int)(audioConfig.Quality * 500); 36 | } 37 | else 38 | { 39 | bitrat = (int)audioConfig.Quality; 40 | } 41 | var eac3to = Path.Combine(Environment.CurrentDirectory, Eac3toExecute); 42 | var opusenc = Path.Combine(Environment.CurrentDirectory, OpusEnc); 43 | string bat = $"{eac3to.Maohao()} {fileConfig.VedioFileFullName.Maohao()} {audioConfig.Tracker}: {audioConfig.CommandLineArgs} stdout.wav | {opusenc.Maohao()} --ignorelength --bitrate {bitrat} --vbr - {audiofile.Maohao()}"; 44 | ProcessCmd.RunBat(bat, Config.Temp); 45 | return audiofile; 46 | } 47 | 48 | public static string ConvertAudioToFlac(FileConfig fileConfig) 49 | { 50 | AudioConfig audioConfig = fileConfig.AudioConfig; 51 | string tmp = Config.Temp; 52 | string audiofile = FileUtility.RandomName(tmp) + ".flac"; 53 | var eac3to = Path.Combine(Environment.CurrentDirectory, Eac3toExecute); 54 | var opusenc = Path.Combine(Environment.CurrentDirectory, OpusEnc); 55 | string bat = $"{eac3to.Maohao()} {fileConfig.VedioFileFullName.Maohao()} {audioConfig.Tracker}: {audiofile.Maohao()} "; 56 | ProcessCmd.RunBat(bat, Config.Temp); 57 | return audiofile; 58 | } 59 | 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/CommandLine/FFmpegCommand.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.IO; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Windows.Forms; 8 | using CommonLibrary; 9 | 10 | namespace Easyx264CoderGUI 11 | { 12 | public class FFmpegCommand 13 | { 14 | public static string FFmpegExecute = "tools" + Path.DirectorySeparatorChar + "ffmpeg.exe"; 15 | public static string ffmpegPipex265Args = " -i {0} -f yuv4mpegpipe {1} -|";//-deinterlace 16 | 17 | public static string GetFfmpegArgs(FileConfig fileconfig) 18 | { 19 | VedioConfig vedioConfig = fileconfig.VedioConfig; 20 | string args = ""; 21 | if (vedioConfig.deinterlace) 22 | { 23 | args += "-deinterlace "; 24 | } 25 | if (vedioConfig.csp == "i444") 26 | { 27 | args += "-pix_fmt yuv444p "; 28 | } 29 | else if (vedioConfig.csp == "i420") 30 | { 31 | args += "-pix_fmt yuv420p "; 32 | } 33 | else if (vedioConfig.csp == "i422") 34 | { 35 | args += "-pix_fmt yuv422p "; 36 | } 37 | else if (vedioConfig.csp == "rgb") 38 | { 39 | args += "-pix_fmt argb "; 40 | } 41 | if (vedioConfig.Resize) 42 | { 43 | args += string.Format("-s {0}x{1}", vedioConfig.Width, vedioConfig.Height); 44 | } 45 | var result = string.Format(ffmpegPipex265Args, fileconfig.VedioFileFullName.Maohao(), args); 46 | 47 | return result; 48 | } 49 | 50 | public static string RunFFmpegToFlac(FileConfig fileConfig) 51 | { 52 | AudioConfig audioConfig = fileConfig.AudioConfig; 53 | ProcessStartInfo processinfo = new ProcessStartInfo(); 54 | string tmp = Config.Temp; 55 | string audiofile = FileUtility.RandomName(tmp) + ".flac"; 56 | 57 | string bat = string.Empty; 58 | if (fileConfig.InputType == InputType.AvisynthScriptFile) 59 | { 60 | return null; 61 | } 62 | else 63 | { 64 | bat = getAudioFlacBat(fileConfig.AudioInputFile, audiofile, audioConfig); 65 | } 66 | ProcessCmd.RunBat(bat, Config.Temp); 67 | 68 | return audiofile; 69 | } 70 | 71 | private static string getAudioFlacBat(string input, string output, AudioConfig audioconfig) 72 | { 73 | string ffmpegfile = ""; 74 | if (Config.IsWindows) 75 | { 76 | ffmpegfile = Path.Combine(Application.StartupPath, "tools\\ffmpeg.exe"); 77 | } 78 | else 79 | { 80 | ffmpegfile = "ffmpeg"; 81 | } 82 | 83 | return $"{ffmpegfile.Maohao()} -i {input.Maohao()} -c:a flac -compression_level 9 {output.Maohao()}"; 84 | //return $"{ffmpegfile.Maohao()} -i {input.Maohao()} {audioargs} -c:a libopus -vn -vbr on { output.Maohao()}"; 85 | } 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/CommandLine/x264ArgsManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Text.RegularExpressions; 6 | 7 | namespace Easyx264CoderGUI 8 | { 9 | public class x264ArgsManager 10 | { 11 | public x264ArgsManager() { } 12 | public x264ArgsManager(string args) 13 | { 14 | x264ArgsStr = args; 15 | } 16 | public string x264ArgsStr { set; get; } 17 | 18 | public x264ArgsManager RemoveArg(string name) 19 | { 20 | Regex regex = new Regex(string.Format("(--{0}\\s+.+?)\\s+?", name), RegexOptions.IgnoreCase); 21 | x264ArgsStr = regex.Replace(x264ArgsStr, " "); 22 | return this; 23 | } 24 | 25 | public x264ArgsManager ChangeArgValue(string name, string value) 26 | { 27 | Regex regex = new Regex(string.Format("(?<=--{0}\\s+).+?(?=\\s+)", name), RegexOptions.IgnoreCase); 28 | x264ArgsStr = regex.Replace(x264ArgsStr, value); 29 | return this; 30 | } 31 | 32 | public string GetArgValue(string name) 33 | { 34 | Regex regex = new Regex(string.Format("(?<=--{0}\\s+).+?(?=\\s+)", name), RegexOptions.IgnoreCase); 35 | Match match = regex.Match(x264ArgsStr); 36 | if (match.Success) 37 | { 38 | return match.Value; 39 | } 40 | return ""; 41 | } 42 | 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/Config.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace Easyx264CoderGUI 7 | { 8 | public static class Config 9 | { 10 | public static string Temp { set; get; } 11 | public static string VspipePath { set; get; } 12 | public static string VsPluginPath { set; get; } 13 | 14 | public static bool IsWindows = true; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/EncoderExcepetion.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace Easyx264CoderGUI 7 | { 8 | [Serializable] 9 | public class EncoderException : Exception 10 | { 11 | public EncoderException() { } 12 | public EncoderException(string message) : base(message) { } 13 | public EncoderException(string message, Exception inner) : base(message, inner) { } 14 | protected EncoderException( 15 | System.Runtime.Serialization.SerializationInfo info, 16 | System.Runtime.Serialization.StreamingContext context) 17 | : base(info, context) { } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/EncoderTaskInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Windows.Forms; 7 | 8 | namespace Easyx264CoderGUI 9 | { 10 | 11 | public class EncoderTaskInfo 12 | { 13 | public Process process = null; 14 | public EncoderTaskInfoForm infoForm = null; 15 | public void AppendOutput(string text) 16 | { 17 | if (infoForm != null) 18 | { 19 | infoForm.AppendText(text); 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/EncoderTaskInfoForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace Easyx264CoderGUI 2 | { 3 | partial class EncoderTaskInfoForm 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.txtInfo = new System.Windows.Forms.TextBox(); 32 | this.lbFile = new System.Windows.Forms.Label(); 33 | this.checkBox1 = new System.Windows.Forms.CheckBox(); 34 | this.SuspendLayout(); 35 | // 36 | // txtInfo 37 | // 38 | this.txtInfo.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 39 | | System.Windows.Forms.AnchorStyles.Left) 40 | | System.Windows.Forms.AnchorStyles.Right))); 41 | this.txtInfo.Location = new System.Drawing.Point(12, 52); 42 | this.txtInfo.Multiline = true; 43 | this.txtInfo.Name = "txtInfo"; 44 | this.txtInfo.ScrollBars = System.Windows.Forms.ScrollBars.Both; 45 | this.txtInfo.Size = new System.Drawing.Size(482, 371); 46 | this.txtInfo.TabIndex = 0; 47 | // 48 | // lbFile 49 | // 50 | this.lbFile.AutoSize = true; 51 | this.lbFile.Location = new System.Drawing.Point(13, 13); 52 | this.lbFile.Name = "lbFile"; 53 | this.lbFile.Size = new System.Drawing.Size(0, 12); 54 | this.lbFile.TabIndex = 1; 55 | // 56 | // checkBox1 57 | // 58 | this.checkBox1.AutoSize = true; 59 | this.checkBox1.Location = new System.Drawing.Point(404, 30); 60 | this.checkBox1.Name = "checkBox1"; 61 | this.checkBox1.Size = new System.Drawing.Size(48, 16); 62 | this.checkBox1.TabIndex = 2; 63 | this.checkBox1.Text = "滚动"; 64 | this.checkBox1.UseVisualStyleBackColor = true; 65 | this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged); 66 | // 67 | // EncoderTaskInfoForm 68 | // 69 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 70 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 71 | this.ClientSize = new System.Drawing.Size(506, 435); 72 | this.Controls.Add(this.checkBox1); 73 | this.Controls.Add(this.lbFile); 74 | this.Controls.Add(this.txtInfo); 75 | this.Name = "EncoderTaskInfoForm"; 76 | this.Text = "转码信息"; 77 | this.Load += new System.EventHandler(this.EncoderTaskInfoForm_Load); 78 | this.ResumeLayout(false); 79 | this.PerformLayout(); 80 | 81 | } 82 | 83 | #endregion 84 | 85 | private System.Windows.Forms.TextBox txtInfo; 86 | public System.Windows.Forms.Label lbFile; 87 | private System.Windows.Forms.CheckBox checkBox1; 88 | } 89 | } -------------------------------------------------------------------------------- /Easyx264CoderGUI/EncoderTaskInfoForm.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Drawing; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Windows.Forms; 8 | 9 | namespace Easyx264CoderGUI 10 | { 11 | public partial class EncoderTaskInfoForm : Form 12 | { 13 | public EncoderTaskInfoForm() 14 | { 15 | InitializeComponent(); 16 | } 17 | public FileConfig fileConfig = null; 18 | private void EncoderTaskInfoForm_Load(object sender, EventArgs e) 19 | { 20 | 21 | } 22 | 23 | public void AppendText(string text) 24 | { 25 | if (InvokeRequired) 26 | { 27 | this.Invoke((Action)delegate() 28 | { 29 | txtInfo.AppendText(text + "\r\n"); 30 | }); 31 | } 32 | else 33 | { 34 | txtInfo.AppendText(text + "\r\n"); 35 | } 36 | 37 | } 38 | 39 | private void checkBox1_CheckedChanged(object sender, EventArgs e) 40 | { 41 | } 42 | 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/EncoderTaskInfoForm.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/FileConfig/AudioConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace Easyx264CoderGUI 7 | { 8 | [Serializable] 9 | public class AudioConfig 10 | { 11 | public bool UseEac3to = false; 12 | public bool Enabled = true; 13 | public float Quality = 0.65f; 14 | public bool CopyStream = false; 15 | public int Tracker = 2; 16 | public AudioEncoder Encoder = AudioEncoder.aac; 17 | public string CommandLineArgs = ""; 18 | } 19 | 20 | public enum AudioEncoder 21 | { 22 | aac, 23 | opus, 24 | flac 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/FileConfig/DeepClone.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Runtime.Serialization; 6 | using System.Runtime.Serialization.Formatters.Binary; 7 | using System.Text; 8 | 9 | namespace Easyx264CoderGUI 10 | { 11 | public static class DeepClone 12 | { 13 | public static T GetDeepCopy(T obj) 14 | { 15 | T DeepCopyObj; 16 | if (obj.GetType().IsValueType == true)//值类型 17 | { 18 | DeepCopyObj = obj; 19 | } 20 | else//引用类型 21 | { 22 | DeepCopyObj = (T)System.Activator.CreateInstance(typeof(T)); //创建引用对象 23 | System.Reflection.MemberInfo[] memberCollection = obj.GetType().GetMembers(); 24 | foreach (System.Reflection.MemberInfo member in memberCollection) 25 | { 26 | if (member.MemberType == System.Reflection.MemberTypes.Field) 27 | { 28 | System.Reflection.FieldInfo field = (System.Reflection.FieldInfo)member; 29 | Object fieldValue = field.GetValue(obj); 30 | if (fieldValue is ICloneable) 31 | field.SetValue(DeepCopyObj, (fieldValue as ICloneable).Clone()); 32 | else 33 | // T fieldValue = (T)field.GetValue(obj); 34 | field.SetValue(DeepCopyObj, GetDeepCopy(fieldValue)); 35 | } 36 | } 37 | } 38 | return DeepCopyObj; 39 | } 40 | 41 | public static T Clone(T source) 42 | { 43 | if (!typeof(T).IsSerializable) 44 | { 45 | throw new ArgumentException("The type must be serializable.", "source"); 46 | } 47 | 48 | // Don't serialize a null object, simply return the default for that object 49 | if (Object.ReferenceEquals(source, null)) 50 | { 51 | return default(T); 52 | } 53 | 54 | IFormatter formatter = new BinaryFormatter(); 55 | Stream stream = new MemoryStream(); 56 | using (stream) 57 | { 58 | formatter.Serialize(stream, source); 59 | stream.Seek(0, SeekOrigin.Begin); 60 | return (T)formatter.Deserialize(stream); 61 | } 62 | } 63 | 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/FileConfig/FileConfig.cs: -------------------------------------------------------------------------------- 1 | using CommonLibrary; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.IO; 5 | using System.Linq; 6 | using System.Runtime.Serialization; 7 | using System.Runtime.Serialization.Formatters.Binary; 8 | using System.Text; 9 | 10 | namespace Easyx264CoderGUI 11 | { 12 | [Serializable] 13 | public class FileConfig 14 | { 15 | public FileConfig() 16 | { 17 | lockobj = new object(); 18 | EncoderTaskInfo = new EncoderTaskInfo(); 19 | } 20 | 21 | object lockobj = null; 22 | public int state = -1; 23 | public string FullName = ""; 24 | public string AvsFileFullName = ""; 25 | public string VapoursynthFileFullName = ""; 26 | public string VedioFileFullName = ""; 27 | public string DirPath = ""; 28 | public bool CompleteDo = false; 29 | public string CompleteAction = "复制到"; 30 | public string CompleteActionDir = string.Empty; 31 | public bool KeepDirection = false; 32 | public string OutputPath = ""; 33 | /// 34 | /// 输出视频文件,不包含后缀 35 | /// 36 | public string OutputFile = ""; 37 | public string AudioInputFile = ""; 38 | public string Muxer = "mkv"; 39 | public bool sinablack = false; 40 | public bool sinaPreblack = false; 41 | public InputType InputType = InputType.Vedio; 42 | public AudioConfig AudioConfig = new AudioConfig(); 43 | public VedioConfig VedioConfig = new VedioConfig(); 44 | public MediaInfo mediaInfo = null; 45 | 46 | public string SubPath = null; 47 | [NonSerialized] 48 | public EncoderTaskInfo EncoderTaskInfo = null; 49 | 50 | public bool UseBat = false; 51 | /// 52 | /// 使用MediaInfo填充FileConfig里需要填充的数据 53 | /// 54 | public void FillMediaInfo() 55 | { 56 | if (this.mediaInfo != null) 57 | { 58 | this.mediaInfo.FillFileConfig(this); 59 | } 60 | } 61 | 62 | public FileConfig Clone() 63 | { 64 | var cloneti = DeepClone.Clone(this); 65 | cloneti.EncoderTaskInfo = new EncoderTaskInfo(); 66 | return cloneti; 67 | } 68 | } 69 | 70 | 71 | public enum InputType 72 | { 73 | Vedio, 74 | AvisynthScriptFile, 75 | AvisynthScript, 76 | VapoursynthScript, 77 | VapoursynthScriptFile 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/FileConfig/VedioConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace Easyx264CoderGUI 7 | { 8 | [Serializable] 9 | public class VedioConfig 10 | { 11 | public EncoderBitrateType BitType = EncoderBitrateType.crf; 12 | public int bitrate = 3500; 13 | public float crf = 25f; 14 | public int depth = 10; 15 | public string preset = "slow"; 16 | public string tune = ""; 17 | public string UserArgs = ""; 18 | public bool Resize = false; 19 | public int Width = 1920; 20 | public int Height = 1080; 21 | public string csp = "i420"; 22 | public string AvsScript = "";//if inputtype == AvisynthScript 23 | public string VapoursynthScript = ""; 24 | public Encoder Encoder = Encoder.x264; 25 | public bool deinterlace = false; 26 | public bool scanorder = true; 27 | public string ffmpeg4x265Args = ""; 28 | public string decoderMode = DecoderMode.defaultStr; 29 | public bool Is_x265_GHFLY_MOD; 30 | } 31 | 32 | public enum EncoderBitrateType 33 | { 34 | crf, 35 | twopass, 36 | qp 37 | } 38 | public enum Encoder 39 | { 40 | x264, 41 | x265, 42 | x265_GHFLY_MOD, 43 | NvEnc_H265, 44 | NvEnc_H264, 45 | QSVEnc_H265, 46 | QSVEnc_H264, 47 | } 48 | 49 | public class EncoderHelper 50 | { 51 | public static bool IsHevc(Encoder encoder) 52 | { 53 | switch (encoder) 54 | { 55 | case Encoder.x265: 56 | case Encoder.x265_GHFLY_MOD: 57 | case Encoder.NvEnc_H265: 58 | case Encoder.QSVEnc_H265: 59 | return true; 60 | } 61 | 62 | return false; 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/MediaInfoExtension.cs: -------------------------------------------------------------------------------- 1 | using CommonLibrary; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | 7 | namespace Easyx264CoderGUI 8 | { 9 | public static class MediaInfoExtension 10 | { 11 | public static void FillFileConfig(this MediaInfo info, FileConfig fileConfig) 12 | { 13 | VedioConfig vedioConfig = fileConfig.VedioConfig; 14 | vedioConfig.deinterlace = fileConfig.mediaInfo.ScanType == ScanType.Interlaced ? true : false; 15 | vedioConfig.scanorder = fileConfig.mediaInfo.ScanOrder == ScanOrder.TopFieldFirst ? true : false; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/Program.cs: -------------------------------------------------------------------------------- 1 | using CommonLibrary; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Windows.Forms; 6 | 7 | namespace Easyx264CoderGUI 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// 应用程序的主入口点。 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new Form1()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // 有关程序集的常规信息通过以下 6 | // 特性集控制。更改这些特性值可修改 7 | // 与程序集关联的信息。 8 | [assembly: AssemblyTitle("Easyx264EncoderGUI")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("eflay")] 12 | [assembly: AssemblyProduct("Easyx264EncoderGUI")] 13 | [assembly: AssemblyCopyright("Copyright © 2013")] 14 | [assembly: AssemblyTrademark("eflay")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // 将 ComVisible 设置为 false 使此程序集中的类型 18 | // 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, 19 | // 则将该类型上的 ComVisible 特性设置为 true。 20 | [assembly: ComVisible(false)] 21 | 22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 23 | [assembly: Guid("9f325124-39d5-4457-bcbb-a4a107f90f2f")] 24 | 25 | // 程序集的版本信息由下面四个值组成: 26 | // 27 | // 主版本 28 | // 次版本 29 | // 生成号 30 | // 修订号 31 | // 32 | // 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, 33 | // 方法是按如下所示使用“*”: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.3")] 36 | [assembly: AssemblyFileVersion("1.0.0.3")] 37 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.34209 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Easyx264CoderGUI.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// 一个强类型的资源类,用于查找本地化的字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// 返回此类使用的缓存的 ResourceManager 实例。 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Easyx264CoderGUI.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// 使用此强类型资源类,为所有资源查找 51 | /// 重写当前线程的 CurrentUICulture 属性。 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.34209 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Easyx264CoderGUI.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/Properties/app.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 52 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/Resource1.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Easyx264CoderGUI { 12 | using System; 13 | 14 | 15 | /// 16 | /// 一个强类型的资源类,用于查找本地化的字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resource1 { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resource1() { 33 | } 34 | 35 | /// 36 | /// 返回此类使用的缓存的 ResourceManager 实例。 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Easyx264CoderGUI.Resource1", typeof(Resource1).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// 使用此强类型资源类,为所有资源查找 51 | /// 重写当前线程的 CurrentUICulture 属性。 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// 查找类似 SetWorkingDir("$avisynth_plugin$") 65 | ///LoadPlugin("ffms2.dll") #加载FFmpegSource挂载方式 66 | ///LoadPlugin("LSMASHSource.dll") #LWLibavVideoSource挂载方式 67 | ///#LWLibavVideoSource("$InputVedio$") 68 | ///FFVideoSource("$InputVedio$") 69 | ///ChangeFPS(25) 70 | ///ConvertToYV12() 的本地化字符串。 71 | /// 72 | internal static string Avs25fps { 73 | get { 74 | return ResourceManager.GetString("Avs25fps", resourceCulture); 75 | } 76 | } 77 | 78 | /// 79 | /// 查找类似 SetWorkingDir("$avisynth_plugin$") 80 | ///LoadPlugin("ffms2.dll") #加载FFmpegSource挂载方式 81 | ///LoadPlugin("LSMASHSource.dll") #LWLibavVideoSource挂载方式 82 | ///LoadPlugin("VSFilter.dll") #加载字幕插件 83 | ///Load_Stdcall_Plugin("yadif.dll") #Yadif反交错滤镜 84 | ///LoadPlugin("nnedi3-0.9.4\nnedi3.dll") 85 | ///LoadPlugin("RemoveGrain-1.0\RemoveGrainSSE3.dll") 86 | ///LoadPlugin("RemoveGrain-1.0\RepairSSE3.dll") 87 | ///LoadPlugin("FluxSmooth-1.1a\FluxSmooth.dll") 88 | ///LoadPlugin("FFT3dGPU.dll") 89 | ///LoadPlugin("dither-1.23.0\avstp.dll") 90 | ///LoadPlugin("SmoothAdjust-v2.80\a [字符串的其余部分被截断]"; 的本地化字符串。 91 | /// 92 | internal static string AvsQTGMC { 93 | get { 94 | return ResourceManager.GetString("AvsQTGMC", resourceCulture); 95 | } 96 | } 97 | 98 | /// 99 | /// 查找类似 SetWorkingDir("$avspluginpath$") 100 | /// 101 | ///LoadPlugin("dither-1.23.0\avstp.dll") 102 | ///LoadPlugin("SmoothAdjust-v2.80\avs-2.6.x\x86\SmoothAdjust.dll") 103 | ///LoadPlugin("masktools-26-for-2.6alpha4\mt_masktools-26.dll") 104 | ///LoadPlugin("nnedi3-0.9.4\nnedi3.dll") 105 | ///Import("masktools-v2.0a48\masktools\LimitedSharpenFaster.avsi") 106 | ///Import("masktools-v2.0a48\masktools\mfToon-v0.54.avsi") 107 | ///Import("masktools-v2.0a48\masktools\vmToon-v0.74.avsi") 108 | ///LoadPlugin("dither-1.23.0\dither.dll") 109 | ///Import("dither-1.23.0\dither.avsi") 110 | ///Import("O16mod_ [字符串的其余部分被截断]"; 的本地化字符串。 111 | /// 112 | internal static string AvsScriptTemplete { 113 | get { 114 | return ResourceManager.GetString("AvsScriptTemplete", resourceCulture); 115 | } 116 | } 117 | 118 | /// 119 | /// 查找类似 --demuxer lavf --input-range pc --range pc --bframes 9 --qcomp 0.60 --direct auto --me umh --psy-rd 0.40:0.00 --aq-strength 0.8 的本地化字符串。 120 | /// 121 | internal static string TempleteGamei444 { 122 | get { 123 | return ResourceManager.GetString("TempleteGamei444", resourceCulture); 124 | } 125 | } 126 | 127 | /// 128 | /// 查找类似 --demuxer lavf --qcomp 0.80 --direct auto --me umh --aq-strength 0.8 的本地化字符串。 129 | /// 130 | internal static string TempleteHDi420 { 131 | get { 132 | return ResourceManager.GetString("TempleteHDi420", resourceCulture); 133 | } 134 | } 135 | 136 | /// 137 | /// 查找类似 --demuxer lavf --no-mbtree 的本地化字符串。 138 | /// 139 | internal static string TempleteOnline { 140 | get { 141 | return ResourceManager.GetString("TempleteOnline", resourceCulture); 142 | } 143 | } 144 | 145 | /// 146 | /// 查找类似 --output-csp $csp$ $profile$ $crf$ --preset $preset$ $tune$ $resize$ $userargs$ -o $outputfile$ $input$ 的本地化字符串。 147 | /// 148 | internal static string x264Line { 149 | get { 150 | return ResourceManager.GetString("x264Line", resourceCulture); 151 | } 152 | } 153 | } 154 | } 155 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/Template/avs/简单地图炮.txt: -------------------------------------------------------------------------------- 1 | SetWorkingDir("$avisynth_plugin$") 2 | LoadPlugin("ffms2.dll") #加载FFmpegSource挂载方式 3 | LoadPlugin("LSMASHSource.dll") #LWLibavVideoSource挂载方式 4 | LoadPlugin("VSFilter.dll") #加载字幕插件 5 | Load_Stdcall_Plugin("yadif.dll") #Yadif反交错滤镜 6 | LoadPlugin("nnedi3-0.9.4\nnedi3.dll") 7 | LoadPlugin("RemoveGrain-1.0\RemoveGrainSSE3.dll") 8 | LoadPlugin("RemoveGrain-1.0\RepairSSE3.dll") 9 | LoadPlugin("FluxSmooth-1.1a\FluxSmooth.dll") 10 | LoadPlugin("FFT3dGPU.dll") 11 | LoadPlugin("dither-1.23.0\avstp.dll") 12 | LoadPlugin("SmoothAdjust-v2.80\avs-2.6.x\x86\SmoothAdjust.dll") 13 | LoadPlugin("masktools-26-for-2.6alpha4\mt_masktools-26.dll") 14 | LoadPlugin("VSFilter.dll") 15 | LoadPlugin("deblock.dll") 16 | LoadPlugin("dither-1.23.0\dither.dll") 17 | Import("dither-1.23.0\dither.avsi") 18 | LoadPlugin("RemoveGrainSSE3.dll") 19 | LoadPlugin("RepairSSE3.dll") 20 | LoadPlugin("FFT3Dfilter.dll") 21 | LoadPlugin("DctFilter.dll") 22 | LoadPlugin("mvtools-2.6.0.5\mvtools2.dll") 23 | LoadPlugin("svpflow1.dll") 24 | LoadPlugin("svpflow2.dll") 25 | LoadPlugin("gradfun2db.dll") 26 | LoadPlugin("AddGrainC-1.7.0\AddGrainC.dll") 27 | Import("LSFmod.v1.9.avsi") 28 | Import("Deblock_QEDmod.avsi") 29 | Import("masktools-v2.0a48\masktools\LimitedSharpenFaster.avsi") 30 | Import("masktools-v2.0a48\masktools\mfToon-v0.54.avsi") 31 | Import("masktools-v2.0a48\masktools\vmToon-v0.74.avsi") 32 | Import("GradFun2DBmod.v1.5.avsi") 33 | Import("QTGMC-3.33.avsi") 34 | Import("nnedi3_resize16_v2.6.avsi") 35 | #Setmtmode(2) 36 | #LWLibavVideoSource("$InputVedio$") 37 | FFVideoSource("$InputVedio$",pp="l5:a")#pp="l5:a" 加反交错 38 | #Yadif(mode=0,order=-1) #yadif反交错 39 | 40 | #QTGMC(preset="fast") # 高质量反交错 41 | #SelectEven() # Add this line to keep original frame rate, leave it out for smoother doubled frame rate 42 | SMDegrain() 43 | #FFT3Dfilter() #降噪 MT2 44 | #FFT3Dgpu() #GPU版降噪 45 | deblock_QED() #deblock 46 | #LanczosResize(1920,1080) 47 | #nnedi3_resize16(1920, 1080,lsb_in=false,lsb=false) 48 | #FluxSmoothST(7,7) # Medium Noise MT2 49 | #Removegrain(2,2) 50 | #Tweak(0,1,0,1) #综合调色调 51 | #LSFmod() #锐化 52 | GradFun2DBmod() #deband 53 | ConvertToYV12() -------------------------------------------------------------------------------- /Easyx264CoderGUI/TextManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace Easyx264CoderGUI 7 | { 8 | public static class TextManager 9 | { 10 | /// 11 | /// 战渣浪后黑 12 | /// 13 | public static string zhalangflvmuxer = "战渣浪后黑"; 14 | public static string zhalangflvpreblack = "战渣浪前黑"; 15 | public static string Mh = "\""; 16 | 17 | } 18 | 19 | public static class DecoderMode 20 | { 21 | public static string defaultStr = "default"; 22 | public static string pipe = "pipe"; 23 | public static string self = "self"; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Easyx264CoderGUI/config.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | d:\temp\ 4 | D:\Program Files (x86)\VapourSynth\core64\vspipe 5 | J:\vspipe\filters 6 | -------------------------------------------------------------------------------- /Easyx265CoderGUI.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.31624.102 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Easyx265CoderGUI", "Easyx264CoderGUI\Easyx265CoderGUI.csproj", "{33127000-74C1-4CDF-B0AE-006BB3076EE2}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FlvBugger", "FlvBugger\FlvBugger.csproj", "{673734B7-2C76-4B2A-8261-0157C987C1A8}" 9 | EndProject 10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestConsole", "TestConsole\TestConsole.csproj", "{E9DBF248-8017-4E56-AF0A-860EC116F192}" 11 | EndProject 12 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ToolSet", "ToolSet\ToolSet.csproj", "{5D8E769A-283E-42F9-897D-ADCB4BD4258A}" 13 | EndProject 14 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommonLibrary", "CommonLibrary\CommonLibrary.csproj", "{ED4FD018-9180-40D3-8FDE-FB191C99AE17}" 15 | EndProject 16 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AudioToAAC", "AudioToAAC\AudioToAAC.csproj", "{19A73F4F-D526-460B-89C7-855D2005432B}" 17 | EndProject 18 | Global 19 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 20 | Debug|Any CPU = Debug|Any CPU 21 | Release|Any CPU = Release|Any CPU 22 | EndGlobalSection 23 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 24 | {33127000-74C1-4CDF-B0AE-006BB3076EE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 25 | {33127000-74C1-4CDF-B0AE-006BB3076EE2}.Debug|Any CPU.Build.0 = Debug|Any CPU 26 | {33127000-74C1-4CDF-B0AE-006BB3076EE2}.Release|Any CPU.ActiveCfg = Release|Any CPU 27 | {33127000-74C1-4CDF-B0AE-006BB3076EE2}.Release|Any CPU.Build.0 = Release|Any CPU 28 | {673734B7-2C76-4B2A-8261-0157C987C1A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 29 | {673734B7-2C76-4B2A-8261-0157C987C1A8}.Debug|Any CPU.Build.0 = Debug|Any CPU 30 | {673734B7-2C76-4B2A-8261-0157C987C1A8}.Release|Any CPU.ActiveCfg = Release|Any CPU 31 | {673734B7-2C76-4B2A-8261-0157C987C1A8}.Release|Any CPU.Build.0 = Release|Any CPU 32 | {E9DBF248-8017-4E56-AF0A-860EC116F192}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 33 | {E9DBF248-8017-4E56-AF0A-860EC116F192}.Debug|Any CPU.Build.0 = Debug|Any CPU 34 | {E9DBF248-8017-4E56-AF0A-860EC116F192}.Release|Any CPU.ActiveCfg = Release|Any CPU 35 | {E9DBF248-8017-4E56-AF0A-860EC116F192}.Release|Any CPU.Build.0 = Release|Any CPU 36 | {5D8E769A-283E-42F9-897D-ADCB4BD4258A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 37 | {5D8E769A-283E-42F9-897D-ADCB4BD4258A}.Debug|Any CPU.Build.0 = Debug|Any CPU 38 | {5D8E769A-283E-42F9-897D-ADCB4BD4258A}.Release|Any CPU.ActiveCfg = Release|Any CPU 39 | {5D8E769A-283E-42F9-897D-ADCB4BD4258A}.Release|Any CPU.Build.0 = Release|Any CPU 40 | {ED4FD018-9180-40D3-8FDE-FB191C99AE17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 41 | {ED4FD018-9180-40D3-8FDE-FB191C99AE17}.Debug|Any CPU.Build.0 = Debug|Any CPU 42 | {ED4FD018-9180-40D3-8FDE-FB191C99AE17}.Release|Any CPU.ActiveCfg = Release|Any CPU 43 | {ED4FD018-9180-40D3-8FDE-FB191C99AE17}.Release|Any CPU.Build.0 = Release|Any CPU 44 | {19A73F4F-D526-460B-89C7-855D2005432B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 45 | {19A73F4F-D526-460B-89C7-855D2005432B}.Debug|Any CPU.Build.0 = Debug|Any CPU 46 | {19A73F4F-D526-460B-89C7-855D2005432B}.Release|Any CPU.ActiveCfg = Release|Any CPU 47 | {19A73F4F-D526-460B-89C7-855D2005432B}.Release|Any CPU.Build.0 = Release|Any CPU 48 | EndGlobalSection 49 | GlobalSection(SolutionProperties) = preSolution 50 | HideSolutionNode = FALSE 51 | EndGlobalSection 52 | GlobalSection(ExtensibilityGlobals) = postSolution 53 | SolutionGuid = {065D1033-8B51-486B-82BA-47A9FEA08ECB} 54 | EndGlobalSection 55 | EndGlobal 56 | -------------------------------------------------------------------------------- /FlvBugger/FlvBugger.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {673734B7-2C76-4B2A-8261-0157C987C1A8} 8 | Library 9 | Properties 10 | FlvBugger 11 | FlvBugger 12 | v4.5.1 13 | 512 14 | 15 | 16 | true 17 | full 18 | false 19 | bin\Debug\ 20 | DEBUG;TRACE 21 | prompt 22 | 4 23 | 24 | 25 | pdbonly 26 | true 27 | bin\Release\ 28 | TRACE 29 | prompt 30 | 4 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 48 | -------------------------------------------------------------------------------- /FlvBugger/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // 有关程序集的常规信息通过以下 6 | // 特性集控制。更改这些特性值可修改 7 | // 与程序集关联的信息。 8 | [assembly: AssemblyTitle("FlvBugger")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("FlvBugger")] 13 | [assembly: AssemblyCopyright("Copyright © 2013")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // 将 ComVisible 设置为 false 使此程序集中的类型 18 | // 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, 19 | // 则将该类型上的 ComVisible 特性设置为 true。 20 | [assembly: ComVisible(false)] 21 | 22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 23 | [assembly: Guid("5ff8572e-16b8-4077-b990-f02348126910")] 24 | 25 | // 程序集的版本信息由下面四个值组成: 26 | // 27 | // 主版本 28 | // 次版本 29 | // 生成号 30 | // 修订号 31 | // 32 | // 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, 33 | // 方法是按如下所示使用“*”: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /LosslessAviRgbConverter/AudioConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace LosslessAviRgbConverter 7 | { 8 | public class AudioConfig 9 | { 10 | public bool Enabled = true; 11 | public float Quality = 0.65f; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /LosslessAviRgbConverter/ColorMatrix.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace LosslessAviRgbConverter 7 | { 8 | 9 | public class ColorMatrix 10 | { 11 | public string x264 = ""; 12 | public string avs = ""; 13 | public string tvrange = ""; 14 | public static ColorMatrix From(string _x264, string _avs, string _tvrange) 15 | { 16 | return new ColorMatrix(_x264, _avs, _tvrange); 17 | } 18 | public ColorMatrix(string _x264, string _avs, string _tvrange) 19 | { 20 | x264 = _x264; 21 | avs = _avs; 22 | tvrange = _tvrange; 23 | } 24 | 25 | public static ColorMatrix bt709 = ColorMatrix.From("bt709", "709", "false"); 26 | public static ColorMatrix YCgCo = ColorMatrix.From("YCgCo", "YCgCo", "true"); 27 | public static ColorMatrix Convert(string Matrix) 28 | { 29 | switch (Matrix) 30 | { 31 | case "YCbCr.BT709": 32 | return ColorMatrix.bt709; 33 | case "YCgCo": 34 | return ColorMatrix.YCgCo; 35 | default: 36 | return ColorMatrix.bt709; 37 | } 38 | } 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /LosslessAviRgbConverter/FileConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace LosslessAviRgbConverter 7 | { 8 | public class FileConfig 9 | { 10 | public int state = -1; 11 | public string FullName { set; get; } 12 | public string DirPath { set; get; } 13 | public bool CompleteDo = false; 14 | public string CompleteAction = "复制到"; 15 | public string CompleteActionDir = string.Empty; 16 | public bool KeepDirection = false; 17 | public string OutputPath = ""; 18 | /// 19 | /// 输出视频文件,不包含后缀 20 | /// 21 | public string OutputFile = ""; 22 | public string AudioInputFile = ""; 23 | public AudioConfig AudioConfig = new AudioConfig(); 24 | public VedioConfig VedioConfig = new VedioConfig(); 25 | 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /LosslessAviRgbConverter/FileUtility.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Text; 6 | 7 | namespace LosslessAviRgbConverter 8 | { 9 | public class FileUtility 10 | { 11 | /// 12 | /// 递归枚举所有文件 13 | /// 14 | /// 15 | /// 16 | public static IEnumerable GetFiles(string dir) 17 | { 18 | if (File.GetAttributes(dir).HasFlag(FileAttributes.Directory)) 19 | { 20 | foreach (String file in System.IO.Directory.GetFiles(dir)) 21 | { 22 | yield return file; 23 | } 24 | foreach (string dir1 in System.IO.Directory.GetDirectories(dir)) 25 | { 26 | foreach (string ff in GetFiles(dir1)) 27 | { 28 | yield return ff; 29 | } 30 | } 31 | } 32 | yield return dir; 33 | 34 | } 35 | 36 | 37 | public static String MakeRelativePath(String fromPath, String toPath) 38 | { 39 | if (String.IsNullOrEmpty(fromPath)) throw new ArgumentNullException("fromPath"); 40 | if (String.IsNullOrEmpty(toPath)) throw new ArgumentNullException("toPath"); 41 | 42 | Uri fromUri = new Uri(fromPath); 43 | Uri toUri = new Uri(toPath); 44 | 45 | Uri relativeUri = fromUri.MakeRelativeUri(toUri); 46 | String relativePath = Uri.UnescapeDataString(relativeUri.ToString()); 47 | 48 | return relativePath.Replace('/', Path.DirectorySeparatorChar); 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /LosslessAviRgbConverter/Form1.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 17, 17 122 | 123 | 124 | 379, 17 125 | 126 | 127 | 680, 17 128 | 129 | 130 | 500, 17 131 | 132 | -------------------------------------------------------------------------------- /LosslessAviRgbConverter/LosslessAviRgbConverter.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {76C69683-31A8-499A-A278-F52051FFAAA2} 8 | WinExe 9 | Properties 10 | LosslessAviRgbConverter 11 | LosslessAviRgbConverter 12 | v4.0 13 | 512 14 | 发布\ 15 | true 16 | Disk 17 | false 18 | Foreground 19 | 7 20 | Days 21 | false 22 | false 23 | true 24 | 0 25 | 1.0.0.%2a 26 | false 27 | false 28 | true 29 | 30 | 31 | AnyCPU 32 | true 33 | full 34 | false 35 | bin\Debug\ 36 | DEBUG;TRACE 37 | prompt 38 | 4 39 | 40 | 41 | AnyCPU 42 | pdbonly 43 | true 44 | bin\Release\ 45 | TRACE 46 | prompt 47 | 4 48 | 49 | 50 | LosslessAviRgbConverter.Program 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | Form 72 | 73 | 74 | Form1.cs 75 | 76 | 77 | 78 | 79 | True 80 | True 81 | Resource1.resx 82 | 83 | 84 | 85 | Form1.cs 86 | 87 | 88 | ResXFileCodeGenerator 89 | Resources.Designer.cs 90 | Designer 91 | 92 | 93 | True 94 | Resources.resx 95 | 96 | 97 | ResXFileCodeGenerator 98 | Resource1.Designer.cs 99 | 100 | 101 | SettingsSingleFileGenerator 102 | Settings.Designer.cs 103 | 104 | 105 | True 106 | Settings.settings 107 | True 108 | 109 | 110 | 111 | 112 | False 113 | Microsoft .NET Framework 4 %28x86 和 x64%29 114 | true 115 | 116 | 117 | False 118 | .NET Framework 3.5 SP1 Client Profile 119 | false 120 | 121 | 122 | False 123 | .NET Framework 3.5 SP1 124 | false 125 | 126 | 127 | False 128 | Windows Installer 4.5 129 | true 130 | 131 | 132 | 133 | 140 | -------------------------------------------------------------------------------- /LosslessAviRgbConverter/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Windows.Forms; 5 | 6 | namespace LosslessAviRgbConverter 7 | { 8 | static class Program 9 | { 10 | /// 11 | /// 应用程序的主入口点。 12 | /// 13 | [STAThread] 14 | static void Main() 15 | { 16 | Application.EnableVisualStyles(); 17 | Application.SetCompatibleTextRenderingDefault(false); 18 | Application.Run(new Form1()); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /LosslessAviRgbConverter/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // 有关程序集的常规信息通过以下 6 | // 特性集控制。更改这些特性值可修改 7 | // 与程序集关联的信息。 8 | [assembly: AssemblyTitle("LosslessAviRgbConverter")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("LosslessAviRgbConverter")] 13 | [assembly: AssemblyCopyright("Copyright © 2013")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // 将 ComVisible 设置为 false 使此程序集中的类型 18 | // 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, 19 | // 则将该类型上的 ComVisible 特性设置为 true。 20 | [assembly: ComVisible(false)] 21 | 22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 23 | [assembly: Guid("e00007a8-ea3a-4a7d-b2d8-8da14d1b3ede")] 24 | 25 | // 程序集的版本信息由下面四个值组成: 26 | // 27 | // 主版本 28 | // 次版本 29 | // 生成号 30 | // 修订号 31 | // 32 | // 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, 33 | // 方法是按如下所示使用“*”: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /LosslessAviRgbConverter/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本: 4.0.30319.18052 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace LosslessAviRgbConverter.Properties 12 | { 13 | 14 | 15 | /// 16 | /// 一个强类型的资源类,用于查找本地化的字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// 返回此类使用的、缓存的 ResourceManager 实例。 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LosslessAviRgbConverter.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// 为所有资源查找重写当前线程的 CurrentUICulture 属性, 56 | /// 方法是使用此强类型资源类。 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /LosslessAviRgbConverter/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /LosslessAviRgbConverter/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.18052 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace LosslessAviRgbConverter.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /LosslessAviRgbConverter/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /LosslessAviRgbConverter/Resource1.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.18052 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace LosslessAviRgbConverter { 12 | using System; 13 | 14 | 15 | /// 16 | /// 一个强类型的资源类,用于查找本地化的字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resource1 { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resource1() { 33 | } 34 | 35 | /// 36 | /// 返回此类使用的缓存的 ResourceManager 实例。 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LosslessAviRgbConverter.Resource1", typeof(Resource1).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// 使用此强类型资源类,为所有资源查找 51 | /// 重写当前线程的 CurrentUICulture 属性。 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// 查找类似 SetWorkingDir("$avspluginpath$") 65 | /// 66 | ///LoadPlugin("dither-1.23.0\avstp.dll") 67 | ///LoadPlugin("SmoothAdjust-v2.80\avs-2.6.x\x86\SmoothAdjust.dll") 68 | ///LoadPlugin("masktools-26-for-2.6alpha4\mt_masktools-26.dll") 69 | ///LoadPlugin("nnedi3-0.9.4\nnedi3.dll") 70 | ///Import("masktools-v2.0a48\masktools\LimitedSharpenFaster.avsi") 71 | ///Import("masktools-v2.0a48\masktools\mfToon-v0.54.avsi") 72 | ///Import("masktools-v2.0a48\masktools\vmToon-v0.74.avsi") 73 | ///LoadPlugin("dither-1.23.0\dither.dll") 74 | ///Import("dither-1.23.0\dither.avsi") 75 | ///Import("O16mod_ [字符串的其余部分被截断]"; 的本地化字符串。 76 | /// 77 | internal static string AvsScriptTemplete { 78 | get { 79 | return ResourceManager.GetString("AvsScriptTemplete", resourceCulture); 80 | } 81 | } 82 | 83 | /// 84 | /// 查找类似 --x264-binary "$x264execute$" --input-csp i444 --output-csp i444 --input-depth $depth$ --input-range pc --range pc --colormatrix $colormatrix$ --crf $crf$ --preset $preset$ $tune$ $userargs$ --output "$outputfile$" "$intputavs$" 的本地化字符串。 85 | /// 86 | internal static string x264Line { 87 | get { 88 | return ResourceManager.GetString("x264Line", resourceCulture); 89 | } 90 | } 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /LosslessAviRgbConverter/VedioConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace LosslessAviRgbConverter 7 | { 8 | public class VedioConfig 9 | { 10 | public float crf = 25f; 11 | public int depth = 10; 12 | public string preset = "slow"; 13 | public string tune = ""; 14 | public string UserArgs = ""; 15 | public bool Resize = false; 16 | public int Width = 1920; 17 | public int Height = 1080; 18 | public string InputColorMatrix = "RGB24"; 19 | public ColorMatrix ColorMatrix = ColorMatrix.bt709; 20 | 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # EasyX265EncoderGui 2 | 在原有的x264批量转码基础上转换为x265转码,这是一个方便使用的x265批量转码GUI,支持裸压,avs,x265 main10等操作。还附带了一些其他音频转码转封装的GUI工具。 3 | 4 | 目前在百度贴吧此帖更新发布版: 5 | http://tieba.baidu.com/p/3795315123 6 | -------------------------------------------------------------------------------- /TestConsole/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /TestConsole/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.IO; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace TestConsole 10 | { 11 | class Program 12 | { 13 | static void Main(string[] args) 14 | { 15 | VSx265(); 16 | } 17 | 18 | private static void x264tmod() 19 | { 20 | 21 | ProcessStartInfo processinfo = new ProcessStartInfo(); 22 | processinfo.FileName = "tools\\x264_64_tMod-8bit-all.exe"; 23 | 24 | processinfo.Arguments = " --demuxer lavf -o output1.mp4 \"E:\\BaiduYunDownload\\[13.10.28] 2013 한류드림콘서트 티아라 [ Number 9 + 빛(All the cast) ]-io.ts\""; 25 | processinfo.UseShellExecute = false; //输出信息重定向 26 | processinfo.CreateNoWindow = false; 27 | processinfo.RedirectStandardInput = false; 28 | processinfo.RedirectStandardOutput = false; 29 | processinfo.RedirectStandardError = false; 30 | processinfo.WindowStyle = ProcessWindowStyle.Normal; 31 | Process ffmpeg = new Process(); 32 | ffmpeg.StartInfo = processinfo; 33 | ffmpeg.Start(); 34 | 35 | //var result = ffmpeg.StandardOutput.ReadToEnd(); 36 | ffmpeg.WaitForExit(); 37 | //ffmpeg.Kill();//等待进程结束 38 | ffmpeg.Dispose(); 39 | } 40 | 41 | private static void ffmpegpipex264() 42 | { 43 | ProcessStartInfo processinfo = new ProcessStartInfo(); 44 | processinfo.FileName = Environment.GetEnvironmentVariable("ComSpec"); 45 | 46 | processinfo.Arguments = "/c " + "tools\\ffmpeg -i \"E:\\BaiduYunDownload\\[13.10.28] 2013 한류드림콘서트 티아라 [ Number 9 + 빛(All the cast) ]-io.ts\" " + 47 | "-f yuv4mpegpipe -pix_fmt yuv444p -an -v 0 -| tools\\x264_64_tMod-8bit-all.exe --output-csp i444 --demuxer y4m -o output1.mp4 -"; 48 | processinfo.UseShellExecute = false; //输出信息重定向 49 | processinfo.CreateNoWindow = false; 50 | processinfo.RedirectStandardInput = false; 51 | processinfo.RedirectStandardOutput = false; 52 | processinfo.RedirectStandardError = false; 53 | processinfo.WindowStyle = ProcessWindowStyle.Normal; 54 | Process ffmpeg = new Process(); 55 | ffmpeg.StartInfo = processinfo; 56 | ffmpeg.Start(); 57 | 58 | //var result = ffmpeg.StandardOutput.ReadToEnd(); 59 | ffmpeg.WaitForExit(); 60 | //ffmpeg.Kill();//等待进程结束 61 | ffmpeg.Dispose(); 62 | } 63 | 64 | private static void VSx265() 65 | { 66 | ProcessStartInfo processinfo = new ProcessStartInfo(); 67 | var bat = "\"D:\\Program Files (x86)\\VapourSynth\\core64\\vspipe.exe\" --y4m \"D:\\do.vpy\" - | \"D:\\简单x265批量转码\\tools\\x265-16bit-full.exe\" --y4m --preset medium --merange 25 --no-rect --no-sao --input-depth 10 -o \"somename.mkv\" - "; 68 | var tempfile = "12345.bat"; 69 | File.WriteAllText(tempfile, bat, Encoding.Default); 70 | processinfo.FileName = tempfile; 71 | Process ffmpeg = new Process(); 72 | ffmpeg.StartInfo = processinfo; 73 | ffmpeg.Start(); 74 | } 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /TestConsole/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // 有关程序集的常规信息通过以下 6 | // 特性集控制。更改这些特性值可修改 7 | // 与程序集关联的信息。 8 | [assembly: AssemblyTitle("TestConsole")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("TestConsole")] 13 | [assembly: AssemblyCopyright("Copyright © 2013")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // 将 ComVisible 设置为 false 使此程序集中的类型 18 | // 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, 19 | // 则将该类型上的 ComVisible 特性设置为 true。 20 | [assembly: ComVisible(false)] 21 | 22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 23 | [assembly: Guid("4dd871f9-0a50-45db-8204-92c26c88e39e")] 24 | 25 | // 程序集的版本信息由下面四个值组成: 26 | // 27 | // 主版本 28 | // 次版本 29 | // 生成号 30 | // 修订号 31 | // 32 | // 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, 33 | // 方法是按如下所示使用“*”: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /TestConsole/TestConsole.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {E9DBF248-8017-4E56-AF0A-860EC116F192} 8 | Exe 9 | Properties 10 | TestConsole 11 | TestConsole 12 | v4.5.1 13 | 512 14 | publish\ 15 | true 16 | Disk 17 | false 18 | Foreground 19 | 7 20 | Days 21 | false 22 | false 23 | true 24 | 0 25 | 1.0.0.%2a 26 | false 27 | false 28 | true 29 | 30 | 31 | AnyCPU 32 | true 33 | full 34 | false 35 | bin\Debug\ 36 | DEBUG;TRACE 37 | prompt 38 | 4 39 | false 40 | 41 | 42 | AnyCPU 43 | pdbonly 44 | true 45 | bin\Release\ 46 | TRACE 47 | prompt 48 | 4 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | False 69 | Microsoft .NET Framework 4.5 %28x86 and x64%29 70 | true 71 | 72 | 73 | False 74 | .NET Framework 3.5 SP1 Client Profile 75 | false 76 | 77 | 78 | False 79 | .NET Framework 3.5 SP1 80 | false 81 | 82 | 83 | 84 | 91 | -------------------------------------------------------------------------------- /ToolSet/CommandLine/Eac3toCommand.cs: -------------------------------------------------------------------------------- 1 | using CommonLibrary; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Diagnostics; 5 | using System.IO; 6 | using System.Linq; 7 | using System.Text; 8 | using ToolSet; 9 | 10 | 11 | public class Eac3toCommand 12 | { 13 | public static string Eac3toExecute = "tools" + Path.DirectorySeparatorChar + "eac3to.exe"; 14 | 15 | public static void ConvertMusic(string input, string output, string q, string tracker) 16 | { 17 | string bat = string.Format("{0} {3}: {1} -q {2}", input, q, output, tracker); 18 | ProcessCmd.Run(Eac3toExecute, bat); 19 | } 20 | } 21 | 22 | 23 | -------------------------------------------------------------------------------- /ToolSet/CommandLine/MkvMergeCommand.cs: -------------------------------------------------------------------------------- 1 | using CommonLibrary; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.IO; 5 | using System.Linq; 6 | using System.Text; 7 | 8 | namespace ToolSet 9 | { 10 | public class MkvMergeCommand 11 | { 12 | public static string MkvMergeExcute = "tools" + Path.DirectorySeparatorChar + "mkvmerge.exe"; 13 | 14 | public static void MkvMux(string vedio, string outfile) 15 | { 16 | 17 | string Arguments = $"--output {outfile.Maohao()} ( { vedio.Maohao()} )"; 18 | ProcessCmd.Run(MkvMergeExcute, Arguments); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /ToolSet/CommandLine/Mp4boxCommand.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Text; 6 | using CommonLibrary; 7 | 8 | namespace ToolSet 9 | { 10 | public class Mp4boxCommand 11 | { 12 | public static string Mp4boxExcute = "tools" + Path.DirectorySeparatorChar + "mp4box.exe"; 13 | 14 | public static void Extract(string filename, string ID) 15 | { 16 | ProcessCmd.Run(Mp4boxExcute, string.Format("{0 } -raw {1}", filename, ID)); 17 | } 18 | 19 | public static void Mp4boxMux(string vedio, string audio, string outfile, int audiodelay = 0) 20 | { 21 | 22 | string Arguments = string.Format("-add \"{1}\" -add \"{2}\" {3} \"{0}\"", 23 | outfile, vedio, audio, audiodelay == 0 ? "" : ("-delay 2=" + audiodelay) 24 | ); 25 | ProcessCmd.Run(Mp4boxExcute, Arguments); 26 | } 27 | 28 | 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /ToolSet/CommandLine/ffmpegCommand.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Text; 6 | using CommonLibrary; 7 | 8 | namespace ToolSet 9 | { 10 | public class ffmpegCommand 11 | { 12 | public static string FFmpegExecute = "tools" + Path.DirectorySeparatorChar + "ffmpeg.exe"; 13 | 14 | //分离视频文件 15 | public static void DemuxVedio(string vedio, string output) 16 | { 17 | ProcessCmd.Run(FFmpegExecute, string.Format(" -i {0} -vcodec copy -an {1} ", vedio.Maohao(), output.Maohao())); 18 | } 19 | 20 | //分离音频文件 21 | public static void DemuxAudio(string vedio, string output) 22 | { 23 | ProcessCmd.Run(FFmpegExecute, string.Format(" -i {0} -acodec copy -vn {1} ", vedio.Maohao(), output.Maohao())); 24 | } 25 | 26 | //转封装 27 | public static void ChangeMux(string vedio, string output) 28 | { 29 | ProcessCmd.Run(FFmpegExecute, string.Format("-i {0} -vcodec copy -acodec copy {1} ", vedio.Maohao(), output.Maohao())); 30 | } 31 | 32 | //混流 33 | public static void Mux(string vedio, string audio, string output) 34 | { 35 | ProcessCmd.Run(FFmpegExecute, string.Format(" -i {0} -vcodec copy -i {1} -acodec copy {3}", vedio.Maohao(), audio.Maohao(), output.Maohao())); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /ToolSet/Form1.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 17, 17 122 | 123 | 124 | 138, 17 125 | 126 | -------------------------------------------------------------------------------- /ToolSet/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Windows.Forms; 5 | 6 | namespace ToolSet 7 | { 8 | static class Program 9 | { 10 | /// 11 | /// 应用程序的主入口点。 12 | /// 13 | [STAThread] 14 | static void Main() 15 | { 16 | Application.EnableVisualStyles(); 17 | Application.SetCompatibleTextRenderingDefault(false); 18 | Application.Run(new Form1()); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /ToolSet/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // 有关程序集的常规信息通过以下 6 | // 特性集控制。更改这些特性值可修改 7 | // 与程序集关联的信息。 8 | [assembly: AssemblyTitle("ToolSet")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("ToolSet")] 13 | [assembly: AssemblyCopyright("Copyright © 2014")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // 将 ComVisible 设置为 false 使此程序集中的类型 18 | // 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, 19 | // 则将该类型上的 ComVisible 特性设置为 true。 20 | [assembly: ComVisible(false)] 21 | 22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 23 | [assembly: Guid("1e0c58ec-b31d-4094-a224-d776059a035c")] 24 | 25 | // 程序集的版本信息由下面四个值组成: 26 | // 27 | // 主版本 28 | // 次版本 29 | // 生成号 30 | // 修订号 31 | // 32 | // 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, 33 | // 方法是按如下所示使用“*”: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.1")] 36 | [assembly: AssemblyFileVersion("1.0.0.1")] 37 | -------------------------------------------------------------------------------- /ToolSet/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.34003 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace ToolSet.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// 一个强类型的资源类,用于查找本地化的字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// 返回此类使用的缓存的 ResourceManager 实例。 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ToolSet.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// 使用此强类型资源类,为所有资源查找 51 | /// 重写当前线程的 CurrentUICulture 属性。 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /ToolSet/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /ToolSet/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.34003 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace ToolSet.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ToolSet/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ToolSet/TextChangedEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace ToolSet 7 | { 8 | public class TextChangedEventArgs : EventArgs 9 | { 10 | private string test; 11 | 12 | public string Text 13 | { 14 | get { return test; } 15 | set { test = value; } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ToolSet/TextboxFile.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace ToolSet 2 | { 3 | partial class TextboxFile 4 | { 5 | /// 6 | /// 必需的设计器变量。 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// 清理所有正在使用的资源。 12 | /// 13 | /// 如果应释放托管资源,为 true;否则为 false。 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region 组件设计器生成的代码 24 | 25 | /// 26 | /// 设计器支持所需的方法 - 不要 27 | /// 使用代码编辑器修改此方法的内容。 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.btnbowser = new System.Windows.Forms.Button(); 32 | this.txtFileName = new System.Windows.Forms.TextBox(); 33 | this.SuspendLayout(); 34 | // 35 | // btnbowser 36 | // 37 | this.btnbowser.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 38 | this.btnbowser.Location = new System.Drawing.Point(372, 0); 39 | this.btnbowser.Name = "btnbowser"; 40 | this.btnbowser.Size = new System.Drawing.Size(56, 21); 41 | this.btnbowser.TabIndex = 0; 42 | this.btnbowser.Text = "浏览"; 43 | this.btnbowser.UseVisualStyleBackColor = true; 44 | this.btnbowser.Click += new System.EventHandler(this.btnbowser_Click); 45 | // 46 | // txtFileName 47 | // 48 | this.txtFileName.AllowDrop = true; 49 | this.txtFileName.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 50 | | System.Windows.Forms.AnchorStyles.Left) 51 | | System.Windows.Forms.AnchorStyles.Right))); 52 | this.txtFileName.Location = new System.Drawing.Point(0, 0); 53 | this.txtFileName.Name = "txtFileName"; 54 | this.txtFileName.Size = new System.Drawing.Size(366, 21); 55 | this.txtFileName.TabIndex = 1; 56 | this.txtFileName.TextChanged += new System.EventHandler(this.txtFileName_TextChanged); 57 | this.txtFileName.DragDrop += new System.Windows.Forms.DragEventHandler(this.txtFileName_DragDrop); 58 | this.txtFileName.DragEnter += new System.Windows.Forms.DragEventHandler(this.txtFileName_DragEnter); 59 | // 60 | // TextboxFile 61 | // 62 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 63 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 64 | this.Controls.Add(this.txtFileName); 65 | this.Controls.Add(this.btnbowser); 66 | this.Name = "TextboxFile"; 67 | this.Size = new System.Drawing.Size(428, 23); 68 | this.ResumeLayout(false); 69 | this.PerformLayout(); 70 | 71 | } 72 | 73 | #endregion 74 | 75 | private System.Windows.Forms.Button btnbowser; 76 | private System.Windows.Forms.TextBox txtFileName; 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /ToolSet/TextboxFile.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Drawing; 5 | using System.Data; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Windows.Forms; 9 | using System.IO; 10 | 11 | namespace ToolSet 12 | { 13 | public partial class TextboxFile : UserControl 14 | { 15 | public TextboxFile() 16 | { 17 | InitializeComponent(); 18 | } 19 | public override string Text 20 | { 21 | get 22 | { 23 | return this.txtFileName.Text; 24 | } 25 | set 26 | { 27 | this.txtFileName.Text = value; 28 | } 29 | } 30 | 31 | private void txtFileName_DragDrop(object sender, DragEventArgs e) 32 | { 33 | string[] s = (string[])e.Data.GetData(DataFormats.FileDrop, false); 34 | 35 | foreach (string path in s) 36 | { 37 | if (!File.GetAttributes(path).HasFlag(FileAttributes.Directory)) 38 | { 39 | txtFileName.Text = path; 40 | } 41 | 42 | } 43 | } 44 | 45 | private void txtFileName_DragEnter(object sender, DragEventArgs e) 46 | { 47 | if (e.Data.GetDataPresent(DataFormats.FileDrop)) 48 | e.Effect = DragDropEffects.All; 49 | else 50 | e.Effect = DragDropEffects.None; 51 | } 52 | private string filter = "所有文件|*"; 53 | public string Filter 54 | { 55 | set { filter = value; } 56 | get { return filter; } 57 | } 58 | private void btnbowser_Click(object sender, EventArgs e) 59 | { 60 | OpenFileDialog ofd = new OpenFileDialog(); 61 | ofd.Filter = filter; 62 | var result = ofd.ShowDialog(); 63 | if (result == System.Windows.Forms.DialogResult.OK) 64 | { 65 | foreach (string fullname in ofd.FileNames) 66 | { 67 | txtFileName.Text = fullname; 68 | } 69 | } 70 | } 71 | 72 | [EditorBrowsable(EditorBrowsableState.Always)] 73 | [Browsable(true)] 74 | public new event TextChangedEventHandler TextChanged; 75 | public delegate void TextChangedEventHandler(object sender, TextChangedEventArgs e); 76 | private void txtFileName_TextChanged(object sender, EventArgs e) 77 | { 78 | if (TextChanged != null) 79 | { 80 | TextChanged.Invoke(txtFileName, new TextChangedEventArgs() { Text = txtFileName.Text }); 81 | } 82 | } 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /ToolSet/TextboxFile.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /ToolSet/ToolSet.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {5D8E769A-283E-42F9-897D-ADCB4BD4258A} 8 | WinExe 9 | Properties 10 | ToolSet 11 | ToolSet 12 | v4.5.1 13 | 512 14 | 15 | 16 | 17 | 18 | AnyCPU 19 | true 20 | full 21 | false 22 | F:\Easyx265Gui\ 23 | DEBUG;TRACE 24 | prompt 25 | 0 26 | 27 | 28 | AnyCPU 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | 36 | 37 | 38 | ToolSet.Program 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | Form 63 | 64 | 65 | Form1.cs 66 | 67 | 68 | 69 | 70 | UserControl 71 | 72 | 73 | TextboxFile.cs 74 | 75 | 76 | 77 | Form1.cs 78 | 79 | 80 | ResXFileCodeGenerator 81 | Resources.Designer.cs 82 | Designer 83 | 84 | 85 | True 86 | Resources.resx 87 | True 88 | 89 | 90 | TextboxFile.cs 91 | 92 | 93 | 94 | SettingsSingleFileGenerator 95 | Settings.Designer.cs 96 | 97 | 98 | True 99 | Settings.settings 100 | True 101 | 102 | 103 | 104 | 105 | {ed4fd018-9180-40d3-8fde-fb191c99ae17} 106 | CommonLibrary 107 | 108 | 109 | {673734b7-2c76-4b2a-8261-0157c987c1a8} 110 | FlvBugger 111 | 112 | 113 | 114 | 121 | -------------------------------------------------------------------------------- /ToolSet/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | --------------------------------------------------------------------------------