在Chrome上为本地Web应用程序流式传输Panasonic IP摄像头

时间:2014-01-23 18:55:39

标签: python video-streaming vlc live555

我正在尝试让我的Panosonic WV-SP306在我正在构建的Web应用程序的Chrome浏览器上流式传输。我可以让它通过其控制面板上的默认IE 9 / Windows设置进行流式传输。问题是我的客户端只会使用Chrome,我会在Mac上开发。

我已经决定尝试运行以下Python脚本的方法(从这里找到并修改它 - http://blog.mikemccandless.com/2013/11/pulling-h264-video-from-ip-camera-using.html但我先遇到几个问题。

  1. live555似乎是一个C ++库,我从未在此安装或开发过(在此之前始终是Java)。要使用这个库,我已经下载了它但不确定在哪里解压缩它。关于这一点的任何建议都会很棒。我在这个位置有我的Web应用程序的索引页面:/ Users / elizabethmcginnis / Documents / Titanium_Studio_Workspace / Knightscope NOC 1.5 / Resources / HTML

  2. 幸运的是,这也是我第一次编写python脚本。所以我相信那里也会有很多问题。这是一个完全愚蠢的问题,我道歉但是,任何人都可以帮助我从命令行运行这个脚本,以便我可以开始测试吗?

  3. 最后,我尝试通过VLC运行我的流,但是没有用,默认视图是IE上的ActiveX,我无法使用。如果其他人有另一种解决方案,我全都听见了。

  4. 谢谢! 伊丽莎白

    import time
    import sys
    import live555
    import threading
    
    # Shows how to use live555 module to pull frames from an RTSP/RTP
    # source.
    
    if len(sys.argv) != 5:
      print()
      print('Usage: python3 example.py 192.168.1.3 1 10 out.264')
      print()
      sys.exit(1)
    
    cameraIP = sys.argv[1]
    channel = sys.argv[2]
    seconds = float(sys.argv[3])
    fileOut = sys.argv[4]
    
    url = 'rtsp://192.168.1.3:34005@%s/h264/Streaming/channels/%s' % (cameraIP, channel)
    
    fOut = open(fileOut, 'wb')
    
    def oneFrame(codecName, bytes, sec, usec, durUSec):
      print('frame for %s: %d bytes' % (codecName, len(bytes)))
      fOut.write(b'\0\0\0\1' + bytes)
    
    # Starts pulling frames from the URL, with the provided callback:
    useTCP = False
    live555.startRTSP(url, oneFrame, useTCP)
    
    # Run Live555's event loop in a background thread:
    t = threading.Thread(target=live555.runEventLoop, args=())
    t.setDaemon(True)
    t.start()
    
    endTime = time.time() + seconds
    while time.time() < endTime:
      time.sleep(0.1)
    
    # Tell Live555's event loop to stop:
    live555.stopEventLoop()
    
    # Wait for the background thread to finish:
    t.join()
    

2 个答案:

答案 0 :(得分:0)

如果有任何帮助,

Usage: python3 example.py 192.168.1.3 1 10 out.264是如何从命令行运行的线索 python库中的C / C ++扩展通常是编译和编译的。使用python3 setup.py build从下载软件包顶部的目录中的命令行构建,然后至少在许多系统上安装sudo python3 setup.py install,但是对网站的检查给出了以下内容。

  

如何在Unix上配置和构建代码(包括Linux,Mac OS X,QNX和其他符合Posix的系统)

     

可以在此处找到源代码包(作为“.tar.gz”文件)。使用   “tar -x”和“gunzip”(或“tar -xz”,如果有的话)来提取   包;然后cd到“live”目录。然后跑       ./genMakefiles你的目标平台在哪里 - 例如,“linux”或“solaris” - 由a定义   “配置”。文件。这将生成一个Makefile   “live”目录和每个子目录。然后运行“make”。如果“制造”   如果失败,您可能需要对相应的内容进行少量修改   “配置”。文件,然后重新运行“genMakefiles   “。(例如,您可能需要添加另一个”-I“标志   COMPILE_OPTS定义。)有些人(特别是FreeBSD   用户)已报道GNU版本的“make” - 经常被称为   “gmake” - 比默认的预装版本更好   “使”。 (特别是,如果遇到,你应该尝试使用“gmake”   将问题与“ar”命令联系起来。)如果您使用的是“gcc”版本   3.0或更高版本:您可能还希望将-Wno-deprecated标志添加到CPLUSPLUS_FLAGS。如果没有“配置”。你的文件存在   目标平台,然后尝试使用其中一个现有文件作为   模板。如果您愿意,您还可以“安装”标题,库,   和运行“make install”的应用程序。

我还建议您查看pyopencv

答案 1 :(得分:0)

所以我解决了我的一半问题。

在松下软件部门的一些广泛问题和重新利用旧PC之间,我能够调整管理员的设置(不仅改变比特率,确保两个频道都在h264和http中播放,以及通过内部麦克风打开音频,显而易见我知道但是得到他们的帮助甚至进入管理面板很难)。所有这一切看起来都很明显,但你必须保存几次并且两个频道都存在问题。

好的,然后我可以通过VLC运行“开放网络频道”,只需输入此URL“rtsp:// LocalIP / MediaInput / h264”,然后打开向导中的Streaming / File设置即可确定它在本地流式传输。一旦我确认这适用于所有4台相机。我的下一步是同时运行所有四个。

我通过在Mac OSX Mavericks上使用这些命令从命令行运行所有四个来完成此操作:

$ alias vlc ='/ Applications / VLC.app / Contents / MacOS / VLC' $ vlc rtsp://192.168.1.6/MediaInput/h264

现在我正在尝试,但还没有完全通过马赛克完成它们的运行。我在这里包含了我的配置文件。一旦完成,我将尝试在网页上运行整个事情(我在eclipse中使用动态Web项目)。

启用新频道1广播 setup channel1输入rtsp://192.168.1.3/MediaInput/h264
设置channel1输出#duplicate {dst = mosaic-bridge {id = 1,height = 144,width = 180},select = video,dst = bridge-out {id = 1},select = audio}

启用了新的channel2广播 setup channel2输入rtsp://192.168.1.4/MediaInput/h264 设置channel2输出#duplicate {dst = mosaic-bridge {id = 2,height = 144,width = 180},select = video,dst = bridge-out {id = 2},select = audio}

启用了新的channel3广播 setup channel3输入rtsp://192.168.1.5/MediaInput/h264 设置channel3输出#duplicate {dst = mosaic-bridge {id = 3,height = 144,width = 180},select = video,dst = bridge-out {id = 3},select = audio}

启用了新的channel4广播 setup channel4输入rtsp://192.168.1.6/MediaInput/h264 设置channel4输出#duplicate {dst = mosaic-bridge {id = 3,height = 144,width = 180},select = video,dst = bridge-out {id = 4},select = audio}

启用新的后台广播 设置背景输入/ Users / xxx / Pictures / yyyy / ks logo.png 设置后台输出#transcode {sfilter = mosaic,vcodec = mp2v,vb = 10000,scale = 1}:bridge-in {delay = 400,id-offset = 100}:standard {access = udp,mux = ts,url = 239.255.12.42,树液,名字= “马赛克”}

控制背景播放 控制频道1播放 控制频道2播放 控制频道3播放 控制频道4播放