Compare commits
1 Commits
master
...
ffmpeg-msb
Author | SHA1 | Date | |
---|---|---|---|
|
6dbfd290fa |
6
.github/workflows/main.yml
vendored
6
.github/workflows/main.yml
vendored
@ -92,16 +92,12 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
dotnet-version: 9.0.x
|
dotnet-version: 9.0.x
|
||||||
|
|
||||||
- name: Download FFmpeg
|
|
||||||
if: ${{ matrix.bundle-ffmpeg }}
|
|
||||||
shell: pwsh
|
|
||||||
run: YoutubeDownloader/DownloadFFmpeg.ps1 -platform ${{ matrix.rid }}
|
|
||||||
|
|
||||||
- name: Publish app
|
- name: Publish app
|
||||||
run: >
|
run: >
|
||||||
dotnet publish YoutubeDownloader
|
dotnet publish YoutubeDownloader
|
||||||
-p:Version=${{ github.ref_type == 'tag' && github.ref_name || format('999.9.9-ci-{0}', github.sha) }}
|
-p:Version=${{ github.ref_type == 'tag' && github.ref_name || format('999.9.9-ci-{0}', github.sha) }}
|
||||||
-p:CSharpier_Bypass=true
|
-p:CSharpier_Bypass=true
|
||||||
|
-p:DownloadFFmpeg=${{ matrix.bundle-ffmpeg }}
|
||||||
--output YoutubeDownloader/bin/publish
|
--output YoutubeDownloader/bin/publish
|
||||||
--configuration Release
|
--configuration Release
|
||||||
--runtime ${{ matrix.rid }}
|
--runtime ${{ matrix.rid }}
|
||||||
|
68
YoutubeDownloader/Download-FFmpeg.ps1
Normal file
68
YoutubeDownloader/Download-FFmpeg.ps1
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
param (
|
||||||
|
[Parameter(Mandatory=$false)]
|
||||||
|
[string]$Platform,
|
||||||
|
|
||||||
|
[Parameter(Mandatory=$false)]
|
||||||
|
[string]$OutputPath
|
||||||
|
)
|
||||||
|
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
|
||||||
|
# If the platform is not specified, use the current OS/arch
|
||||||
|
if (-not $Platform) {
|
||||||
|
$arch = [Runtime.InteropServices.RuntimeInformation]::OSArchitecture
|
||||||
|
|
||||||
|
if ($isWindows) {
|
||||||
|
$Platform = "windows-$arch"
|
||||||
|
} elseif ($isLinux) {
|
||||||
|
$Platform = "linux-$arch"
|
||||||
|
} elseif ($isMacOS) {
|
||||||
|
$Platform = "osx-$arch"
|
||||||
|
} else {
|
||||||
|
throw "Unsupported platform"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Normalize platform identifier
|
||||||
|
$Platform = $Platform.ToLower().Replace("win-", "windows-")
|
||||||
|
$fileName = if ($Platform.Contains("windows-")) { "ffmpeg.exe" } else { "ffmpeg" }
|
||||||
|
|
||||||
|
# If the output path is not specified, use the current directory
|
||||||
|
if (-not $OutputPath) {
|
||||||
|
$OutputPath = "$PSScriptRoot/$fileName"
|
||||||
|
}
|
||||||
|
|
||||||
|
# If the output path is an existing directory, append the default file name for the platform
|
||||||
|
if (Test-Path $OutputPath -PathType Container) {
|
||||||
|
$OutputPath = Join-Path $OutputPath $fileName
|
||||||
|
}
|
||||||
|
|
||||||
|
# Delete the existing file if it exists
|
||||||
|
if (Test-Path $OutputPath) {
|
||||||
|
Remove-Item $OutputPath
|
||||||
|
}
|
||||||
|
|
||||||
|
# Download the archive
|
||||||
|
Write-Host "Downloading FFmpeg for $Platform..."
|
||||||
|
$http = New-Object System.Net.WebClient
|
||||||
|
try {
|
||||||
|
$http.DownloadFile("https://github.com/Tyrrrz/FFmpegBin/releases/download/7.0/ffmpeg-$Platform.zip", "$OutputPath.zip")
|
||||||
|
} finally {
|
||||||
|
$http.Dispose()
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
# Extract FFmpeg
|
||||||
|
Add-Type -Assembly System.IO.Compression.FileSystem
|
||||||
|
$zip = [IO.Compression.ZipFile]::OpenRead("$OutputPath.zip")
|
||||||
|
try {
|
||||||
|
[IO.Compression.ZipFileExtensions]::ExtractToFile($zip.GetEntry($fileName), $OutputPath)
|
||||||
|
} finally {
|
||||||
|
$zip.Dispose()
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "Done downloading FFmpeg."
|
||||||
|
} finally {
|
||||||
|
# Clean up
|
||||||
|
Remove-Item "$OutputPath.zip" -Force
|
||||||
|
}
|
@ -1,61 +0,0 @@
|
|||||||
param (
|
|
||||||
[string]$platform,
|
|
||||||
[string]$outputPath
|
|
||||||
)
|
|
||||||
|
|
||||||
$ErrorActionPreference = "Stop"
|
|
||||||
|
|
||||||
# If the platform is not specified, use the current OS/arch
|
|
||||||
if (-not $platform) {
|
|
||||||
$arch = [Runtime.InteropServices.RuntimeInformation]::OSArchitecture
|
|
||||||
|
|
||||||
if ($isWindows) {
|
|
||||||
$platform = "windows-$arch"
|
|
||||||
} elseif ($isLinux) {
|
|
||||||
$platform = "linux-$arch"
|
|
||||||
} elseif ($isMacOS) {
|
|
||||||
$platform = "osx-$arch"
|
|
||||||
} else {
|
|
||||||
throw "Unsupported platform"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Normalize platform identifier
|
|
||||||
$platform = $platform.ToLower().Replace("win-", "windows-")
|
|
||||||
|
|
||||||
# If the output path is not specified, use the current directory
|
|
||||||
if (-not $outputPath) {
|
|
||||||
$fileName = if ($platform.Contains("windows-")) { "ffmpeg.exe" } else { "ffmpeg" }
|
|
||||||
$outputPath = "$PSScriptRoot/$fileName"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Delete the existing file if it exists
|
|
||||||
if (Test-Path $outputPath) {
|
|
||||||
Remove-Item $outputPath
|
|
||||||
}
|
|
||||||
|
|
||||||
# Download the archive
|
|
||||||
Write-Host "Downloading FFmpeg for $platform..."
|
|
||||||
$http = New-Object System.Net.WebClient
|
|
||||||
try {
|
|
||||||
$http.DownloadFile("https://github.com/Tyrrrz/FFmpegBin/releases/download/7.0/ffmpeg-$platform.zip", "$outputPath.zip")
|
|
||||||
} finally {
|
|
||||||
$http.Dispose()
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
# Extract FFmpeg
|
|
||||||
Add-Type -Assembly System.IO.Compression.FileSystem
|
|
||||||
$zip = [IO.Compression.ZipFile]::OpenRead("$outputPath.zip")
|
|
||||||
try {
|
|
||||||
$fileName = If ($platform.Contains("windows-")) { "ffmpeg.exe" } Else { "ffmpeg" }
|
|
||||||
[IO.Compression.ZipFileExtensions]::ExtractToFile($zip.GetEntry($fileName), $outputPath)
|
|
||||||
} finally {
|
|
||||||
$zip.Dispose()
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Host "Done downloading FFmpeg."
|
|
||||||
} finally {
|
|
||||||
# Clean up
|
|
||||||
Remove-Item "$outputPath.zip" -Force
|
|
||||||
}
|
|
@ -12,6 +12,10 @@
|
|||||||
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
|
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<DownloadFFmpeg>true</DownloadFFmpeg>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<AvaloniaResource Include="..\favicon.ico" Link="favicon.ico" />
|
<AvaloniaResource Include="..\favicon.ico" Link="favicon.ico" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
@ -60,4 +64,9 @@
|
|||||||
<TrimmerRootAssembly Include="WebView.Core" />
|
<TrimmerRootAssembly Include="WebView.Core" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Target Name="DownloadFFmpeg" BeforeTargets="Restore;PreBuildEvent" Condition="$(DownloadFFmpeg) AND !Exists('ffmpeg.exe') AND !Exists('ffmpeg')">
|
||||||
|
<Exec Command="pwsh -ExecutionPolicy Bypass -File $(ProjectDir)/Download-FFmpeg.ps1 -Platform $(RuntimeIdentifier) -OutputPath $(ProjectDir)" LogStandardErrorAsError="true" Condition="'$(RuntimeIdentifier)' != ''" />
|
||||||
|
<Exec Command="pwsh -ExecutionPolicy Bypass -File $(ProjectDir)/Download-FFmpeg.ps1 -OutputPath $(ProjectDir)" LogStandardErrorAsError="true" Condition="'$(RuntimeIdentifier)' == ''" />
|
||||||
|
</Target>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
Loading…
x
Reference in New Issue
Block a user