# ========================================== # Einstellungen # ========================================== $FFmpegExe = "C:\PortableApps\LIVE\ffmpeg.exe" $Url = "http://zdf-hls-15.akamaized.net/hls/live/2016498/de/high/master.m3u8" $TargetFolder = "D:\Downloads_ZDF" # ========================================== # Zielordner anlegen # ========================================== if (-not (Test-Path $TargetFolder)) { New-Item -ItemType Directory -Path $TargetFolder | Out-Null } # ========================================== # Wie weit zurück? # ========================================== $BackTime = Read-Host "Wie weit zurueck? (hh:mm)" try { $tsBack = [TimeSpan]::Parse($BackTime) } catch { Write-Host "" Write-Host "Fehler: Ungueltiges Format!" Write-Host "Beispiel: 01:30 = 1 Stunde 30 Minuten" Pause exit } # ========================================== # Aufnahmedauer # ========================================== $Duration = Read-Host "Aufnahmedauer? (hh:mm)" try { $tsDuration = [TimeSpan]::Parse($Duration) } catch { Write-Host "" Write-Host "Fehler: Ungueltiges Format!" Write-Host "Beispiel: 00:45 = 45 Minuten" Pause exit } # ========================================== # Berechnungen # ========================================== $BackSeconds = [int]$tsBack.TotalSeconds $DurationSeconds = [int]$tsDuration.TotalSeconds # Maximal 3 Stunden Timeshift if ($BackSeconds -gt 10800) { Write-Host "" Write-Host "Fehler: Maximal 3 Stunden Ruecksprung moeglich!" Pause exit } # HLS-Segmente sind 2 Sekunden lang $SegmentsBack = [math]::Round($BackSeconds / 2) # ========================================== # Ausgabedatei erzeugen # ========================================== $Timestamp = Get-Date -Format "yyyy-MM-dd_HH-mm-ss" $OutputFile = Join-Path ` $TargetFolder ` "ZDF_$Timestamp.mp4" # ========================================== # Informationen anzeigen # ========================================== Write-Host "" Write-Host "=========================================" Write-Host "ZDF-Download wird gestartet" Write-Host "=========================================" Write-Host "Zurueckspringen : $BackTime" Write-Host "Aufnahmedauer : $Duration" Write-Host "Segmente : $SegmentsBack" Write-Host "Ausgabedatei : $OutputFile" Write-Host "=========================================" Write-Host "" # ========================================== # FFmpeg starten # ========================================== & $FFmpegExe ` -live_start_index -$SegmentsBack ` -i $Url ` -t $DurationSeconds ` -c copy ` $OutputFile # ========================================== # Ende # ========================================== Write-Host "" Write-Host "Download abgeschlossen." Pause