如何在HP touchpad上的webOS上使用命令行拍照?

如何在HP touchpad上的webOS上使用命令行拍照?,webos,touchpad,Webos,Touchpad,在webos上,我运行了openssh,希望使用命令行脚本拍摄一张照片 我怀疑这将包括一些luna发送命令,或者gst启动 但是我和医生的关系不太好 webos没有任何预期的捕获工具,但我可以访问/dev/video0设备 编辑:我注意到touchpad安装了ffmpeg实用程序,但它无法识别video4linux2格式 到目前为止,我正在用下面的代码尝试Gopherkhan的建议 luna-send -n 1 palm://com.palm.mediad.MediaCapture/startI

在webos上,我运行了openssh,希望使用命令行脚本拍摄一张照片

我怀疑这将包括一些luna发送命令,或者gst启动

但是我和医生的关系不太好

webos没有任何预期的捕获工具,但我可以访问/dev/video0设备

编辑:我注意到touchpad安装了ffmpeg实用程序,但它无法识别video4linux2格式

到目前为止,我正在用下面的代码尝试Gopherkhan的建议

luna-send -n 1 palm://com.palm.mediad.MediaCapture/startImageCapture \
'{"path":"/media/internal/foo1.png","options":[{"quality" \
:100,"flash":2,'reviewDuration':0,'exifData':{}}]}'
但它只是挂在那里什么也不做,过了一会儿就是这样说的

{"serviceName":"com.palm.mediad.MediaCapture","returnValue":false,"errorCode":-1 \
  ,"errorText":"com.palm.mediad.MediaCapture is not running."} \
(process:8534): LunaService-CRITICAL **: AppId msg type: 17

因此,使用luna发送进行此操作有点棘手,技术上不支持

您可能想点击MediaCapture库,可以在设备上找到:

/usr/palm/frameworks/enyo/0.10/framework/lib/mediacapture
要将其包含在您的enyo应用程序中,请在Dependes.js中删除以下内容:

"$enyo-lib/mediacapture/"
其中包括三个主要步骤

  • 初始化组件
  • 捕捉图像
  • 卸载设备
  • 以下是一个示例:

    在场景中声明组件

    {
                kind: "enyo.MediaCapture", name:"mediaCaptureObj", 
                onLoaded:"_setUpLoadedState", onInitialized:"_setUpInitializedState", 
                onImageCaptureStart:"_onImageCaptureStart", onImageCaptureComplete:"_onImageCaptureComplete",
             onAutoFocusComplete:"_onAutoFocusComplete", onError:"_handleError",
                onElapsedTime:"_onElapsedTime", onVuData:"_onVuDataChange", onDuration:"_onDuration"
    }
    
    调用初始化方法

    this.$.mediaCaptureObj.initialize(this.$.ViewPort);
    
    this.$.mediaCaptureObj.unload();
    
    在您的初始回调中

    使用属性包查找可用设备的数量。通常,描述为“摄像机/摄像机”、“前置麦克风”和“面向用户的摄像机”

    卸载设备

    this.$.mediaCaptureObj.initialize(this.$.ViewPort);
    
    this.$.mediaCaptureObj.unload();
    
    要使用旧的JS框架执行此操作,请参阅:

    现在,你可以用luna send做一些类似的事情,但我认为它在技术上不受支持。您可能在启动/保持媒体捕获服务等方面遇到问题。但是,如果您想尝试,您可以采取以下措施:

    1。获取媒体服务器实例——返回端口实例号

    luna-send -a your.app.id -i palm://com.palm.mediad/service/captureV3 '{"args":["subscribe":true]}'
    
    这将返回带有端口号的捕获服务位置,即la:

    {"returnValue":true, "location":"palm://com.palm.mediad.MediaCaptureV3_7839/"}
    
    因为这是一个订阅,所以不要终止请求。只要打开一个新的终端

    2。打开一个新的终端。使用步骤1中返回的“位置”作为新的服务uri:

    luna-send -a your.app.id -i palm://com.palm.mediad.MediaCaptureV3_7839/load '{"args":["video:1", {"videoCaptureFormat":{"bitrate":2000000,"samplerate":44100,"width":640,"height":480,"mimetype":"video/mp4","codecs":"h264,mp4a.40"},"imageCaptureFormat":{"bitrate":0,"samplerate":1700888,"width":640,"height":480,"mimetype":"image/jpeg","codecs":"jpeg"},"deviceUri":"video:1"}]}'
    
    你应该看到:

    {"returnValue":true}
    
    {"returnValue":true}
    
    如果呼叫正确完成。您可以安全地按ctrl+c组合键退出此调用

    3。拍照。(您可以在最后一次通话中按住ctrl+c键,只需在此处提供参数即可)

    同样,您应该看到:

    {"returnValue":true}
    
    {"returnValue":true}
    
    如果呼叫正确完成


    您应该会听到快门声,图像将显示在照片应用程序中的照片卷中。

    使用跨平台工具的另一个好处是使用gst启动管道。到目前为止,我已经成功地使用命令行启动了网络摄像头

    gst启动camsrc.src!视频/x-raw-yuv,宽度=320,高度=240,帧速率=30/1
    ! 掌上视频编码器!avimux name=mux!filesink location=test1.avi alsasrc!
    掌上音频编码器

    但不要拍一张照片

       gst-launch -v camsrc .src_still take-picture=1 flash-ctrl=2 ! fakesink dump=true
    

    但我无法让它识别.src_still选项卡。我将在继续操作时使用此替代方法更新此答案。

    我尝试过;luna send-n 1palm://com.palm.mediad.MediaCapture/startImageCapture “{”path:“/media/internal/foo1.png”,“options”:[{“quality”:100,“flash”:2,“reviewDuration”:0,“exifData”:“{}}]”无效,挂起在命令行上,对TouchPad没有可见的影响再次更新。还包括对luna发送的更好的描述。这在技术上应该是可行的。很明显,视频捕获大约需要一两个月的时间。好的,谢谢!这个过程是有效的。不过,第2步和第3步永远不会返回。有什么建议吗?基本上是因为他们建立了订阅。如果您是通过框架实现的,那么您必须通过一个卸载调用将它们全部杀死。我不知道您是希望在生产中这样做,还是只是为了测试,但您可以在x毫秒后取消第2次和第3次呼叫,或者只建立所有三次呼叫,然后在媒体/内部显示文件后取消。为了以防万一,我今天早上会再考一次。答案是