티스토리 뷰
개요
1) 센서는 이벤트가 발생할때마다 Timestamp 를 기록한다.
2) 이때 동영상으로 현장을 녹화하고 있다.
3) 동영상에, 센서 이벤트가 발생한 순간마다 자막을 넣어서 표시해보자
공부
SRT, SMI 관련 간단히 정리된 블로그 링크
- https://cherrysm92.blog.me/100159160538
SRT
- TEXT 기반
- 타임라인 + 자막의 간단한 구성
- 다양한 효과를 줄 수 없고, 몇몇 휴대용 기기들에서는 지원하지 않는다. (어느정도의 효과는 가능하다고 한다.)
smi
- 정확한 명칭은 SAMI (Synchronized Accessible Media Interchange). 마이크로 소프트에서 개발
- HTML 처럼 자막에 색을 입히거나, 폰트, 글자크기등을 지정하고, 다양한 효과를 줄 수 있음
- 다국어 설정, 하나의 자막에 두 개 이상의 언어 동시 출력 등의 기능이 있음
SRT 들여다보기
- 관련링크 (이미지 출처): https://www.3playmedia.com/2017/03/08/create-srt-file/
- 아래와 같이 4파트 순서대로 만들어내면 된다. 몇몇 추가적인 효과가 있지만 이것만 알아도 된다.
|
전체 4파트로 구성되어 있다. 매우 간단
1. 번호 (Sequence number) 2. 시작시간 --> 종료시간 - 포맷은 시간:분:초,(comma)밀리초 3. 자막 4. 한 줄 띄어쓰기. 다음 자막과의 구분 |
해보자궁
Colaboratory 실습코드: https://goo.gl/WRMrh4
데이터 준비
- github gist 에 올려둔 실습용 csv 파일을 다운로드 받아서
- pandas 의 read_csv() 로 읽어들이자.
- 레코드 하나를 보면 20180814163541127 = 2018년 8월 14일 16시 35분 41초 112 밀리초 라는 것을 알 수 있다.
- 현재의 데이터 형식은 numpy.int64 이다.
실제 시간 정보를 동영상 재생 시간으로 바꾸기
- 실제 시간 정보를 동영상의 재생시간으로 변경해줘야 하며
- 센서로그를 기록하는 제어기와 동영상을 녹화하는 장비간의 미세한 시간차이도 맞춰줘야 한다.
1) log 컬럼의 data type 을 timestamp 로 바꿔서 start_time 이라는 컬럼으로 만들기
- pandas 의 to_datetime() 을 이용함
2) 동영상의 재생시간과 동기화를 맞추기
- start_time 컬럼의 모든 값을 start_time[0] 만큼 빼준다. 첫 이벤트 자막은 동영상이 시작하자 마자 뜨게 된다.
- 동영상이 재생되고 첫 이벤트가 발생하는 시점만큼 시간을 더해주어서 싱크를 맞춘다. 아래에서는 4.5초를 더해주었다.
* 실제로는 잘 맞지 않기 때문에 이 부분을 미세조정 해준다.
자막 종료시간 만들기
- pandas 의 shift() 를 이용
1) 한 이벤트에 대한 자막의 종료시간은 다음 이벤트의 시작시간으로 해준다.
2) 이때 맨 아래쪽에 생기는 공백은 해당 이벤트의 시작시간 + 3초로 해주었다.
자막 만들기
1) 시퀀스 넘버 만들기
- index 에 1을 추가하여 seq_num 을 만든 다음
- str type 으로 바꿔줌
2) 시간정보 문자열 만들기
- 우선은 type 을 datetime 으로 바꾼 후, string 으로 변환해준다.
- 그리고 SRT 자막파일의 포맷에 맞게 시간정보 문자열을 만들어준다. 초와 밀리초 사이에 콤마를 넣어주는 것에 주의
3) 자막 만들기
- 시퀀스 넘버
- 시간정보
- 자막정보: "Event: {시퀀스 넘버}" 로 만들려 함
자막 저장하기
1) 먼저 srt 컬럼의 정보만을 추려낸 DataFrame 을 만들고
2) srt 파일로 저장한다음
3) 불필요하게 생성된 쌍따옴표를 제거하면 된다.
SRT 파일을 Colaboratory 에서 다운로드 받자
- 실습한 Colaboratory 상에서 생성된 파일은 아래와 같이 local pc 로 다운로드 받을 수 있다.
끝!
'python' 카테고리의 다른 글
GIL, CPython, IPython (0) | 2023.07.10 |
---|---|
pandas column 의 위아래 값의 차이를 비교해보자 (0) | 2018.08.17 |
pandas DataFrame 의 값을 heatmap 으로, 3d로 표현해보자 (0) | 2018.08.13 |
keras model predict 를 API로 제공해보자 (0) | 2018.06.19 |
python daily log file 생성 및 기록하기 (4) | 2018.05.04 |
- Total
- Today
- Yesterday
- folklore
- 독서
- clean agile
- github
- golang
- 인텔리제이
- websocket
- 체호프
- intellij
- API
- ChatGPT
- OpenAI
- 영화
- 잡학툰
- 엉클 밥
- notion
- Bug
- 2023
- 노션
- strange
- Gin
- agile
- solid
- 오블완
- 독서후기
- 티스토리챌린지
- bun
- go
- 클린 애자일
- 제이펍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |