第四部分:视频播放与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来实现动态刷新。
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来实现动态刷新。
相关文章推荐
- 用VC2005实现视频文件与GPS轨迹同步播放
- 把一个音视频文件的视频部分抽取出来播放
- <车载物联网项目,视频采集传输部分,第二天> 使用ffserver输出视频文件流,并且使用使用命令行终端播放视频文件
- 【整理】HLS视频协议第二弹--裁剪部分视频及m3u8文件,编写通用客户端以播放m3u8视频
- 如何同步播放asf和vga文件的教学视频
- <车载物联网项目,视频采集传输部分,第三天> 使用ffserver输出视频文件流,并且使用使用命令行终端播放视频文件
- 如何同步播放asf和vga文件的教学视频
- 第三部分:在DVR中生成KML格式GPS的轨迹文件
- 如何同步播放asf和vga文件的教学视频
- Linux探索之旅 | 第四部分第三课:文件传输,潇洒同步
- ios video标签部分mp4文件无法播放的问题
- 播放Android项目工程里的视频文件
- Android 录制的mp4视频文件在IOS中无法播放问题
- 播放Android项目工程里的视频文件
- Android播放assets文件里视频文件相关问题分析
- iOS真机播放MP4视频文件不出来的解决方法 AVPlayer
- 12个用于播放音乐和视频文件的jQuery插件
- unity www读取本地视频文件和外部视频文件 播放视频动画和视频声音
- DirectShow播放视频文件,DexterLib截取图像。
- Qt实用技巧:使用QMediaPlayer和Windows自带组件播放swf、rmvb、mpg、mp4等视频文件