ffmpeg implemented
This commit is contained in:
71
scripts/download-ffmpeg.ps1
Normal file
71
scripts/download-ffmpeg.ps1
Normal file
@@ -0,0 +1,71 @@
|
||||
param(
|
||||
[string]$Url = "https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-essentials.zip",
|
||||
[string]$OutDir = "tools/ffmpeg/bin",
|
||||
[switch]$DryRun
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$isWindows = $env:OS -eq 'Windows_NT'
|
||||
if (-not $isWindows) {
|
||||
Write-Host "This script is intended for Windows (ffmpeg.exe)." -ForegroundColor Yellow
|
||||
exit 1
|
||||
}
|
||||
|
||||
$repoRoot = (Resolve-Path (Join-Path $PSScriptRoot "..")).Path
|
||||
$outDirAbs = (Resolve-Path (Join-Path $repoRoot $OutDir) -ErrorAction SilentlyContinue)
|
||||
if (-not $outDirAbs) {
|
||||
$outDirAbs = Join-Path $repoRoot $OutDir
|
||||
New-Item -ItemType Directory -Force -Path $outDirAbs | Out-Null
|
||||
} else {
|
||||
$outDirAbs = $outDirAbs.Path
|
||||
}
|
||||
|
||||
$ffmpegDest = Join-Path $outDirAbs "ffmpeg.exe"
|
||||
|
||||
# If already present, do nothing.
|
||||
if (Test-Path $ffmpegDest) {
|
||||
Write-Host "FFmpeg already present: $ffmpegDest"
|
||||
exit 0
|
||||
}
|
||||
|
||||
if ($DryRun) {
|
||||
Write-Host "Dry run:" -ForegroundColor Cyan
|
||||
Write-Host " Would download: $Url"
|
||||
Write-Host " Would install to: $ffmpegDest"
|
||||
exit 0
|
||||
}
|
||||
|
||||
Write-Host "About to download a prebuilt FFmpeg package:" -ForegroundColor Cyan
|
||||
Write-Host " $Url"
|
||||
Write-Host "You are responsible for reviewing the FFmpeg license/compliance for your use case." -ForegroundColor Yellow
|
||||
|
||||
$tempRoot = Join-Path $env:TEMP ("radioplayer-ffmpeg-" + [guid]::NewGuid().ToString("N"))
|
||||
$zipPath = Join-Path $tempRoot "ffmpeg.zip"
|
||||
$extractDir = Join-Path $tempRoot "extract"
|
||||
|
||||
New-Item -ItemType Directory -Force -Path $tempRoot | Out-Null
|
||||
New-Item -ItemType Directory -Force -Path $extractDir | Out-Null
|
||||
|
||||
try {
|
||||
Write-Host "Downloading..." -ForegroundColor Cyan
|
||||
Invoke-WebRequest -Uri $Url -OutFile $zipPath -UseBasicParsing
|
||||
|
||||
Write-Host "Extracting..." -ForegroundColor Cyan
|
||||
Expand-Archive -Path $zipPath -DestinationPath $extractDir -Force
|
||||
|
||||
$candidate = Get-ChildItem -Path $extractDir -Recurse -Filter "ffmpeg.exe" | Where-Object {
|
||||
$_.FullName -match "\\bin\\ffmpeg\.exe$"
|
||||
} | Select-Object -First 1
|
||||
|
||||
if (-not $candidate) {
|
||||
throw "Could not find ffmpeg.exe under extracted content. The archive layout may have changed."
|
||||
}
|
||||
|
||||
Copy-Item -Force -Path $candidate.FullName -Destination $ffmpegDest
|
||||
|
||||
Write-Host "Installed FFmpeg to: $ffmpegDest" -ForegroundColor Green
|
||||
Write-Host "Next: run 'node tools/copy-ffmpeg.js' (or 'npm run dev:native' / 'npm run build') to bundle it into src-tauri/resources/." -ForegroundColor Green
|
||||
} finally {
|
||||
try { Remove-Item -Recurse -Force -Path $tempRoot -ErrorAction SilentlyContinue } catch {}
|
||||
}
|
||||
Reference in New Issue
Block a user