Кол-во просмотров: 1
rtsp трансляция не заводилась. С ffmpeg уходила, а на гаджетах не отображалась. Чего только не подозревал и rtmp angie и сеть. Помогло следующее:
- На камере кодировку h265 изменил на h264.
- Сделал Frame Interval = FPS x 2 (например, «50» при FPS 25 кадров в сек).
Трансляция восстанавливается теперь сразу после перезапусков ffmpeg.
Пример рабочей команды ffmpeg:
ffmpeg -i "rtsp://user:pass@192.168.37.37/stream0" -i "http://195.91.237.50:8000/detskoe128" -vf "drawtext=fontfile=Symbola.ttf:textfile=pogoda.txt:reload=1:fontcolor=white:box=1:boxcolor=darkblue@0.7:fontsize=36:x=w-text_w:y=0" -c:v libx264 -preset fast -c:a aac -f flv "rtmp://192.168.37.1/live/z37"
Windows скрипт powershell, например stream_37.ps1:
# Логирование в файл для отслеживания работы скрипта
$logFile = "C:\ffmpeg\script_2026\stream_37.log"
Add-Content -Path $logFile -Value "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') - Проверка запуска ffmpeg..."
# Получаем все процессы ffmpeg
$ffmpegProcesses = Get-Process -Name "ffmpeg" -ErrorAction SilentlyContinue
$found = $false
if ($ffmpegProcesses) {
foreach ($process in $ffmpegProcesses) {
# Получаем командную строку процесса (требуется WMI)
$cmdLine = (Get-WmiObject Win32_Process -Filter "ProcessId = $($process.Id)").CommandLine
if ($cmdLine -match "192\.168\.37\.37") {
Add-Content -Path $logFile -Value "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') - Найден процесс ffmpeg с аргументом 192.168.37.120 (PID: $($process.Id))"
Write-Host "Найден процесс ffmpeg с аргументом 192.168.37.37" -ForegroundColor Green
Write-Host "ID процесса: $($process.Id)" -ForegroundColor Green
Write-Host "Командная строка: $cmdLine" -ForegroundColor Gray
$found = $true
break # Достаточно найти один подходящий процесс
}
}
}
# Если процесс с нужным аргументом не найден, запускаем новую команду
if (-not $found) {
Add-Content -Path $logFile -Value "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') - Процесс не найден. Запускаем новую команду..."
Write-Host "Процесс ffmpeg с аргументом 192.168.37.37 не найден. Запускаем новую команду..." -ForegroundColor Yellow
# Команда для запуска
$command = "ffmpeg -rtsp_transport tcp -use_wallclock_as_timestamps 1 -i 'rtsp://user:user@192.168.37.37/stream0' -i 'http://195.91.237.50:8000/detskoe128' -vf 'drawtext=fontfile='Symbola.ttf':textfile='pogoda.txt':reload=1:fontcolor=white:box=1:boxcolor=darkblue@0.7:fontsize=36:x=w-text_w:y=0' -c:v libx264 -preset fast -c:a aac -f flv 'rtmp://192.168.37.1/live/z37'"
try {
# Переходим в папку с ffmpeg
Set-Location "C:\ffmpeg\script_2026"
# Запускаем ffmpeg с вашими параметрами
ffmpeg -i "rtsp://user:user@192.168.37.37/stream0" `
-i "http://195.91.237.50:8000/detskoe128" `
-vf "drawtext=fontfile=Symbola.ttf:textfile=pogoda.txt:reload=1:fontcolor=white:box=1:boxcolor=darkblue@0.7:fontsize=36:x=w-text_w:y=0" `
-c:v libx264 -preset fast -c:a aac -f flv "rtmp://192.168.37.1/live/z37"
}
catch {
Write-Host "Ошибка при запуске команды: $($_.Exception.Message)" -ForegroundColor Red
}
} else {
Write-Host "Проверка завершена. Процесс уже работает." -ForegroundColor Cyan
}
Добавить в расписание винды:
Программа: powershell.exe
Аргументом: -ExecutionPolicy Bypass -File «C:\путь\к\вашему\скрипту\stream_37.ps1»
Источник: https://github.com/tcarrio/ffmpeg-streamcast/blob/master/bash_progress.sh