【Qt 开源音视频框架模块QtAV】03:QTAV主要接口展示以及播放器源码分享 |
您所在的位置:网站首页 › qt使用ffmpeg播放视频 › 【Qt 开源音视频框架模块QtAV】03:QTAV主要接口展示以及播放器源码分享 |
介绍
QtAV 是一个基于 Qt 和 FFmpeg 的跨平台、高性能多媒体播放框架,能够帮助你轻而易举地编写出一个播放器。 【Qt 开源音视频框架模块QtAV】01:介绍、编译以及简单使用 因为网上使用QTAV的使用方法还比较少,所以下面做了一些整理。 参考例程:海天鹰媒体播放器_QtAV版 程序功能效果展示程序功能:本地视频播放、url播放、播放速度调节、音量调节、窗口旋转、截图、剧情连拍、音轨选择、播放直播源等功能 下面提到的player是AVPlayer这个类的实例化对象 videoItem是GraphicsItemRenderer这个类的实例化对象 player = new AVPlayer(this); videoItem = new GraphicsItemRenderer; QGraphicsScene *scene = new QGraphicsScene(this); scene->addItem(videoItem); ui->graphicsView->setScene(scene); player->setRenderer(videoItem);GraphicsItemRenderer与VideoOutput 区别 GraphicsItemRenderer #define GraphicsWidget QGraphicsWidget #else #define GraphicsWidget QGraphicsObject #endif class Q_AVWIDGETS_EXPORT GraphicsItemRenderer : public GraphicsWidget, public QPainterRenderer class Q_AV_EXPORT QPainterRenderer : public VideoRendererVideoOutput VideoOutput : public QObject, public VideoRenderer参看这两个类的父类不难发现 他们都继承与VideoRenderer 结论: 他们都是渲染器 如果你需要用到 QGraphics时 用GraphicsItemRenderer,需要QWidget时用 VideoOutput 播放器播放视频 player->play(path); path 可以时url地址 也可以是本地地址 播放器暂停视频 player->stop(); 播放器暂停或继续播放 player->pause(true); //暂停 player->pause(false); //继续播放 设置播放位置 player->setPosition(v); 修改播放音量 音量范围 0-1 player->audio()->setVolume(v/100.0); 旋转角度 videoItem->setOrientation(videoItem->orientation()+90); 获取视频信息 "媒体地址:" + player->statistics().url "视频解码:" + player->statistics().video.decoder_detail "音频解码:" + player->statistics().audio.decoder_detail "分辨率:width" + QString::number(player->statistics().video_only.width) "分辨率:height" + QString::number(player->statistics().video_only.height) "文件大小:" + QFileInfo(player->statistics().url).size(); 单位byte 修改播放器窗口大小 videoItem->resizeRenderer(ui->graphicsView->size()); 调整播放速度 player->setSpeed(player->speed() + 0.1); //加速 player->setSpeed( player->speed() - 0.1 ); //减速 获取音轨数量 player->audioStreamCount() 修改音频源 player->setAudioStream(action->data().toInt()); 获取预览图 // 预览图 VideoPreviewWidget *m_preview; void MainWindow::preview(int value) { int w = 100; int h = 70; m_preview->setFile(player->file()); m_preview->setTimestamp(value); m_preview->preview(); //m_preview->setWindowFlags(m_preview->windowFlags() | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); m_preview->setWindowFlags(m_preview->windowFlags() | Qt::WindowStaysOnTopHint); m_preview->resize(w,h); m_preview->move(cursor().pos().x()-w/2 , cursor().pos().y()-h-20); m_preview->show(); } 截图播放器当前图片 player->videoCapture()->setAutoSave(true); //自动保存在 /home/用户名/Pictures ,不需要手动保存。 player->videoCapture()->capture();
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |