我想从我的qt小部件应用程序播放视频。由于Qt不支持Android中的Qmediaplayer我无法使用它。由于某些原因,QML视频输出类型也不起作用。
因此,我想调用原生的Android视频播放器,这样当用户按下按钮时,应用选择器就会启动。我已经设置了那部分。
我从很多不同的地方找到了信息,但无法弄清楚如何把所有东西放在一起。
启动app选择器的java代码:
public class videoPlayer extends org.qtproject.qt5.android.bindings.QtActivity
{
private static videoPlayer instance;
videoPlayer() {
instance = this;
}
public void playVideo(String newVideoPath) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(newVideoPath));
intent.setDataAndType(Uri.parse(newVideoPath), "video/*");
// Verify that the intent will resolve to an activity
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
String title = "play video with";
// Create intent to show the chooser dialog
Intent chooser = Intent.createChooser(intent, title);
// Verify the original intent will resolve to at least one activity
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(chooser);
}
}
}
应该调用上述java方法的C ++代码
QAndroidJniObject videoUrl = QAndroidJniObject::fromString( "file://path/to/video/1.mp4");
QAndroidJniObject::callStaticMethod<void>("path/to/java/src/videoPlayer",
"playVideo",
"(Ljava/lang/String;)V",
videoUrl.object<jstring>());
上面应该启动选择器,但在我的情况下,它确实......没有错误,没有错误,没有app选择器,没有警告,没有视频,没有任何东西。
因此,如何从qt c ++调用android中的应用选择器并传递视频的网址?
答案 0 :(得分:0)
我让QMediaPlayer使用Qt Widgets。
VideoWidget::VideoWidget()
{
setPalette(Qt::transparent);
setAttribute( Qt::WA_TranslucentBackground, true );
setAttribute( Qt::WA_OpaquePaintEvent, true );
setAutoFillBackground(false);
setStyleSheet("QWidget{background-color: transparent;}");
setAttribute(Qt::WA_NoSystemBackground);
playlist = new QMediaPlaylist;
playlist->addMedia(QUrl("http://stage.static.video.sky.com/skymedia/2016/02/116956.ism/manifest-clip-006ifst2.m3u8"));
playlist->setCurrentIndex(0);
player = new QMediaPlayer (this, QMediaPlayer::StreamPlayback);
//player->setVideoOutput(this);
player->setPlaylist(playlist);
}