Blackberry:如何在录制前设置视频分辨率

时间:2013-06-01 18:01:50

标签: java blackberry java-me

我需要以特定分辨率录制视频(尽可能少)。

private void startRecording(Player player, net.rim.device.api.ui.Manager parentManager)
{
    try
    {
        if (player == null)
        {
            player = javax.microedition.media.Manager.createPlayer("capture://video?encoding=video/3gpp");
            player.addPlayerListener(this);
            player.realize();

            RecordControl recordControl = (RecordControl) player.getControl("RecordControl");
            VideoControl videoControl = (VideoControl) player.getControl("VideoControl");

            if (videoControl != null)
            {
                final Field videoField = (Field)videoControl.initDisplayMode( VideoControl.USE_GUI_PRIMITIVE, "net.rim.device.api.ui.Field" );

                try
                {
                    videoControl.setDisplaySize(1, 1);
                }catch(Exception e)
                {
                    System.out.println(e);
                }
                videoControl.setVisible(true);
                UiApplication.getUiApplication().invokeLater(new Runnable() {
                    public void run()
                    {
                        if(parentManager != null)
                        {
                            if(videoField.getIndex() == -1)
                            {
                                parentManager.insert(videoField, 1);
                            }
                        }
                    }
                });
            }
        }   

        // here i get null
        CameraControl cameraControl = (CameraControl) player.getControl("CameraControl");
        int[] resolutions = cameraControl.getSupportedVideoResolutions();
        cameraControl.setVideoResolution(resolutions.length / 2 - 1);   

        recordControl.setRecordLocation("test.3gp");\
        recordControl.startRecord();    

        player.start();

    }catch(Exception e)
    {
        System.out.println(e);
    }
}

但由于某种原因(CameraControl) player.getControl("CameraControl");返回null

如何指定录制视频的分辨率?

P.S。黑莓OS 5.0,Torch 9800

更新

如果我使用

capture://video?encoding=video/3gpp&mode=mms

capture://video?encoding=video/3gpp&width=240&height=180&video_codec=MPEG-4&audio_codec=AMR

我在event=error方法

中获得了eventData=2PlayerListener.playerUpdate(Player player, String event, Object eventData)

eventData=2的说明我找到了here

  

参数无效:使用无效值指定参数。

有人可以解释为什么我的params不正确吗?

2 个答案:

答案 0 :(得分:2)

用户可以修改录音设置 - 在高端手机上有三种不同的质量等级,但录音机默认为最高质量。我试图将其设置为中等质量级别 - 640x480,但未能找到一种方法。

既然你要求最低质量,你可能会有一些运气。您可以指定“彩信”质量,视频录制质量非常低,这就是您想要的。

我引用了“RIM blackberry Record 3GP video”,表示将&mode=mms添加到播放器字符串会为您提供彩信质量。不幸的是,它似乎也将持续时间限制在30秒。

答案 1 :(得分:1)

以下链接可以帮助您:

Video Recording in Blackberry