Skip to content
This repository has been archived by the owner on Feb 2, 2019. It is now read-only.

Commit

Permalink
Installer
Browse files Browse the repository at this point in the history
  • Loading branch information
CherryPerry committed Jul 12, 2015
1 parent cee1ebf commit 68d01cb
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 91 deletions.
23 changes: 18 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,19 @@
[СКАЧАТЬ БЕСПЛАТНО БЕЗ СМС]

####Запуск
Перед запуском установи ffmpeg, добавь путь к самому vp9.exe (для удобства) и к ffmpeg.exe (для работы приложения) в Path, настрой фонтконфиг. Можешь воспользоваться [установщиком] или [гайдом].
Перед запуском установи ffmpeg, добавь путь к самому vp9.exe (для удобства) и к ffmpeg.exe, ffprobe.exe (для работы приложения) в Path, настрой фонтконфиг. Можешь воспользоваться [установщиком] или [гайдом].
**ИЛИ**
Запусти скачанный vp9.exe из консоли, запущенной с правами Админстатора, с ключом -install.
```
vp9 -install
```
Программа:
- Качает архивчик с zeranoe ffmpeg под текущую архитектуру (x86 или x86_64)
- Распаковывает в папку установки (C:\Program Files\FFMPEG Compact)
- Прописывает в Path путь до папки установки (можно запускать ffmpeg, ffprobe, vp9 из любой папки)
- Настраивает fontconfig для хардсаба (задает системные переменные и создает fonts.conf)
- Копирует vp9.exe в папку установки

Не забудь поставить .net framework 4.5!

####Кодирование
Expand All @@ -20,9 +32,6 @@ vp9 -file "1.mkv" -subs "1.ass" -ss 01:00.000 -to 01:30.000
vp9
```

####Зачем права админа?
Запускаем и пишем в рандомные папки, может не оказаться прав.

####Замечания по командам
#####-t и -ti
Можно кодить параллельно несколько webm из одного исходника. Для этого создай файл с любым названием следующего содержания:
Expand All @@ -32,7 +41,7 @@ vp9
```
Далее запусти vp9.exe с следующими аргументами:
```
vp9 -file 1.mkv -t имя_файла_времени
vp9 -file 1.mkv -t тайминги.txt
```
Для того, чтобы сделать конкретно какую-то сторчку из файла, добавь -ti № строки (или строк через запятую), считая от 0.
#####-alimit и -limit
Expand Down Expand Up @@ -71,9 +80,13 @@ vp9 -file "1.mkv" -crop
####Сторонние библиотеки
- [YoutubeExtractor] MIT License
- [Json.NET] MIT license
- [Html Agility Pack] Microsoft Public License
- [SharpCompress] Microsoft Public License

[СКАЧАТЬ БЕСПЛАТНО БЕЗ СМС]:https://github.com/CherryPerry/ffmpeg-vp9-wrap/releases
[установщиком]:https://github.com/CherryPerry/zeranoe-ffmpeg-update-csharp
[гайдом]:https://github.com/pituz/webm-thread/wiki/installing-ffmpeg-on-windows
[YoutubeExtractor]:https://github.com/flagbug/YoutubeExtractor
[Json.NET]:http://www.newtonsoft.com/json
[Html Agility Pack]:https://htmlagilitypack.codeplex.com/
[SharpCompress]:https://sharpcompress.codeplex.com/
36 changes: 12 additions & 24 deletions VpxEncode/FfmpegLoader.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
using HtmlAgilityPack;
using SharpCompress.Archive.SevenZip;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
Expand All @@ -15,29 +13,16 @@ namespace VpxEncode
{
class FfmpegLoader
{
private const string ZERANOE_WEB = "http://ffmpeg.zeranoe.com/builds/", SUBFOLDER = "vp9 files";
private const string ZERANOE_WEB = "http://ffmpeg.zeranoe.com/builds/";

public string FolderPath { get; private set; }

public FfmpegLoader()
{
string exeLocation = Assembly.GetExecutingAssembly().Location;
FolderPath = exeLocation;
FolderPath = @"C:\Program Files\FFMPEG Compact\";
}

public bool CheckFfmpeg()
{
Executer execute = new Executer("where");
string result = execute.Execute("/F " + Executer.FFMPEG);
return result.Contains('\\');
}

public bool CheckFontConfig()
{
return true;
}

public async Task Update()
public async Task Install()
{
Console.WriteLine("Getting link to latest ffmpeg");
string link = await GetLinkFromWebPage();
Expand All @@ -51,16 +36,19 @@ public async Task Update()
{
SevenZipArchiveEntry f = archive.Entries.First(x => x.Key.Contains(file));
string name = f.Key.Substring(f.Key.LastIndexOf('/') + 1);
CheckDirAndCreate(FolderPath + SUBFOLDER);
CheckDirAndCreate(FolderPath);
using (Stream entryStream = f.OpenEntryStream())
using (FileStream fileStream = File.OpenWrite(Path.Combine(FolderPath, SUBFOLDER, name)))
using (FileStream fileStream = File.OpenWrite(Path.Combine(FolderPath, name)))
await entryStream.CopyToAsync(fileStream);
}
}
Console.WriteLine("Update enviroment");
UpdateEnvironment();
SetEnvironment();
Console.WriteLine("Set fontconfig");
FontConfig();
SetFontConfig();
Console.WriteLine("Copying vp9.exe to " + FolderPath);
string location = System.Reflection.Assembly.GetEntryAssembly().Location;
File.Copy(location, Path.Combine(FolderPath, Path.GetFileName(location)));
}

private async Task<String> GetLinkFromWebPage()
Expand Down Expand Up @@ -104,7 +92,7 @@ private async Task<MemoryStream> Download(string link)
}
}

private void UpdateEnvironment()
private void SetEnvironment()
{
StringBuilder current = new StringBuilder(Environment.GetEnvironmentVariable("Path", EnvironmentVariableTarget.Machine));
if (!current.Contains(FolderPath))
Expand All @@ -117,7 +105,7 @@ private void UpdateEnvironment()
}
}

private void FontConfig()
private void SetFontConfig()
{
string fontDir = FolderPath + "fonts",
fontFile = fontDir + "\\fonts.conf",
Expand Down
13 changes: 11 additions & 2 deletions VpxEncode/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ partial class Arg
OPUS_RATE = "opusRate", NAME_PREFIX = "name",
AUDIO_FILE = "af", AUTOLIMIT = "alimit",
AUTOLIMIT_DELTA = "alimitD", AUTOLIMIT_HISTORY = "alimitS",
YOUTUBE = "youtube", CROP = "crop";
YOUTUBE = "youtube", CROP = "crop",
INSTALL = "install";
}

static class ArgList
Expand Down Expand Up @@ -59,7 +60,8 @@ static class ArgList
{ Arg.PREVIEW, new Arg(Arg.PREVIEW, null, "{00:00.000|00:00:00.000|0} кадр для превью") },
{ Arg.PREVIEW_SOURCE, new Arg(Arg.PREVIEW_SOURCE, null, "{string} файл для превью, если нет, то берется из -file") },
{ Arg.YOUTUBE, new Arg(Arg.YOUTUBE, null, "{string} ссылка на видео с ютуба") },
{ Arg.CROP, new Arg(Arg.CROP, null, "обрезка черных полос", false) }
{ Arg.CROP, new Arg(Arg.CROP, null, "обрезка черных полос", false) },
{ Arg.INSTALL, new Arg(Arg.INSTALL, null, "установка ffmpeg в систему (только при запуске от имени Администратора)", false) }
};

public static void Parse(string[] args)
Expand Down Expand Up @@ -160,6 +162,13 @@ public static void Main(string[] args)

ArgList.Parse(args);

if (ArgList.Get(Arg.INSTALL))
{
FfmpegLoader loader = new FfmpegLoader();
Task.WaitAll(loader.Install());
return;
}

if (ArgList.Get(Arg.YOUTUBE))
{
DownloadVideo();
Expand Down
4 changes: 2 additions & 2 deletions VpxEncode/VpxEncode.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,9 @@
<PropertyGroup>
<StartupObject>VpxEncode.Program</StartupObject>
</PropertyGroup>
<PropertyGroup />
<PropertyGroup>
<ApplicationManifest>app.manifest</ApplicationManifest>
<NoWin32Manifest>true</NoWin32Manifest>
</PropertyGroup>
<ItemGroup>
<Reference Include="HtmlAgilityPack, Version=1.4.9.0, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a, processorArchitecture=MSIL">
Expand Down Expand Up @@ -100,7 +101,6 @@
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="app.manifest" />
<None Include="packages.config" />
<None Include="Resources\fonts.conf" />
</ItemGroup>
Expand Down
58 changes: 0 additions & 58 deletions VpxEncode/app.manifest

This file was deleted.

0 comments on commit 68d01cb

Please sign in to comment.