Qt显示视频总时长
2011-08-23 16:45
225 查看
Qt显示导入视频的总时长需要通过Opencv来实现。。。
QTime timer;
int fps = cvGetCaptureProperty(pCapture, CV_CAP_PROP_FPS);
int totalFrames = cvGetCaptureProperty(pCapture, CV_CAP_PROP_FRAME_COUNT);
QString totalTime;
QTime tTime = timer.addSecs(totalFrames/fps);
QString timeLength;
timeLength= tTime.toString("hh:mm:ss");
m_pTimeLabelText->setText(timeLength);
首先,通过opencv的cvGetCaptureProperty得到视频文件的帧率及总帧数,然后把时间加到当前时间之上就可以得到视频文件的总时间。
下面说说QTime这个类的用法:
QTime::QTime()
默认构造函数,构造一个时,分,秒都为0的时间,如00:00:00.000(午夜)
QTime::QTime(int h, int m, int s=0, int ms = 0)
构造一个用户指定时,分,秒的时间.
QTime QTime::addMSecs(int ms) const//返回值为const说明这个返回的参数是不能修改的,而传入的参数如果为const,则说明该参数在这个函数内只能用而不能修改,即只读
返回一个当前时间对象之后或之前ms毫秒的时间对象(之前还是之后视ms的符号,如为正则之后,反之之前)
如:QTime time(3,0,0);
QTime newTime1 = time.addMSecs(1000);
QTime newTime2 = time.addMSecs(-1000);
则newTime1是一个比time所指定时间(03:00:00.000)延后1000毫秒也即1秒的时间(03:00:01.000),而newTime2则提前1000毫秒(02:59:59.000)
QTime QTime::addSecs(int nsecs) const
与addMSecs()相同,只是nsecs单位是秒.即返回一个当前时间对象之前或之后的时间对象.
int QTime::elapsed() const
返回最后一次调用start()或restart()到现在已经经过的毫秒数.如果经过了24小时之后,则计数器置0.如果系统时间设置改变,则结果不确定.
int QTime::hour() const
返回时间对象的小时,取值范围(0--23)
int QTime::minute() const
返回时间对象的分钟,取值范围(0--59)
int QTime::second() const
返回时间对象的秒,取值范围(0--59)
int QTime::msec() const
返回时间对象的毫秒,取值范围(0--999)
bool QTime::isNull() const
如果时间对象等于00:00:00.000,则返回true;反之返回false.
bool QTime::isValid() const
如果时间对象是有效的,则返回true;反之返回false.(即:时,分,秒,毫秒都在其取值范围之内)
int QTime::msecsTo(const QTime &t) const
返回当前时间对象到t所指定的时间之间的毫秒数.如果t早于当前时间对象的时间,则返回的值是负值.因为一天的时间是86400000毫秒,所以返回值范围是-86400000--86400000
int QTime::secsTo(const QTime &t) const
与msecsTo()基本相同,只是返回的是秒数,返回值的有效范围是-86400--86400
int QTime::restart()
设置当前时间对象的值为当前系统时间,并且返回从最后一次调用start()或restart()到现在的毫秒数.如果计数器超出24小时,则置0.如果计数器计数时系统时间设置改变,则结果不确定.
bool QTime::setHMS(int h, int m, int s, int ms = 0)
设置当前时间对象的时,分,秒和毫秒.如果给定的参数值有效,则返回true,否则返回false.
void QTime::start()
设置当前时间对象的值为当前系统时间,这个函数实际是结合restart()和elapsed()用来计数的.
QString QTime::toString(const QString &format) const
按照参数format指定的格式用字符串形式输出当前时间对象的时间.
参数format用来指定时,分,秒,毫秒的输出格式.如(hh:mm:ss.zzz)
h:表示小时,范围是0--23
hh:用两位数表示小时,不足两位的前面用0补足,如(0点:00,3点:03,11点:11)
m:表示分钟,范围0--59
mm:用两位数表示分钟,不足两位的前面用0补足.
s:表示秒,范围0--59
ss:用两位数表示秒,不足两位的前面用0补足.
z:表示毫秒,范围0--999
zzz:用三位数表示毫秒,不足三位的前面用0补足.
AP:用AM/PM显示.
ap:用ap/pm显示.
例如:
QTime time(14,3,9,42);//设置时间为14:03:09.042
QString i = time.toString("hh:mm:ss.zzz");//结果为14:03:09.042
QString j = time.toString("h:m:s.z");//结果为14:3:9.42
QString m = time.toString("h:m:s.z AP");//结果为2:3:9.42 PM
QString n = time.toString("h:m:s.z ap");//结果为2:3:9.42 pm
QString QTime::toString(Qt::DateFormat f = Qt::TextDate) const
按照参数format指定的格式用字符串形式输出当前时间对象的时间.
参数的可选值:
Qt::TextDate:格式为HH:MM:SS
Qt::ISODate:遵循ISO8601的时间表示格式,同样也为HH:MM:SS
Qt::LocalDate:字符串格式依赖系统本地设置
----------------------------------------------------------------------------------------------------------------------------------------
静态成员函数:
QTime QTime::currentTime()
返回当前的系统时间.
QTime QTime::fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)
使用参数format指定的格式根据参数string指定的时间返回一个时间对象。如果string指定的时间不合法,则返回一个无效的时间对象。
format可选值:
Qt::TextDate:格式为HH:MM:SS
Qt::ISODate:遵循ISO8601的时间表示格式,同样也为HH:MM:SS
Qt::LocalDate:字符串格式依赖系统本地设置
QTime QTime::fromString(const QString &string, const QString &format)
使用参数format指定的格式根据参数string指定的时间返回一个时间对象.如果string指定的时间不合法,则返回一个无效的时间对象.
format的格式参看QString QTime::toString(const QString &format) const.
bool QTime::isValid(int h, int m, int s, int ms = 0)
如果参数所指定的时间是合法的,则返回true;反之返回false.
----------------------------------------------------------------------------------------------------------------------------------------
静态成员函数不依赖于对象,可以通过类直接调用,与对象无关:
如:获取当前系统时间的小时部分时不需要定义QTime对象
int hour = QTime::currentTime().hour()
QTime timer;
int fps = cvGetCaptureProperty(pCapture, CV_CAP_PROP_FPS);
int totalFrames = cvGetCaptureProperty(pCapture, CV_CAP_PROP_FRAME_COUNT);
QString totalTime;
QTime tTime = timer.addSecs(totalFrames/fps);
QString timeLength;
timeLength= tTime.toString("hh:mm:ss");
m_pTimeLabelText->setText(timeLength);
首先,通过opencv的cvGetCaptureProperty得到视频文件的帧率及总帧数,然后把时间加到当前时间之上就可以得到视频文件的总时间。
下面说说QTime这个类的用法:
QTime::QTime()
默认构造函数,构造一个时,分,秒都为0的时间,如00:00:00.000(午夜)
QTime::QTime(int h, int m, int s=0, int ms = 0)
构造一个用户指定时,分,秒的时间.
QTime QTime::addMSecs(int ms) const//返回值为const说明这个返回的参数是不能修改的,而传入的参数如果为const,则说明该参数在这个函数内只能用而不能修改,即只读
返回一个当前时间对象之后或之前ms毫秒的时间对象(之前还是之后视ms的符号,如为正则之后,反之之前)
如:QTime time(3,0,0);
QTime newTime1 = time.addMSecs(1000);
QTime newTime2 = time.addMSecs(-1000);
则newTime1是一个比time所指定时间(03:00:00.000)延后1000毫秒也即1秒的时间(03:00:01.000),而newTime2则提前1000毫秒(02:59:59.000)
QTime QTime::addSecs(int nsecs) const
与addMSecs()相同,只是nsecs单位是秒.即返回一个当前时间对象之前或之后的时间对象.
int QTime::elapsed() const
返回最后一次调用start()或restart()到现在已经经过的毫秒数.如果经过了24小时之后,则计数器置0.如果系统时间设置改变,则结果不确定.
int QTime::hour() const
返回时间对象的小时,取值范围(0--23)
int QTime::minute() const
返回时间对象的分钟,取值范围(0--59)
int QTime::second() const
返回时间对象的秒,取值范围(0--59)
int QTime::msec() const
返回时间对象的毫秒,取值范围(0--999)
bool QTime::isNull() const
如果时间对象等于00:00:00.000,则返回true;反之返回false.
bool QTime::isValid() const
如果时间对象是有效的,则返回true;反之返回false.(即:时,分,秒,毫秒都在其取值范围之内)
int QTime::msecsTo(const QTime &t) const
返回当前时间对象到t所指定的时间之间的毫秒数.如果t早于当前时间对象的时间,则返回的值是负值.因为一天的时间是86400000毫秒,所以返回值范围是-86400000--86400000
int QTime::secsTo(const QTime &t) const
与msecsTo()基本相同,只是返回的是秒数,返回值的有效范围是-86400--86400
int QTime::restart()
设置当前时间对象的值为当前系统时间,并且返回从最后一次调用start()或restart()到现在的毫秒数.如果计数器超出24小时,则置0.如果计数器计数时系统时间设置改变,则结果不确定.
bool QTime::setHMS(int h, int m, int s, int ms = 0)
设置当前时间对象的时,分,秒和毫秒.如果给定的参数值有效,则返回true,否则返回false.
void QTime::start()
设置当前时间对象的值为当前系统时间,这个函数实际是结合restart()和elapsed()用来计数的.
QString QTime::toString(const QString &format) const
按照参数format指定的格式用字符串形式输出当前时间对象的时间.
参数format用来指定时,分,秒,毫秒的输出格式.如(hh:mm:ss.zzz)
h:表示小时,范围是0--23
hh:用两位数表示小时,不足两位的前面用0补足,如(0点:00,3点:03,11点:11)
m:表示分钟,范围0--59
mm:用两位数表示分钟,不足两位的前面用0补足.
s:表示秒,范围0--59
ss:用两位数表示秒,不足两位的前面用0补足.
z:表示毫秒,范围0--999
zzz:用三位数表示毫秒,不足三位的前面用0补足.
AP:用AM/PM显示.
ap:用ap/pm显示.
例如:
QTime time(14,3,9,42);//设置时间为14:03:09.042
QString i = time.toString("hh:mm:ss.zzz");//结果为14:03:09.042
QString j = time.toString("h:m:s.z");//结果为14:3:9.42
QString m = time.toString("h:m:s.z AP");//结果为2:3:9.42 PM
QString n = time.toString("h:m:s.z ap");//结果为2:3:9.42 pm
QString QTime::toString(Qt::DateFormat f = Qt::TextDate) const
按照参数format指定的格式用字符串形式输出当前时间对象的时间.
参数的可选值:
Qt::TextDate:格式为HH:MM:SS
Qt::ISODate:遵循ISO8601的时间表示格式,同样也为HH:MM:SS
Qt::LocalDate:字符串格式依赖系统本地设置
----------------------------------------------------------------------------------------------------------------------------------------
静态成员函数:
QTime QTime::currentTime()
返回当前的系统时间.
QTime QTime::fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)
使用参数format指定的格式根据参数string指定的时间返回一个时间对象。如果string指定的时间不合法,则返回一个无效的时间对象。
format可选值:
Qt::TextDate:格式为HH:MM:SS
Qt::ISODate:遵循ISO8601的时间表示格式,同样也为HH:MM:SS
Qt::LocalDate:字符串格式依赖系统本地设置
QTime QTime::fromString(const QString &string, const QString &format)
使用参数format指定的格式根据参数string指定的时间返回一个时间对象.如果string指定的时间不合法,则返回一个无效的时间对象.
format的格式参看QString QTime::toString(const QString &format) const.
bool QTime::isValid(int h, int m, int s, int ms = 0)
如果参数所指定的时间是合法的,则返回true;反之返回false.
----------------------------------------------------------------------------------------------------------------------------------------
静态成员函数不依赖于对象,可以通过类直接调用,与对象无关:
如:获取当前系统时间的小时部分时不需要定义QTime对象
int hour = QTime::currentTime().hour()
相关文章推荐
- QT中的视频显示优化
- webrtc视频捕获并通过QT显示
- ffmpeg开发:视频数据在qt显示
- <Linux+Qt>Qt4编程控制mplayer嵌入自定义界面监控或视频显示
- Zedboard & Zynq 图像采集(五) 板端Linux下视频TCP发送 & Linux上位机QT视频显示
- Qt开发:使用VLC播放视频,并且显示画面
- OpenCV在Qt中显示视频的两种方法
- qt使用ffmpeg显示rtsp视频流
- 视频和QT的GUI显示到LCD的不同显示层—透过GUI能看到视频
- QT_mingw+opencv3.0+摄像头视频显示工程代码与库
- zedboard--zedboard的qt测试和usb视频采集和显示(十六)
- Qt+VLC简单的使用显示视频Demo
- V4L搞定 +QT显示摄像头视频
- ffmpeg解码RTSP/TCP视频流H.264(QT界面显示视频画面)
- QT界面与视频同时显示在屏幕上
- 用qt显示视频.qt video
- 用qt显示视频.qt video
- 使用QT进行视频帧显示时如何防止闪烁现象出现呢?
- win音视频--qt视频显示
- Zedboard摄像头获取视频设计问题篇(四)-OpenCV+QT配置显示图片