首页| 论坛| 消息

回复: 用Qt和FFmpeg写了个播放器 QtAV库
#36 [zhsj 12-04 14:23]
一直在找d2d相关的东西,谢谢lz!
#37 [贵宾杨佳 12-08 17:44]
win7 下直接用Qt creator 编译github上的源代码 出现 :-1: 错误:avutil is required, but compiler can not find it!!不知道大家有没有碰到?
#38 [carmen816 12-13 17:06]
“对比了mplayer、迅雷看看播放4G大小的视频的资源使用,它们都要200多M的内存,我的只要50多点,挺意外的。”
那是因为您的播放器,缓冲的是压缩帧,他们缓冲原始的音视频数据。

楼主的播放器,帧率和时间同步稍有些问题。
FPS 23.976,显示只有15帧左右。播放时间一长,音视频出现不同步。
视频同步音频的方案不够精确,音频本身可能存在累计误差
#39 回 38楼(carmen816) 的帖子 [novesky 12-15 19:18]
那是因为您的播放器,缓冲的是压缩帧,他们缓冲原始的音视频数据
这个还真不知道,为什么要这么做?
不同步音频的话应该同步什么?系统时间?我现在的是有问题,来不及画的就丢掉
#40 Re:回 38楼(carmen816) 的帖子 [carmen816 12-17 14:52]
引用第39楼novesky于2013-12-15 19:18发表的 回 38楼(carmen816) 的帖子 :
这个还真不知道,为什么要这么做?
不同步音频的话应该同步什么?系统时间?我现在的是有问题,来不及画的就丢掉

VideoThread.cpp
qreal pts = pkt.pts;
d.delay = pts - d.clock->value();
/*
*after seeking forward, a packet may be the old, v packet may be
*the new packet, then the d.delay is very large, omit it.
*TODO: 1. how to choose the value
* 2. use last delay when seeking
*/
bool skip_render = false;
if (qAbs(d.delay) < 2.718) {
if (d.delay < -kSyncThreshold) { //Speed up. drop frame?
//continue;
}
while (d.delay > kSyncThreshold) { //Slow down
//d.delay_cond.wait(&d.mutex, d.delay*1000); //replay may fail. why?
//qDebug("~~~~~wating for %f msecs", d.delay*1000);
usleep(kSyncThr ..

<< 6 7 8 9 10 >> (8/16)

回复 发表
主题 版块