【问题标题】:Sony Camera Remote API, How can I show/use liveview-stream data with VB.net (use of Sony QX1)Sony Camera Remote API,如何使用 VB.net 显示/使用 liveview-stream 数据(使用 Sony QX1)
【发布时间】:2015-07-01 07:20:12
【问题描述】:

我正在为 VB.net 中远程使用索尼相机(我使用 QX1,但型号应该无关紧要)编写一个小软件。我可以通过将 JSON 命令发送到相机来制作图片,也可以使用包含在 JSON 命令中的方法“startLiveview”来启动实时视图流。作为回报,我得到了下载直播的地址,例如http://192.168.122.1:8080/liveview/liveviewstream(包装在 JSON 答案中)。

根据 Sony CameraRemote-API-reference,这是一个包含一些标头数据和单个 jpeg 数据的流。但它似乎不是 MJPEG 流。我可以通过我的浏览器的直播链接,它开始无限下载直播。我无法使用 VLC 之类的 MJPEG 流播放器显示流。

我的问题是,如何使用 VB.net 过滤掉 jpeg 数据,或者如何显示直播。

an older question 已经发布了类似的问题,但没有任何回复。所以我再试一次。

【问题讨论】:

    标签: vb.net camera mjpeg sony-camera-api liveview


    【解决方案1】:

    这是我的方式,我使用 ffserver 来制作视频流。 这是我的配置 ffserver 配置(server.conf):

    Port 8090
    BindAddress 0.0.0.0
    MaxHTTPConnections 2000
    MaxClients 1000
    MaxBandwidth 10000
    
    CustomLog -
    
    <Feed feed1.ffm>
     File /tmp/feed1.ffm
     FileMaxSize 1G
     ACL allow 127.0.0.1
    </Feed>
    
    <Stream cam.webm>
      Feed feed1.ffm
      Format webm
    
      VideoCodec libvpx
      VideoSize vga
      VideoFrameRate 25
      AVOptionVideo flags +global_header  
    
      StartSendOnKey
      NoAudio
      preroll 5
      VideoBitRate 400
    </Stream>
    
    <Stream status.html>
      Format status
      ACL allow localhost
      ACL allow 192.168.0.0 192.168.255.255
    </Stream>
    

    然后我使用该配置运行 ffserver:

    ffserver -f server.conf 
    

    然后对来自sony liveview的视频进行编码,并通过ffserver进行播放:

    ffmpeg -i http://192.168.122.1:8080/liveview/liveviewstream -vcodec libvpx -fflags nobuffer -an http://127.0.0.1:8090/feed1.ffm
    

    之后,您可以从该地址流式传输实时取景 localhost:8090/cam.webm

    【讨论】:

    • 哦,听起来不错。但不幸的是,据我谷歌搜索,ffserver 仅适用于 Linux。有没有办法在windows下使用?
    【解决方案2】:

    (我在终端中使用带有 linux 的笔记本电脑)

    1. 安装 GSTREAMER:

    sudo apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0- doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio

    1. 修复您的相机参数以启用智能手机控制,例如我网络上相机的ssd是DIRECT-dpC3:DSC-RX100M5A

    2. 使用 Wifi 将您的计算机直接连接到您的相机

    3. 使用以下命令告诉您的相机开始实时查看:

      curl http://192.168.122.1:10000/sony/camera -X POST -H 'Content- type:application/json' --data '{ "method": "startLiveview", "params": [], "id": 1, "version" : "1.0"}'

    4. 注意摄像头的响应是一个 URL:我的是:

      {"id":1,"result":["http://192.168.122.1:60152/liveviewstream?%211234%21%2a%3a%2a%3aimage%2fjpeg%3a%2a%21%21 %21%21%21"]}

    5. 告诉 gstreamer 使用这个 URL:

      gst-launch-1.0 汤httpsrc location=http://192.168.122.1:60152/liveviewstream?%211234%21%2a%3a%2a%3aimage%2fjpeg%3a%2a%21%21%21%21% 21! JPEG格式!自动视频接收器

    7;享受;-)

    【讨论】:

      【解决方案3】:

      我尝试使用 ffmpeg 处理流媒体,并成功将流媒体保存为 flv 文件。 我在终端上使用此代码(我使用 UNIX)并成功将文件保存为 flv 文件:

      ffmpeg -i http://192.168.122.1:8080/liveview/liveviewstream -vcodec flv -qscale 1 -an output.flv
      

      也许您可以根据需要对其进行修改或优化。

      【讨论】:

      • 谢谢。它只有一点点帮助。在 ffmpeq 的输出中,我可以读到源是“mjpeg, yuvj422p(pc, bt470bg/unknown/unknown)” -stream。我不确定这意味着什么。如何使用 VB.net 播放这样的流?
      • 我不是 VB.net 程序员,我不知道如何在 VB.net 上执行此操作,但主要思想是通过 VB.net 上的网络进行流式传输。我可以在浏览器或 vlc 播放器中流式传输视频。我使用 ffserver。
      【解决方案4】:

      在 VLC 中为我添加 .mjpg 到 URL 试试这个。等待秒,应该播放http://192.168.122.1:8080/liveview/liveviewstream.mjpg

      【讨论】:

        猜你喜欢
        • 2015-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多