Split 함수

  • String Type의 값을 나눠서 List 형태로 변환 (String -> List)
  • BOW 에서 자주 사용된다.

 

 

EX 1) 빈칸을 기준으로 문자열 나누기

# 빈칸을 기준으로 문자열 나누기
items = 'zero one two three'.split()
print(items)

['zero', 'one', 'two', 'three']

 

 

EX 2) "," 을 기준으로 문자열 나누기

# "," 를 기준으로 문자열 나누기
example = 'python,jquery,javascript'
example.split(",")
print(example)

['python', 'jquery', 'javascript']

 

 

EX 2-1) 2의 리스트에 있는 각 값을 a, b, c 변수로 unpacking

example = 'python,jquery,javascript'

a, b, c = example.split(",")
print(a)
print(b)
print(c)

python

jquery

javascript

 

EX 3) "."을 기준으로 문자열 나누고 unpacking

example = 'wwww.naver.com'
subdomain, domain, tld = example.split(".")

print(subdoamain)
print(domain)
print(tld)

 

IP 카메라로부터 물체 인식을 하는 과정에 대해 공부를 하는 중

Streaming 대표 프로토콜인 RTSP에 대해 알아보려 한다.

두 엔드 포인트 간의 오디오/비디오 전송을 제어하고, 인터넷에서 지연 시간이 짧은 스트리밍 콘텐츠 전송을 용이하게 하는데 사용한다.

IP 카메라, IP TV에서 RTSP를 사용한다. 더 자세히 알아보자.

 

 

RTSP 란?

RTSP(Real Time Streaming Protocol)는 우리말로 실시간 스트리밍 프로토콜이다.

 

RTSP는 Pause, Play 등의 기능을 통해 스트리밍 서버에게 명령을 내리는 데 사용되는 어플리케이션 계층(L7) 프로토콜이다.

RTSP 서버는 RTCP(Real-Time Control Protocol)와 RTP(Real-Time Protocol)를 활용하여 실제 스트리밍 데이터를 이동시킨다.

예를들어 사용자가 핸드폰을 사용하고 있고, RTSP를 사용하여 IP 카메라에서 비디오 스트림을 시작하면, 핸드폰은 스트리밍 서버(카메라)에게 RTSP 요청을 보낸다. 그러면 SETUP 프로세스를 시작하고, 그 다음 RTP를 이용해 비디오/오디오 데이터가 스트리밍 서버(카메라)에서 핸드폰으로 전달된다. 따라서 RTSP를 미디어 스트리밍을 위한 텔레비전 리모컨으로 생각할 수 있고, RTP는 데이터를 전송하는 역할을 한다.

 

이러한 RTSP 기술로 IP 카메라, IP TV의 보급이 이루어지며 외부에서 촬영된 영상을 TV에서 볼 수 있고, IP 카메라의 경우 모바일에서 카메라의 영상을 볼 수 있게 되었다.

 

 

RTSP의 특징

RTSP는 HTTP와 유사한 클라이언트-서버 구조로 동작을 한다.

HTTP는 Stateless(비상태) 프로토콜이며, RTSP는 Stateful(상태) 프로토콜이다.

Stateless는 이전의 요청과 무관하게 각각의 요청에 대해 독립적이다. 즉, 하나의 요청을 하면 하나의 응답만 한다.

과거 트랜잭션에 대한 것들은 따로 저장되지 않아 각각의 세션들은 처음부터 시작된다,.

Stateful은 이에 반해 트랜잭션이 중단되더라도, 중단된 곳 까지의 내역을 저장하고, 다시 시작할 경우, 저장된 곳 부터 다시 시작한다.

보통 TCP를 사용하고, RTSP는 Port# 554를 사용한다.

 

다지점-다수개의 콘텐츠 세션의 설정과 제어가 RTSP에서 가능하여 다지점 스트리밍 운영을 위한 기반을 제공한다.

 

 

RTSP 명령어

 

아래의 사진은 RTSP의 기본적인 요청 명령어인

OPTION, DESCRIBE, SETUP, PLAY, PAUSE, TEARDOWN 요청 명령어 흐름을 나타낸 것이다.

 

 

 

 

참고 : https://mingtrace.tistory.com/442

AI 프로젝트를 진행하기에 앞서 가상환경에 대해 정리하려고 한다.

 

여러 개의 프로젝트를 진행할 때, 가상환경을 여러 개 만들어 프로젝트에서 필요한 패키지들을 따로 설치해 관리할 수 있다.

 

Anaconda는 데이터 사이언스에 많이 사용되는 파이썬 패키지들과 노트북, 개발IDE 등을 한 번에 설치해 주는 도구이다.

 

데이터 분석을 위해 파이썬을 설치한다면 Anaconda를 활용하는 것이 편리하기 때문에 Anaconda를 쓴다.

 

이 게시글에서는 Linux 또는 MAC OS에서 Anaconda를 사용하여 가상환경을 생성, 활성화, 비활성화 하는 방법을 알아보겠다.

 

1) 아나콘다 다운로드

  • 아나콘다를 설치하기 위해 아래의 사이트에서 자신에게 알맞는 파이썬 버전을 확인하고 해당하는 링크를 복사해두자 https://www.anaconda.com/download#downloads
  • wget 명령어로 리눅스 쉘에서 설치 파일을 다운로드 (23.12.19 기준 Python 3.11 버전)
$ wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh

 

2) 설치

  • 다운로드 한 경로로 이동하여 (1)에서 설치한 파일(Anaconda3-2023.09-0-Linux-x86_64.sh)을 bash 쉘로 실행하여 준다.
$ bash Anaconda3-2023.09-0-Linux-x86_64.sh
  • 약관을 읽고, 마지막에 yes를 입력하고, you can undo this by running 'conda init --reverse $SHELL? 이라는 문구가 나오면  (선택적) yes를 입력하여 Anaconda를 설치해준다. 
  • PATH는 Anaconda에서 자동으로 등록해주므로 따로 명시할 필요는 없다.

3) PATH 업데이트

  • PATH는 자동으로 등록해주므로 bashrc를 업데이트하면 된다.
$ source ~/.bashrc
  • 이제 conda --version 을 입력하였을 때, 버전 정보가 나오면 정상적으로 설치가 완료된 것이다.
  • 버전 정보가 나오지 않을 경우, PATH가 제대로 업데이트 되지 않았다는 뜻이므로 bashrc 파일에 PATH를 수동으로 추가해야 한다.

3-1) PATH 업데이트가 안되는 경우

$ vi ~/.bashrc
  • i 를 눌러 edit 모드로 변경한 후 마지막 줄에 PATH 내용을 추가해 준다.
$ export PATH="/home/{username}/anaconda3/bin:$PATH"
  • 편집이 끝나면 esc를 눌러 편집 모드를 종료한 후 :wq 를 눌러 저장하고 파일을 종료한다.
  • 다시 bashrc를 업데이트하자
$ source ~/.bashrc
  • 이제 conda 명령어를 사용할 수 있다.
  •  4) conda 명령어들
  • conda create를 활용해 가상환경을 만들고, conda activate로 가상환경을 활성화하고, conda deactivate로 비활성화 할 수 있다.
  •  
# 가상환경 리스트 확인
conda env list

# 가상환경 생성
conda create -n {가상환경 이름} python={버전}

# 가상환경 활성화
conda activate {가상환경 이름}

# 패키지 설치
conda install {패키지 이름}

# 패키지 삭제
conda uninstall {패키지 이름}

# 가상환경 내 설치된 패키지 리스트 확인
conda list

# 가상환경 비활성화
conda deactivate

# 가상환경 삭제
conda env remove -n {가상환경 이름}

# 기존 가상환경을 복제하여 새 가상환경 생성
conda create --name {새로 만들 가상환경 이름} --clone {복제할 기존 가상환경 이름}

 

 

 

참고 : https://velog.io/@yznny/linux%EC%97%90-Anaconda-%EC%84%A4%EC%B9%98