자전거를 타면서 이동 경로를 기록하기 위해 BikeMate란 어플을 사용해왔다.

BikeMate는 무료인 Lite 버전과 유료인 GPS 버전이 있는데,


Lite 버전을 사용하다가 맘에 들어 GPS 버전을 구입하게 되었다.

그런데, Lite 버전에서 저장된 데이터를 GPS 버전으로 옮기고 싶은데,

공식적으로 이런 기능이 제공되질 않았다.

그래서 그동안 Lite 버전과 GPS 버전을 둘 다 설치해 두었었는데,

이번에 데이터 옮기는 방법을 알게 되어 공개한다.


필요한 툴:

iFunbox

SQLite Database Browser


자신의 환경에 맞는 버전을 준비한다.


iFunbox 를 통해 iPhone에 연결을 하고 앱 관리 화면에서 BikeMate GPS와 BikeMate Lite 를 찾는다.

어플을 열고 Documents 폴더 아래에 있는 내용을 PC로 각각 복사하고,

만약을 위해 백업을 해 둔다.(별도의 폴더에 복사하거나, 압축)


Documents 폴더의 파일 중

data.bikeapp 과 totaldata 두 파일이 데이터 저장에 사용된 듯 하다.

totaldata는 운동일지 화면에서 볼 수 있는 전체 운동 기록 내용이고,

data.bikeapp은 모든 데이터가 저장되어있다.


데이터는 SQLite라는 데이터 베이스를 사용하고 있다.


SQLite Database Browser를 이용하여 해당 파일들을 읽으면,

저장된 내용을 확인할 수 있다.


메뉴 중 Export를 사용하여 데이터 베이스를 sql 파일로 저장한다(Database to SQL file)

저장된 SQL파일은 텍스트 편집기를 사용하여 내용을 확인하고 편집할 수 있다.


totaldata는 다음과 같은 형태로 되어있다.

BEGIN TRANSACTION;

CREATE TABLE TotalData(id integer primary key, totaltime text, totaldistance integer, totalcalorie integer);

INSERT INTO TotalData VALUES(0,100076,229773.933594,6384);

COMMIT;

각 값은

100076 : 총 운동시간

229773.933594 : 총 이동거리

6384 : 전체 소모 칼로리

이다.


Lite 버전과 GPS 버전의 각 값을 합산해서 수정한 뒤 다른 이름으로 저장한다.

totaldata는 내용이 간단하므로 SQLite Database Browser 에서 직접 수정해도 무방하다.




data.bikeapp 은 모든 기록을 담고 있는 데이터 베이스 이므로 운동을 오래 했다면 양이 방대할 것이다. 

따라서 이를 편집하는데 많은 시간이 소모될 수 있다.


data.bikeapp은 다음과 같은 형태로 되어있다.

BEGIN TRANSACTION;

CREATE TABLE ContainMashupRoute(id integer primary key, contain bit, tempcontain bit);

INSERT INTO ContainMashupRoute VALUES(0,1,1);

INSERT INTO ContainMashupRoute VALUES(1,1,1);

INSERT INTO ContainMashupRoute VALUES(2,1,1);

.

.(생략)

.

CREATE TABLE FileInfo (id INTEGER primary key, filename text, starttime text, endtime text, avgspeed text,  maxspeed text, elapsedtime text, comment text, totaldistance text, author text, indexid integer, containcheck integer, calorie integer, completefile integer, unixtime integer);

INSERT INTO FileInfo VALUES(0,'제목','2012-04-08T00:51:24Z','2012-04-08T02:03:22Z',12.93,38.75,'01:10:31','',15.198,'작성자',1,0,433,1,4231);

INSERT INTO FileInfo VALUES(1,'제목','2012-04-08T02:23:19Z','2012-04-08T03:55:54Z',12.09,27.52,'01:32:14','',18.632,'작성자',1,0,534,1,5551);

INSERT INTO FileInfo VALUES(2,'제목','2012-04-14T08:03:49Z','2012-04-14T09:16:31Z',15.40,39.59,'01:12:22','',18.573,'작성자',1,0,531,1,4342);

.

.(생략)

.

CREATE TABLE PhotoInfoTemp (id integer primary key autoincrement, filename text, timestamp text, latitude text, longitude text, description text, imagefile blob, notgps integer, indexid integer, fileid integer);
INSERT INTO PhotoInfoTemp VALUES(1,'Photo0','2012/04/19 22:07:03',00.00,000.000,'인라인스케이트장',NULL,NULL,1,4);
INSERT INTO PhotoInfoTemp VALUES(2,'Photo1','2012/04/19 22:07:24',00.0000,000.000,'',NULL,NULL,1,4);

.

.(생략)

.

CREATE TABLE "GpsInfo0" (id INTEGER PRIMARY KEY AUTOINCREMENT, latitude TEXT, longitude TEXT, altitude TEXT, timestamp TEXT, file_id INTEGER, photoid integer, filename text, comment text, photodate text, photoindex integer, photoname text, calorie integer, speed text);
INSERT INTO GpsInfo0 VALUES(1,00.000000,000.000000,00.000000,'2012-04-08T00:51:52Z',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,2.079368);
INSERT INTO GpsInfo0 VALUES(2,00.000000,000.000000,00.000000,'2012-04-08T00:51:53Z',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,2.401604);
INSERT INTO GpsInfo0 VALUES(3,00.000000,000.000000,00.000000,'2012-04-08T00:51:54Z',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,2.896223);
INSERT INTO GpsInfo0 VALUES(4,00.000000,000.000000,00.000000,'2012-04-08T00:51:55Z',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3.490555);

.

.(생략)

.

CREATE TABLE sqlite_sequence(name,seq);
INSERT INTO sqlite_sequence VALUES('GpsInfo0',3589);
INSERT INTO sqlite_sequence VALUES('GpsInfo1',4700);
INSERT INTO sqlite_sequence VALUES('GpsInfo2',3654);

.

.(생략)

.

COMMIT;

데이터 수정이 필요한 테이블들만 정리를 했다.

ContainMashupRoute 테이블은 메쉬업으로 데이터 공유를 할 때 쓰는 정보인듯하고,

FileInfo 테이블은 앱의 이동경로 목록 창에서 보여지는 내용들이다.

PhotoInfoTemp 테이블은 앱을 이용해 찍은 사진과 관련된 내용들이고,

GpsInfo0 테이블은 이동경로 목록의 첫번째 경로에 해당하는 GPS 로그이다.

sqlite_sequence 는 각 이동경로에 로그가 얼마나 많이 저장되어있는지 기록해 놓은 듯 하다.


가장 먼저 할일은 FileInfo 테이블을 보고 날짜 순으로 정렬을 하는 것이다.

일반적으로 Lite 버전을 먼저 사용하고 GPS 버전을 나중에 사용하는 것일테니,

Lite 버전은 그대로 GPS 버전의 내용은 빨간색 ID번호를 순서에 맞게 변경해 주면 된다.


그 다음은 ContainMashupRoute 테이블과 sqlite_sequence 테이블을 위에서 수정한 것과 동일하게 통합 후 ID(빨간색 숫자)를 수정한다


사진의 경우는 Documents 폴더에 사진파일이 저장되고, 해당 파일의 이름이 PhotoInfoTemp 테이블의 두번째 필드에 기록되어있다.(Photo0, Photo1 등)

FileInfo 와 마찬가지로 날짜 순서대로 번호를 수정해 주면 될 듯 하다.

(이동경로 기록 중 찍은 사진의 경우 어떤 방식으로 저장되는지 확인 불가)

(아마도 사진의 ID(파란색 숫자)가 GpsInfox 테이블의 photoid에 기록될 것으로 예상)



GpsInfox 테이블의 경우 각 경로의 GPS 로그를 기록한 것이기 때문에 데이터 양이 상당히 많다.(x는 각 경로의 ID번호)

따라서 텍스트 편집기의 "찾아 바꾸기" 기능을 이용하는 것이 편하다.

팁이라면, GpsInfo0 테이블의 처음에 커서를 두고, 검색 방향을 아래로, 끝까지 찾은 후 처음으로 돌아가기 기능은 끄고,

단어단위로, 큰 번호 순으로 수정하면 된다.

(예, "GpsInfo10" -> "GpsInfo15")


다음은 SQLite Database Browser를 실행하고 sql 파일을 Import 하면 데이터 베이스가 생성된다.

내 경우에는 에러가 발생했는데, 데이터에는 문제가 없는 것으로 확인됐다.

저장 버튼이 활성화 되지 않는 경우 아무 데이터나 직접 수정 후 되돌려 놓고, 저장하면 된다.


수정된 data.bikeapp 파일과 totaldata 파일을 다시 iFunbox 를 이용해 BikeMate GPS의 Documents 폴더로 복사하면 된다.

※만약 Lite 버전에서 찍은 사진도 옮기는 경우 테이블을 변경한 것과 마찬가지로 파일명도 변경해야 하는 것을 잊지 말아야 한다.


다음은 데이터를 옮기기 전 스샷과 옮긴 후 스샷


    

<통합 전>                                                     <통합 후>


    

<통합 전 Lite 버전>                                       <통합 전 GPS 버전>



<통합 후 GPS 버전>


Posted by mahnee

서버 접속이 안되는 경우

1. 자신의 아이폰/아이팟이 인터넷 연결이 정상으로 되는지 확인
 WIFI가 연결되어있어도 인터넷 연결이 안되는 경우가 있으므로 즉시 확인 후 안되면 인터넷 연결이 되도록 하는게 우선임.

2. 잘 되던 WIFI 접속이 인터넷이 갑자기 안된다면
 아이폰/아이팟 에서 설정 -> Wifi 네트워크 에 들어가면
 접속되어있는 WIFI AP 혹은 공유기가 있는데 (>) 표시를 눌러서 이 네트워크 지우기 한뒤
 다시 설정 추가

3. 공유기 외부에서 공유기 내부의 서버에 접속하는 경우
 공유기의 포트 포워딩 설정이 제대로 되어있는지 확인
 혹은 에어비디오 서버에 Automatically Mapping port 설정이 켜있는경우
 공유기에서 UPNP 기능을 사용하고 있는지 확인
 UPNP 기능을 지원하지 않는 공유기인경우는 Automatically Mapping port 설정을 해제하고
 포트포워딩 설정하여 사용

서버 접속 문제는 대부분 이 3가지 경우 일 것으로 판단됩니다.

서버 접속은 되고 목록이 보이지만 썸네일 이미지가 ?로 표시되고 비디오 재생이 안되는 경우

1. 에어비디오 서버가 설치되어있는 경로 혹인 동영상 파일이 있는 경로 확인
 경로상에 unicode 문자 즉 영문이외의 문자(한글 등)가 포함되어있는 경우 이같은 문제가 발생할 수 있다고 합니다.

2. 서버 다운그레이드 2.1.7 버전 사용
현재 자막이 지원되는 2.1.8 버전은 베타 버전이라 문제가 발생할 수도 있으니 2.1.7 버전 사용.
단, 2.1.7 버전은 자막이 지원되지 않음.
 Air Video Forum에 이같은 문제가 보고되어 있으며 2.1.8 버전에서 ffmpeg 가 문제를 일으키는 시스템이 간혹 있는듯 합니다. 2.1.7 버전을 사용해 보세요.


AirVideo Server 2.1.8 Beta 7 버전이 릴리즈 되었네요 위 문제 있으신 분들은 업그레이드 해보세요.
Unicode 지원, SMI 자막지원(시험버전) 등이 개선되었다고 하네요.

http://www.inmethod.com/forum/posts/list/426.page

2009/12/02 - [아이폰/아이팟 터치/어플 리뷰] - [유료/무료] PC의 동영상을 인코딩없이 아이팟 터치에서~ AirVideo
2009/12/14 - [아이폰/아이팟 터치/어플 리뷰] - AirVideo Server 를 윈도우 서비스로 실행하기!!!!!
Posted by mahnee


PC에 있는 동영상을 WIFI를 통해 직접 아이폰에서 볼수 있는 AirVideo

AirVideo를 사용하기 위해선 PC에 AirVideo Server를 설치하고 실행해야 합니다.
문제는 이 서버를 실행하기 위해서는 꼭 로그인을 해야 한다는 거죠.

윈도우 기반의 파일 서버 등을 운영하시는 분은 이점이 큰 단점이 될겁니다. 
AirVideo Server가 윈도우 서비스로 실행이 되면 로그인을 하지 않아도 될텐데요..

이런 문제에 대한 얘기가 AirVideo Forum에 올라와 있습니다. [링크] 

정리하자면..
다음 버전에 서비스로 실행하는 기능을 추가할 계획인데 아직은 안되기 때문에
써드파티 툴을 이용하여 AirVideo Server를 서비스로 돌리는 것입니다.
이때 사용하는 툴이 DuoData의 NT Wrapper 라는 툴인데요.
Pro 버전과 Lite 버전이 있고 Pro버전은 당근 유료입니다.
Lite 버전은 무료인 대신, 1개의 서비스만 실행가능합니다.
또한, 본 방법은 XP 대상이구요. Vista나 Win7에서는 약간의 문제가 있는 것 같습니다.
위 포럼 링크 가셔서 해당 내용 확인해보세요.

Lite 버전 다운
과감히 받아서 설치해 줍니다.!!

설치할 때 뭐 특별히 설정 해줄건 없으니 Next 버튼 쭉~ 눌러서 설치해줍니다.

※ 본 방법을 사용하여 AirVideo Server를 서비스로 등록하면 이전에 설정했던것과 별도로 AirVideo Server를 설정해줘야 합니다. 설정을 유지하는 방법이 있는지는 아직 모르겠네요. ^^

설정을 진행하기 전에 기존의 AirVideo Server의 설정 중 Start at login 설정을 지워주세요.

설치가 완료되면 다음과 같은 창이 뜹니다.
빨간 사각형 부분의 버튼을 눌러 서비스를 추가합니다.
메뉴에서는 Service -> new (Ctrl+N)


그럼 다음과 같은 창이 뜨는데요.
Service Name을 입력해줍니다. 저는 AirVideo Server를 입력했습니다.

추가. Interact with Desktop 옵션에 체크를 해주면 로그인 하지 않아도 서비스가 실행됩니다. 
체크를 했는데도 로그인 화면에서 에어비디오 접속이 되지 않는다면 핀번호를 확인하세요.



그 다음 두번째 Enhanced 탭에서는 Start-up Type을 Auto로 설정해줍니다.


Dependencies 탭은 건드릴것이 없어서 넘어가구요.
네번째 Applications to Run As a Service 탭에서 AirVideo Server 프로그램을 등록합니다.
1번 Work Directory에 AirVideo Server가 설치된 폴더를 선택해 주시구요.
2번 Executable에 AirVideo Server 실행 파일을 선택해 줍니다.
3번 Install 버튼을 눌러주시면 됩니다.


그럼 요렇게 처음 보였던 창에 목록이 추가가 됩니다.
빨간색 사각형으로 표시해 놓은 플레이 버튼을 누르면 서비스가 실행됩니다.
저는 미리 실행을 시켜서 비활성 상태가 되었네요.
중지시키려면 네모난 정지 버튼을 누르시면 됩니다.


마지막 단계.. 서비스를 실행시키면 AirVideo Server가 실행되는데요. 기존에 쓰던 설정은 온데간데 없을겁니다. 새로 설정해주세요. Remote 기능을 사용하시면 기존에 쓰던 PIN번호와 다른 PIN번호가 설정됩니다. 터치나 아이폰에서도 새로 등록 시켜주셔야 겠죠.
AirVideo Server 설정법은 이전 포스팅을 참고하세요.

2009/12/02 - [아이폰/아이팟 터치/어플 리뷰] - [유료/무료] PC의 동영상을 인코딩없이 아이팟 터치에서~ AirVideo

추가. Settings -> Auto Start With Windows 체크해주세요. 그래야 부팅시 실행됩니다 ^^


서버 프로그램에 서비스 기능을 추가 한다고 하니 그때까지는 필요하신 분들은 이 방법을 쓰시면 될듯합니다.
Twitter에서 @blueskul 님 덕분에 찾아보게 되었네요.


덧. 재부팅 하면 AirVideo Server가 서비스로 실행되는데.. 설정을 바꾸고 싶어도 시스템 트레이에 아이콘이 나오지 않아 설정이 불가능합니다. 이때는 NT Wrapper를 실행 시켜서 서비스를 중지했다가 다시 시작하셔서 설정하시면 됩니다. 약간은 불편하죠..


덧2. 서비스로 실행되는 에어비디오 서버의 핀번호 확인법
C:\Documents and Settings\LocalService\Local Settings\Application Data\AirVideoServer
이 경로에 있는 serverPin 이라는 파일을 메모장 등으로 열어보면 핀번호가 저장되어있는 것을 확인할 수 있습니다.


2009/12/02 - [아이폰/아이팟 터치/어플 리뷰] - [유료/무료] PC의 동영상을 인코딩없이 아이팟 터치에서~ AirVideo
2009/12/19 - [아이폰/아이팟 터치/어플 리뷰] - AirVideo 문제 발생시 체크해야 할 것

Posted by mahnee

※ 네이버 애플인사이드 카페와 Blogger.com 에도 게시되어있습니다.


아이팟 터치/아이폰 으로 동영상을 본다는 것은 꽤나 귀찮은 일이다.
팟캐스트나 유튜브 동영상이면 모르겠지만
PC에 있는 동영상을 아이팟 터치/아이폰으로 보려면 인코딩 이라는 귀찮은 작업을 해야 하기 때문.

이번에 소개하는 AirVideo 는 이러한 귀찮은 인코딩 작업없이 아이팟 터치/아이폰 에서 PC에 있는 동영상을 볼 수 있는 어플이다.
물론 WIFI 환경이 받쳐줘야 한다.

[다운로드 링크] 아이튠즈에서 바로 열립니다.



AirVideo는 무료버전과 유료버전이 있는데 무료버전에서는 파일 목록에 보이는 갯수가 제한되어있다.
Refresh를 하면 랜덤으로 제한된 수만큼 목록을 보여준다. 4~5개 정도였던듯.

이전에 Orb Live 라는 어플을 썼었는데 이 어플은 PC에 있는 비디오, 오디오, 문서, TV 등 다양한 형태의 미디어를 온라인 상으로 볼 수 있도록 제공하지만, Orb 홈페이지에 가입해야 한다는 점과 비디오가 상당히 끊긴다는 점 등이 단점이었다.
AirVideo는 Orb에 비하면 상당히 부드러운 재생 성능을 보여준다.
또한 자신의 PC에 직접 접속하는 방식으로 따로 회원가입 같은것이 필요가 없다.
따라서 AirVideo를 사용하여 접속하고자 하는 PC에 서버 프로그램이 필요하다.

서버 프로그램은 다음 링크에서 다운로드가 가능하며 Mac과 윈도우 버전이 있다.

현재 다운로드 페이지에 등록되어있는 Beta Version은 자막도 지원한다.
다만 국내에서 많이 사용하고 있는 .smi 형식의 자막은 지원하지 않는 점이 아쉽다.
따라서 .smi 파일을 .srt로 변환해주는 툴을 사용해야한다.
smi2srt 로 검색하면 다운받을 수 있다.

최신버전인 2.1.8 beta6 의 release 내용.

Improvements in this release:
* Subtitle Support! SRT, SSA, SUB (MicroDVD) formats are supported. Text subtitle track in MKV files are also supported.
* 64bit transcoding on 64bit Macs
* Windows Installer should configure proper rules for all firewall profiles
* Optimized transcoding for multicore CPUs
* More UPnP workarounds for broken routers
* Greatly improved unicode support on Windows




실행시 로딩 화면



서버 목록 +를 눌러 추가하거나 Edit 를 눌러 삭제 및 수정이 가능하다.


서버 추가 화면 PIN 번호로 추가하거나 직접 주소를 지정할 수 있다.



서버에 접속한 후 파일 목록 무료 버전은 보여지는 갯수가 제한되어있다. 3개
새로고침 버튼을 누르면 랜덤으로 다른 3개의 목록을 보여준다.



영상을 선택하면 간단한 정보와 Play, Convert 등의 메뉴가 나온다.
Conversion Settings 에서는 변환 옵션을 지정할 수 있다.
아이팟 터치/아이폰에서 바로 재생할 수 있는 포맷의 영상은 녹색의 play 버튼이 활성화 된다.



Play를 하면 보던 부분 부터 볼 것인지, 처음부터 볼 것인지,
위치를 찾아서 볼것인지 선택할 수 있다.



Seek 로 위치를 탐색하면 위 화면 처럼 영상의 내용을 보면서 실시간으로 탐색이 가능하다.




재생화면


다음은 서버 설정 화면.


영상이 들어있는 폴더를 지정하는 화면.



Conversion 관련 설정. Live conversion이 아닌 file을 변환하여 저장하는 용도인듯.


서버 비밀 번호, 포트 번호 설정등 서버 관련 설정 화면.



AirVideo 어플 설명에서 PIN 번호로 서버 추가 시에 사용하는 PIN 번호 생성 창.
This Server PIN 에 나오는 9자리 숫자를 입력하면 된다.




자막관련 설정. 한글을 보기 위해서는 Encoding 설정을 Korea(KSC 5601) 로 해야 한다.
물론 자막파일이 어떤 인코딩을 사용하여 만들었느냐에 따라 다르다.


Posted by mahnee


※ 무료버전이던 TVUPlayer가 유료버전으로 전환되면서 무료 TVUPlayer는 TVULite로 이름이 변경되었습니다. 더불어 기능에 제한이 생겼습니다. TV 시청 시간이 제한되어있습니다.


※ 네이버 애플인사이드 카페에도 게시되어있습니다.

http://cafe.naver.com/ipodinside/45694


아이팟을 사기 전부터 모바일 디바이스에서 TV를 보는 것에 관심이 좀 있었습니다.

그래서 ORB 라는 프로그램도 써보고 했었는데. 

ORB는 인터넷에 연결된 PC가 있어야 하고 이 PC에 어플을 깔아줘야 하는 불편함이 있죠.

하지만 지원 되는 TV 수신카드가 있다면 아주 훌륭한 TV 프로그램이 됩니다.

국내 TV수신 카드는 제대로 되는게 없는 걸로 알고 있습니다.(아시면 누가 좀 알려주세요)

 

그러던 중 아이팟에서 TV를 볼 수 있는 프로그램을 발견했습니다.

TVUPlayer 라는 놈이죠.


[다운링크](아이튠즈에서 바로 열립니다)

[유료버전] TVUPlayer [$4.99]

[무료버전] TVULite


App Store 에서 검색해보세요. 현재 베타 버전이긴 하지만 꽤 쓸만한 것 같습니다.

bandwidth 가 높은 채널을 보면 간혹 끊기는 현상이 발생합니다.

무선랜이 연결되어있어야 하구요.

무선랜 가능 지역에서 간편하게 TV를 볼 수 있어서 좋습니다.

 

사용자가 직접 URL을 추가 할 수 있으면 더욱 좋았을텐데 아쉽습니다.

또한, 가로보기가 안됩니다 ㅜㅜ

가로보기 만이라도 지원되면 참 좋을듯 하네요.

 (유료버전이 나오면서 가로보기가 가능해졌습니다.)


전세계 인터넷 방송이 되는 TV 채널들을 볼 수 있구요.

국내 방송도 있습니다.

아래 스크린샷 확인하세요.

 


 

 

즐겨보는 채널을 등록할 수도 있습니다.

 



 

"korea"로 검색하면 국내 방송도 볼 수 있습니다.

지상파는 SBS와 MBC 정도를 볼 수 있구요.

지역 방송들입니다.


 

 

다음은  MBC와 SBS 방송을 캡쳐해본겁니다.

 





 

 

 

Posted by mahnee
이전버튼 1 이전버튼

블로그 이미지
온갖 자작과 공학 전반에 걸쳐 관심이 많은 ..
mahnee
Yesterday
Today
Total

달력

 « |  » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함