您的位置:首页 > 其它

第四部分:视频播放与GPS轨迹文件同步

2010-09-18 11:14 316 查看
这一部分是所有工作里最容易的事情。主要是在启动播放文件的时候搜索当前的KML文件是否存在,如果存在就LOAD出来到内存里,代码如下:
bool Cdlg_demoDlg::search_KMLfile(std::string filename)
{
int i=0;
bool bfind = 0;
std::string k_name;
std::string::size_type pos = filename.rfind('.');
std::string v_name = filename.substr( 0,pos );

if(k_count == 0)
return 0;

for(i=0;i<k_count;i++)
{
k_name = kml_playlistpath[i].c_str();
pos = k_name.rfind('.');
k_name = k_name.substr( 0,pos );
if(k_name == v_name)
{
bfind = 1;
break;
}
}

if(bfind)
return 1;
else
return 0;
}

void Cdlg_demoDlg::LoadGpsData(void* fs)
{
CvFileStorage* Kml = (CvFileStorage*)fs;
int kml_no = 0,i=0;
char *ptr = 0,kml_co[1024]={"/0"};
int item_num = 0,cont = 0;

for( ptr = Kml->KML_name; *ptr != '/0'; ptr++ )
kml_no += *ptr == '/n';

for(ptr = Kml->KML_name;;ptr++)
{
if(*ptr!='/n')
m_gd[item_num].time[i++] = *ptr;
else
{
m_gd[item_num].time[i++] = '/0';
m_gd[item_num].TimePos = ((m_gd[item_num].time[0]-0x30)*10+m_gd[item_num].time[1]-0x30)*3600//hour
+((m_gd[item_num].time[3]-0x30)*10+m_gd[item_num].time[4]-0x30)*60//min
+((m_gd[item_num].time[6]-0x30)*10+m_gd[item_num].time[7]-0x30);//second
item_num++;
i=0;
}

if(*ptr=='/0')
break;
}

item_num = 0;i=0;
for(ptr = Kml->KML_co;;ptr++)
{
if(*ptr!='/n')
{
if(*ptr!=','&&cont == 0)
m_gd[item_num].longitude[i++] = *ptr;

if(*ptr==','&&cont == 0)
{
cont++;
m_gd[item_num].longitude[i++] = '/0';
i = 0;
continue;
}

if(*ptr!=','&&cont == 1)
m_gd[item_num].latitude[i++] = *ptr;

if(*ptr==','&&cont == 1)
{
cont++;
m_gd[item_num].latitude[i++] = '/0';
i = 0;
continue;
}

if(*ptr!=','&&cont == 2)
m_gd[item_num].altitude[i++] = *ptr;

if(*ptr==','&&cont == 2)
{
cont=0;
m_gd[item_num].altitude[i++] = '/0';
i = 0;
}

}
else
{m_gd[item_num].altitude[i++] = '/0';item_num++;i=0;cont = 0;}

if(*ptr=='/0')
break;
}
}
视频播放与GPS轨迹文件同步就类似以前做MP3程序里的歌词同步,在播放的同时检测GPS数据里时刻记录与当前视频文件的时刻对应就好,用一个全局TIMER来实现动态刷新。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: