3

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
4

2 に答える 2

2

したがって、これを luna-sends で行うのは少しトリッキーで、技術的にサポートされていません。

おそらく、デバイスの次の場所にある MediaCapture ライブラリにアクセスしたいと思うでしょう。

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

enyo アプリに含めるには、depends.js に以下をドロップします。

"$enyo-lib/mediacapture/"

関係する主な手順は 3 つあります。

  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 を参照してください。

現在、luna-send で同様のことができますが、技術的にサポートされていないと思います。メディア キャプチャ サービスなどの起動/維持に問題があるかもしれませんが、試してみたい場合は、次のような方法があります。

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}

呼び出しが正しく完了した場合。

シャッター クリック音が聞こえ、写真アプリのフォト ロールに画像が表示されます。

于 2011-09-22T05:03:50.577 に答える
0

クロス プラットフォーム ツールを使用する利点が得られる代替手段として、gst-launch パイプラインを使用する方法があります。これまでのところ、コマンド ラインを使用して Web カメラを起動することができました。

gst-launch camsrc .src ! video/x-raw-yuv,width=320,height=240,framerate=30/1 ! palmvideoencoder ! avimux name=mux ! filesink location=test1.avi alsasrc ! palmaudioencoder

単一の画像を撮らないでください。

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

しかし、.src_still タブを認識できません。続行するにつれて、この代替方法でこの回答を更新します。

于 2011-09-23T08:24:04.000 に答える