首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用powershell和rtmpdump监视rtmpdump提要

使用powershell和rtmpdump监视rtmpdump提要
EN

Stack Overflow用户
提问于 2013-08-27 08:45:13
回答 2查看 949关注 0票数 1

我试图使用powershell和rtmpdump监控实时电视频道rtmp提要。流,我想监视保存在"streams.txt“文件中,它遵循csv格式。

代码语言:javascript
运行
复制
Name,feed,file
tv1,rtmp://server/live/tv1,tv1.flv
tv2,rtmp://server/live/tv1,tv2.flv
tv3,rtmp://server/live/tv1,tv3.flv 
tv4,rtmp://server/live/tv1,tv4.flv

导入csv文件并转换对象中的数据后,我遍历每个对象,并使用feed属性启动rmtpdump命令,一旦该进程正常工作,powershell的其余部分就会停止。

为了解决这个问题,我尝试使用计时器,但当rtmpdump在循环中捕获第一个提要时,它们也没有解决我的问题。

代码语言:javascript
运行
复制
Register-ObjectEvent -InputObject $timer -EventName elapsed –SourceIdentifier  thetimer -Action $action 



$colStats = Import-CSV streams.txt
foreach ($objBatter in $colStats)
  {
    $timer.start()
    $objBatter.feed  + "," + $objBatter.file
    .\rtmpdump.exe -r $objBatter.feed -o $objBatter.file

  }



#to stop run 
$timer.stop() 
#cleanup 
Unregister-Event thetimer

#loop through flv files and all 0 bytes files are faulty channel

#deleting files with 0 size
#dir | ? {$_.length -eq 0} | del

我需要捕获提要的输出30秒回放,然后终止rtmpdump进程,在下一个循环迭代中,我希望捕获第二个提要30秒。

如果一个流不能工作,它将生成一个0字节的flv文件,我将在以后发送通知。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-07 06:13:06

代码语言:javascript
运行
复制
cls;
Set-Location "C:\users\najam.sikander\Desktop\rtmpdump"
#deleting flv files
dir *.flv | del
get-process -name rtmp* | kill
<#
$timer = new-object timers.timer 

$action = {
write-host "Time to kill rtmp: $(get-date -Format ‘HH:mm:ss’)"
#get-process -name rtmp* | kill
} 


$timer.Interval = 30000 #3 seconds  

Register-ObjectEvent -InputObject $timer -EventName elapsed –SourceIdentifier  thetimer -Action $action 

#>

$colStats = Import-CSV streams.txt
$files = (dir *.flv | measure).Count
Write-Host $files

While ($files -lt $colStats.Length)
{

$arguments = "-r " + $colStats[$files].feed + " -o " + $colStats[$files].file + " -m 20 -v"
Start-Process "C:\users\najam.sikander\Desktop\rtmpdump\rtmpdump.exe" $arguments   

do
{
    Write-Host $colStats[$files].feed
    Write-Host $colStats[$files].file
    $streaming = $true;

    $fileCh = (dir $colStats[$files].file | measure).Count

    Write-Host $files

    if($fileCh -gt 0)
    {
        while ((dir $colStats[$files].file).Length -lt 1000){
            $dump  = (get-process -name rtmp* | measure).Count
            if($dump -eq 0)
            {
                break
            }
        }
        $streaming = $false
        get-process -name rtmp* | kill
    }
}
while ( $streaming -eq $true)

$files = (dir *.flv | measure).Count
Write-Host $files
}


#getting working and not workign streams sets based on flv files
$working = dir *.flv | ? {$_.length -ge 1000} 
$notworking = dir *.flv | ? {$_.length -eq 0}  
Write-Host "working = " ($working |measure).Count
$working
Write-Host "not working = " ($notworking |measure).Count
$notworking

#deleting flv files
dir *.flv | del
票数 1
EN

Stack Overflow用户

发布于 2013-08-30 23:51:58

我相信这能做你想要的..。它将遍历csv文件,运行rempdump进程30秒,将其关闭,然后转到下一个提要。

代码语言:javascript
运行
复制
#Import the streams
$colStats = Import-CSV streams.txt

#Loop through the streams
foreach ($objBatter in $colStats)
{
    $Process = ".\rtmpdump.exe"
    $arguments = "-r $objBatter.feed -o $objBatter.file"

    #Launch Process
    $Ps = Start-Process -FilePath $Process -ArgumentList $Arguments -PassThru

    #Wait 30 seconds
    Sleep -Seconds 30

    #Kill the process
    $Ps.Kill()
}

#loop through flv files and all 0 bytes files are faulty channel

#deleting files with 0 size
#dir | ? {$_.length -eq 0} | del
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18460893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档