浮生若茶263 2022-05-29 09:56 采纳率: 75%
浏览 418
已结题

qml的mediaplayer播放MP4,没有声音,还卡,./运行没问题。放安卓设备里,加配置文件,开机运行就不行。

Rectangle {
id: video
x: 0
y:0
width: 960
height: 288
visible:root.mediaEnble
MediaPlayer {
id: mediaPlayer
loops: MediaPlayer.Infinite
source: "video_test.mp4"
autoPlay: false
onError: {
console.log(errorString)
}
onPlaybackStateChanged: {
console.log("onplaybackchanged!")

            switch (playbackState) {
            case MediaPlayer.PlayingState:
                state.text = "播放中"
                break
            case MediaPlayer.PausedState:
                state.text = "已暂停"
                break
            case MediaPlayer.StoppedState:
                state.text = "已结束"
                break
            }
        }

        }

    VideoOutput {
        anchors.fill: parent
        source: mediaPlayer

    }

这是调用
onMediaEnbleChanged: {
console.log("mediaEnble: "+mediaEnble)
if(root.mediaEnble){
video.visible=true
mediaPlayer.play()
}
else
{
video.visible=false
mediaPlayer.stop()
}
}
项目里有使用APPmediaplayer继承QmediaPlayer用于播放MP3,没问题。怀疑对qml有影响,于是将它的对象delete,然并卵。后又用APPmediaplayer直接播放MP4声音,qml的media放画面,然后就直接黑屏卡死。求解决

  • 写回答

6条回答 默认 最新

  • 关注

    QmediaPlayer 适配的有BUG,多个项目里已经实测了。

    你播放使用或者音乐,推荐不要使用 QmediaPlayer ,多个项目里实测,BUG一大堆。 可以用libvlc、MDK来实现,直接支持QML非简单。如果你技术到位,用ffmpeg重新实现也可以。当前推荐你直接用libvlc、MDK来实现。如果libvlc、MDK之间要进行选择。那么推荐你用MDK来实现。

    MDK和libvlc都是跨平台的,支持widget、qml方式调用。支持Android、IOS、windows、Linux、嵌入式Linux多个平台。你值得拥有。

    MDK库使用方法: https://blog.csdn.net/xiaolong1126626497/article/details/117557963
    libvlc库使用方法: https://blog.csdn.net/xiaolong1126626497/article/details/119110154

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月7日
  • 赞助了问题酬金100元 5月30日
  • 创建了问题 5月29日