Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 存储MediaPlayer的内容(QML/Qt)_Android_C++_Qt_Qml - Fatal编程技术网

Android 存储MediaPlayer的内容(QML/Qt)

Android 存储MediaPlayer的内容(QML/Qt),android,c++,qt,qml,Android,C++,Qt,Qml,我正在使用Qt开发一个电话应用程序。在我的整个应用程序中,我使用了 Qt+C++类,但在某个时候,我在应用程序中必须使用 QtQML类型为电话相机功能< /强>,现在我可以在 MIDApPoovis/COD>上显示相机的内容。我想知道是否可以将此内容以.mp4文件或任何其他格式保存在手机存储器中 下面是我在MediaPlayer上显示此内容的一段代码: import QtQuick 2.0 import QtMultimedia 5.0 Item { id: videoPreview

我正在使用
Qt
开发一个电话应用程序。在我的整个应用程序中,我使用了 Qt+C++类,但在某个时候,我在应用程序中必须使用<代码> QtQML类型为电话<强>相机功能< /强>,现在我可以在<代码> MIDApPoovis/COD>上显示相机的内容。我想知道是否可以将此内容以
.mp4
文件或任何其他格式保存在手机存储器中

下面是我在
MediaPlayer
上显示此内容的一段代码:

import QtQuick 2.0
import QtMultimedia 5.0

Item {
    id: videoPreview
    property alias source : player.source
    signal closed

    MediaPlayer {

        id: player
        autoPlay: true

        onStatusChanged: {
            if (status == MediaPlayer.EndOfMedia)
                videoPreview.closed();
        }
    }

    VideoOutput {
        source: player
        anchors.fill : parent
    }

    MouseArea {
        anchors.fill: parent
        onClicked: {
            videoPreview.closed();
        }
    }
}
我非常感谢任何提示或帮助,因为我是
QML类型的初学者

这是我的主要QML文件

import QtQuick 2.0
import QtMultimedia 5.4

Rectangle {
    id : cameraUI

    width: 640
    height: 480
    color: "black"
    state: "VideoCapture"

    states: [

        State {
            name: "VideoCapture"
            StateChangeScript {

                script: {
                    camera.position = Camera.FrontFace
                    camera.captureMode = Camera.CaptureVideo
                    camera.start()
                }
            }
        },
        State {
            name: "VideoPreview"
            StateChangeScript {
                script: {
                    camera.stop()
                }
            }
        }
    ]

    Camera {
        id: camera
        captureMode: Camera.CaptureVideo

        videoRecorder {

             resolution: "640x480"
             frameRate: 30
        }
    }

    VideoPreview {
        id : videoPreview
        anchors.fill : parent
        onClosed: cameraUI.state = "VideoCapture"
        visible: cameraUI.state == "VideoPreview"
        focus: visible

        //don't load recorded video if preview is invisible
        source: visible ? camera.videoRecorder.actualLocation : ""
    }

    VideoOutput {
        id: viewfinder
        visible: cameraUI.state == "VideoCapture"

        x: 0
        y: 0
       // width: parent.width
        width: parent.width - stillControls.buttonsPanelWidth
        height: parent.height

        source: camera
        autoOrientation: true
    }

    VideoCaptureControls {
        id: videoControls
        anchors.fill: parent
        camera: camera
        visible: cameraUI.state == "VideoCapture"
        onPreviewSelected: cameraUI.state = "VideoPreview"
    }
}

这样的办法应该行得通。有关更多属性,请查看文档

  Camera
        {
            id: camera
            captureMode: Camera.CaptureVideo
            videoRecorder.muted: true // set any property of recording.
        }

        VideoOutput 
        {
            source: camera
            width: parent.width*0.8
            height: parent.height*0.8
            autoOrientation: true
            anchors.centerIn: parent

            MouseArea
            {
                property var myInt:0
                anchors.fill: parent
                onClicked:
                {
                    camera.searchAndLock()
                    camera.videoRecorder.record()
                    if( myInt > 1 )
                    {
                        camera.videoRecorder.stop()
                        console.log(camera.videoRecorder.outputLocation)
                    }
                    myInt=myInt+1
                }
            }

        }

非常感谢你的回答。我需要为此创建另一个QML文件吗?这取决于您想做什么。把上面的代码复制到任何地方都可以。如果它解决了您的问题,您能将答案标记为已接受吗?我已将其添加到我的主QML文件中,我已在其中定义了摄像头和视频输出,但它似乎没有存储视频。当它第一次点击屏幕时,它开始录制。请你解释一下,这样我就可以正确修改代码了@Muhammet Ali AsanI将在我的问题部分向您提供我的主要QML文件,因为它太长,无法作为评论发布。请参考上述代码。我从控制台检索到这个libFastPong.so:qml:file:///data/user/0/org.qtproject.example.FastPong/files/VID_00000048.mp4 但我找不到这样的文件。你知道问题是什么吗?