전체 글 116

[GStreamer] RTSP의 H264 영상 Dump 방법

RTSP로 스트림되는 H264 영상을 GStreamer로 Dump하는 방법입니다. rtph264depay를 통해 출력되는 h264 데이터의 stream-format을 byte-stream으로 지정해줘야 streameye와 같은 툴로 분석이 가능합니다. gst-launch-1.0 rtspsrc location="rtsp://media.smart-streaming.com/mytest/mp4:sample.mp4" ! rtph264depay ! video/x-h264,stream-format=byte-stream ! h264parse ! filesink location="/path/to/video.h264" *H264 Byte Stream 포맷?- SPS > PPS > I/P/B 슬라이스 순서로 나열됩니다.- ..

GStreamer 2017.03.29

[GStreamer] h264 profile 확인하는 방법

명령어 입력1. rtsp에서 h264 파싱 후 디코딩2. x264enc 사용하여 h264로 재인코딩gst-launch-1.0 -v rtspsrc location="rtsp://media.smart-streaming.com/mytest/mp4:sample.mp4" ! rtph264depay ! video/x-h264,stream-format=avc ! h264parse ! identity silent=false name=before ! avdec_h264 ! x264enc dct8x8=false cabac=false bframes=0 ! identity silent=false name=after ! mpegtsmux ! hlssink max-files=5 location=/home/ubuntu/media/..

GStreamer 2017.03.27

[GStreamer] 윈도우 Visual Studio 개발 환경 설정

Windows7 64bit, Visual Studio 10 기준으로 기술하였습니다. GStreamer 1.10.4 설치1. 다운로드 2. gstreamer-1.0-x86_64-1.10.4.msi / gstreamer-1.0-devel-x86_64-1.10.4.msi 설치 ※ 설치 경로를 기억하세요. 저는 D:\gstreamer에 설치하였습니다. 환경변수 등록1. 내 컴퓨터 > 속성 > 고급시스템 설정 > 환경변수 > 시스템 변수 > Path [편집]2. ..;D:\gstreamer\1.0\x86_64\bin 덧붙이고 [확인] SDK 템플릿 Visual Studio로 복사1. D:\gstreamer\1.0\x86_64\share\vs\2010\wizard의 파일 3개 복사 - gst-sdk-template..

GStreamer 2017.03.06

[GStreamer] Pad-added Signal

GStreamer로 RTSP 영상을 화면에 출력하기 위해 이렇게 작성하였습니다. int main(int argc, char *argv[]) {GstElement *pipeline, *source, *demux, *parse, *filter, *decodebin, *sink;GstBus *bus;GstMessage *msg;GstStateChangeReturn ret; gst_init (&argc, &argv); // Pipeline과 Element 생성pipeline = gst_pipeline_new ("video player");source = gst_element_factory_make("rtspsrc", "source");demux = gst_element_factory_make("rtph264de..

GStreamer 2017.03.06

Dockerfile for gstreamer 1.10.4

ubuntu 16.04 Docker 이미지에 gstreamer를 설치하는 Dockerfile입니다.필요하지 않은 플러그인 설치 코드는 제거하고 사용하시면 됩니다. FROM ubuntu:16.04 RUN apt-get -y updateRUN apt-get install -y vimRUN apt-get install -y bisonRUN apt-get install -y g++RUN apt-get install -y flexRUN apt-get install -y wgetRUN apt-get install -y pkg-configRUN apt-get install -y gettextRUN apt-get install -y zlib1g-devRUN apt-get install -y yasmRUN apt-get..

Docker 2017.02.28

tcp_tw_reuse와 SO_REUSEADDR의 차이

tcp_tw_reuse클라이언트에서 서버로 connect()하는 과정에서 커널은 내부적으로 가용 포트를 로컬 포트로 선정합니다. 이 때 tcp_tw_reuse 옵션이 활성화되어 있으면 TIME_WAIT 상태의 포트도 로컬포트로 선정될 수 있습니다. (일반적인 경우를 가정하여 bind()를 수행하지 않고 connect()하는 쪽을 클라이언트라고 지칭하였습니다.) SO_REUSEADDR서버에서 TIME_WAIT 상태의 특정 포트에 bind()하려면 소켓에 SO_REUSEADDR 옵션을 적용해야 합니다. bind()를 사용한 경우 해당 로컬 포트는 tcp_tw_reuse 설정이 적용되지 않습니다. // 소켓 생성sockSvr = socket(AF_INET, SOCK_STREAM, 0);addrSockSvr.s..

Network 2017.02.08

Django Custom Auth (로그인 인증, API 인증)

로그인 인증 시나리오사용자 계정은 외부의 인증 서버를 통해 인증한다.인증 성공하면 Django Session에 User 등록하고 Token 반환한다. 사용자 계정 인증 모듈외부 인증서버를 통해 username, password를 인증하는 custom 인증 모듈을 만듭니다.# -*- coding: utf-8 -*-from django.conf import settingsfrom django.contrib.auth import get_user_modelfrom cognitoidentityprovider.cognito_user import CognitoUser import requests User = get_user_model() class MyBackend(object): """ Return User ins..

Django 2017.01.24

Django Rest Framework 인증 관련 설정

Django 프로젝트의 settings.py에는 인증 관련 설정이 몇가지 있는데 각각 어떤 역할을 하는지 정리해보았습니다.AUTHENTICATION_BACKENDS로그인 시 username, password을 인증할 Backend를 정의합니다.Django의 authenticate 함수에 의해 호출됩니다.명시적으로 정의하지 않으면 기본값으로 아래의 설정이 적용됩니다.AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',) Django로 로그인 기능을 만든다면 아래처럼 구현할 것입니다.authenticate 함수가 실행되면 ModelBackend를 사용하여 인증을 합니다.from django.contrib.auth import auth..

Django 2017.01.23

OAuth2.0

사전 작업인증을 제공하는 서버에 App을 등록해야 한다.- domain을 입력해야 한다. (redirect_uri를 검증할 때 domain 포함 여부를 확인한다.)- client id(app_id)가 생성된다.- client secret(app_secret)이 생성된다. (외부에 노출되면 안되는 키이다.) 인증 유형1. 서버에서 인증 (JSP, PHP, ...)웹서버는 app_secret키을 사용하여 인증서버로부터 인증을 받는다.웹서버가 들고있는 app_secret값은 외부에서 사용자가 알 수 없다. ① 유저 ID, PW를 아는 사람만 code 획득이 가능하다.② app_secret을 아는 서버만 access_token 획득이 가능하다. 2. 클라이언트에서 인증 (Javascript, Desktop ap..

Network 2017.01.19