如何在 HP 触摸板上使用 webOS 命令行拍照?

2024-04-20

在 webos 上,我正在运行 openssh,并且想使用命令行脚本拍照。

我怀疑这将包括一些 luna-send 命令,或者 gst-launch

但我对文档没有任何运气。

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

编辑:我注意到触摸板安装了 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-sends 执行此操作有点棘手,并且在技术上不受支持。

您可能想要使用 MediaCapture 库,可以在设备上找到该库:

/usr/palm/frameworks/enyo/0.10/framework/lib/mediacapture

要将其包含在您的 enyo 应用程序中,请将以下内容放入您的 dependent.js 中:

"$enyo-lib/mediacapture/"

涉及三个主要步骤。

  1. 初始化组件
  2. 捕捉图像
  3. 卸载设备。

这是一个示例:

声明场景中的组件

{
            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);

在你的 onInitialized 回调中

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

var keyString;
for(var i = 0; i < this.pb.deviceKeys.length; i++)
{
    if(this.pb.deviceKeys[i].description.indexOf("Camera/Camcorder") >= 0)
    {
        keyString = this.pb.deviceKeys[i].deviceUri;
        break;
    }
}

if(keyString)
{
    var formatObj = {
                imageCaptureFormat: this.pb[keyString].supportedImageFormats[0]
            };

    this.$.mediaCaptureObj.load(keyString, formatObj);
}

拍个照.

var obj = {"exifData":"{\"make\": \"Palm\", \"model\": \"Pre3\", \"datetime\": \"2011:05:19 10:39:18\", \"orientation\": 1, \"geotag\": {}}","quality":90,"flash":"FLASH_ON"};

this.$.mediaCaptureObj.startImageCapture("", obj);

卸载设备:

this.$.mediaCaptureObj.unload();

要使用旧的 JS 框架执行此操作,请参阅:https://developer.palm.com/content/api/reference/javascript-libraries/media-capture.html https://developer.palm.com/content/api/reference/javascript-libraries/media-capture.html

现在,您可以使用 luna-send 执行类似的操作,但同样,我认为它在技术上不受支持。您可能在启动/保持媒体捕获服务等方面遇到问题。BUT,如果你想尝试,你可以这样做:

1. 获取媒体服务器实例--- 这将返回端口实例号

luna-send -a your.app.id -i palm://com.palm.mediad/service/captureV3 '{"args":["subscribe":true]}'

这将返回捕获服务的位置以及端口号,如下所示:

{"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}

如果调用正确完成。您可以安全地按 ctrl+c 退出此通话。

3. 拍照。(您可以按 ctrl+c 退出最后一次调用,然后在此处提供参数)

luna-send -a your.app.id -i palm://com.palm.mediad.MediaCaptureV3_7839/startImageCapture '{"args":["", {"exifData":"{\"orientation\": 1, \"make\": \"HP\", \"model\": \"TouchPad\", \"datetime\": \"2011:09:22 15:34:36\", \"geotag\": {}}","quality":90,"flash":"FLASH_DISABLED","orientation":"faceup"}]}'

再次,您应该看到:

{"returnValue":true}

如果调用正确完成。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 HP 触摸板上使用 webOS 命令行拍照? 的相关文章

随机推荐

  • 使用变量访问 JSON 值

    我正在尝试使用 jQuery 访问 JSON 数据并根据变量获取一组特定的值 我在使用 之前已经这样做过 但由于某种原因我无法弄清楚这次出了什么问题 我的 JSON 文件 由 getJSON 读取 并命名为 jsonmaker php 如下
  • 使用 swagger 或任何其他工具生成 Rest API 文档

    我正在寻找一种方法来记录我的 Rest API 我的服务器是 Tomcat Spring 服务器 Rest API 是使用 Jenkins 实现的 Swagger 似乎是一个非常酷的解决方案 但我不知道如何在我的代码中使用它 我正在寻找创建
  • Ecto 和 Elixir 的默认日期时间

    我今天刚刚开始使用 Elixir 和 Phoenix 我正在尝试添加 Ecto 作为映射器 但我在使用时间时遇到了一些问题 这是我的模型 schema users do field name string field email strin
  • Python 字符串不是不可变的吗?那为什么a + " " + b 会起作用呢?

    我的理解是 Python 字符串是不可变的 我尝试了以下代码 a Dog b eats c treats print a b c Dog eats treats print a b c Dog eats treats print a Dog
  • 在现有数据表中添加按顺序编号的新列的最佳方法

    我有一个非空数据表 添加另一列 从 1 开始按顺序编号 的最佳方法是什么 我尝试了以下代码 但没有成功 DataColumn dc new DataColumn Col1 dc AutoIncrement true dc AutoIncre
  • DIV 高度设置为屏幕百分比?

    我希望将父 DIV 设置为 100 屏幕高度的 70 我已经设置了以下 CSS 但它似乎没有做任何事情 body font family Noto Sans sans serif margin 0 auto height 100 width
  • 重载运算符 == 与 Equals()

    我正在开发一个 C 项目 到目前为止 我已经使用不可变对象和工厂来确保类型的对象Foo总是可以比较是否相等 Foo对象一旦创建就无法更改 并且工厂始终为给定的参数集返回相同的对象 这非常有效 并且在整个代码库中我们假设 始终致力于检查相等性
  • postgresql - 将布尔列添加到表集默认值

    这是正确的 postgresql 语法 可以将列添加到表中 默认值为false ALTER TABLE users ADD priv user BIT ALTER priv user SET DEFAULT 0 Thanks ALTER T
  • 突变观察者可以监听“数据”属性的变化吗?

    所以问题是我有一个 html 元素 它在 data 属性中有一个对象 通过 jQuery ofc 设置 并且我想监听该属性的更改 我已经尝试了很多事情 比如在MutationObserverInit 对象 https developer m
  • 什么时候使用 git rm -f ?

    我正在学习 Git 无法理解在发出 git rm 命令时使用 f 标志的条件 请解释一下需要 rm f 而不是仅 rm 的情况 解释 The f如果文件与您上次签出的提交不是最新的 则用于删除该文件 这是为了防止您删除已进行更改但尚未签入的
  • Javascript,如何读取本地文件?

    我尝试从服务器读取本地文件 我已经 谷歌 这个话题有一段时间了 有些人说这是不可能的 有些人说这是可以做到的 在搜索过程中我发现了这个脚本 使用 xmlhttprequest 读取文件 如果您的 javascript 应用程序的 HTML
  • 如何在 jQuery keyup 事件中实现 debounce fn?

    计算基于用户输入 标准是使用keyup而不是change or blur 问题是代码在每次击键时都会触发 而我需要它在 500 毫秒超时后仅延迟并触发一次 我下面的例子显然不起作用 附加了小提琴 我找到了大卫 沃尔什的dbounce功能 但
  • .NET 4 自旋锁

    以下测试代码 F 未返回我期望的结果 let safeCount let n 1000000 let counter ref 0 let spinlock ref lt SpinLock false let run i0 i1 for i
  • 在 Kotlin 中使用 Room 的 @ForeignKey 作为 @Entity 参数

    我遇到了一个房间tutorial https android jlelse eu android architecture components room relationships bf473510c14a这利用了 PrimaryKey类
  • 如何将 NSDictionary 转换为自定义对象

    我有一个 json 对象 interface Order NSObject property nonatomic retain NSString OrderId property nonatomic retain NSString Titl
  • Redhat 的 RHEL8 相当于“apk add --no-cache gcc musl-dev linux-headers”

    我正在尝试使用安装在 RedHat enterprise linux 7 8 映像上的 Python 上的 https docs docker com compose gettingstarted 中的示例代码 此行出现错误 127 RUN
  • 在不阻塞的情况下“通知”处理器的正确方法是什么?

    假设我有很多东西 我必须对所有这些东西进行一些操作 如果一个元素的操作失败 我想停止整个阵列的工作 这项工作分布在多个处理器上 我想实现这一目标 同时将发送 接收的消息数量保持在最低限度 另外 如果没有必要 我不想阻止处理器 我该如何使用
  • Rails 6+、zeitwerk 自动加载器和命名空间常量

    Rails 6 默认自动加载器是 zeitwerk 这似乎比以前的方法有了很大的改进 然而 zeitwork 遵循 Rails 项目的惯例 即任何内容app 是自动加载的 不需要命名空间 这非常适合app models user rb因为你
  • VM1550 installHook.js:1860 在控制台中记录为双行

    我正在使用反应应用程序并构建一个简单的应用程序 当我使用 console log 方法在控制台上记录某些内容时 控制台上会出现第二条日志 它似乎来自第 1860 行的文件名 installHook js 我已经尝试过寻找它 但我没有找到 我
  • 如何在 HP 触摸板上使用 webOS 命令行拍照?

    在 webos 上 我正在运行 openssh 并且想使用命令行脚本拍照 我怀疑这将包括一些 luna send 命令 或者 gst launch 但我对文档没有任何运气 webos 没有任何预期的捕获工具 但我可以访问 dev video