본문 바로가기

개발

(52)
ffmpeg 서버 프로세스 실행 프로세스 REST API 요청 ->param 분석 -> 명령어 생성( builder 개발) -> child process ( exec or spawn ) 호출 ->ffmpeg 실행 ->영상 생성 ->서버 업로드 ->DB 상태 업로드 child_proccess 를 사용하지않고 nestjs 에서 제공하는 라이브러리 사용이 가능하지만 ffmpeg에서 다루는 모든 API를 제공하지 않아 child_process를 통한 직접 호출이 더 효과적이다. | child_process 란 : nodejs 환경에서 python, git, ffmpeg등 외부 프로그램을 실행 할 수 있도로 지원하는 프로세스 모듈 exec 와 spawn 의 차이 exec : 버퍼 기반으로 결과를 한번에 받음import { exec }..
ffmpeg 개념 FFmpeg은 오디오·비디오 등 위한 오픈소스 멀티미디어 프레임워크입니다. ffmpeg으로 영상/음성 인코딩 및 자르기, 합치기, 필터링 등을 수행가능하다 ffmpeg: cli 명령어ffprobe : 미디어 조회, duration, fps, codec 등 정보 수집, 분석 도구ffplay : 영상 플레이 nodejs/nest js에서 child_process를 통해 명령 전달 가능함 * child_process 란 : nodejs 환경에서 python, git, ffmpeg등 외부 프로그램을 실행 할 수 있도로 지원하는 프로세스 모듈 * 인코딩이란 원본 RAW 데이터를 압축 하여 컨테이너에 담는 과정영상 인코딩 과정각 픽셀 은 24bit ( = 3byte 의 R,G,B ) 로 구성됨하나의 프레임에는 ..
RabbitMQ와 Apache Kafka RabbitMQ를 사용했던 경험이 있다면 항상 면접시 질문하는 내용이다이번에 정리해보기 RabbitMQ정의 : MSA 등 환경에서 비동기 통신 환경에서 메시지를 큐에 저장하는 오픈소스 기반 소프트웨어 핵심 구성요소 : - Producer : 메시지를 생성하여 전송하는 전송자- Broker: 데이터 라우팅 및 저장 서버Exchange : Direct(1:1 매핑), Topic( 와이드 카드 기반 멀티캐스트 ), Fanout( 브로드 캐스트), Headers( 헤더 속성 기반) 4가지 타입Producer 의메시지를 영구적, 비영구적 저장하는 서버, consumer 요청시 메시지 전달- Consumer : 전송자의 메시지를 수신하는 application 혹은 device 장점 및 활용 이유 :1. 낮은 ..
python pyQt5활용하여 fastapi 로그 찍기 소개 안녕하세요 오늘은 fastAPI 로그를 pyQt5 ui를 사용하여 표시하는 작업을 진행할 예정입니다. 기존에는 pyinstaller를 사용하여 command.exe 와 log파일에 로그기록을 남겨서 사용하고있었습니다. cmd 에 로그를 남기는 이유는 실시간으로 로그를 확인하고 , 프로그램 종료또한 cmd 가 종료되면 종료할수 있게 하기 위해서 였지만 여러가지 문제로 cmd 를 숨긴 상태로 배포하기로 하여 진행 하게 되었습니다. 구현 하면서 가장 힘들었던점은 pyQt5 gui 에 log를 표시할때 충돌이 발생하여 프로그램이 죽는 점이였습니다. 위 문제를 pyQt 커스텀 시그널을 사용하여 해결하였습니다. 간단하게 리뷰 진행할게요 코드 app.py : 최초 실행을 담당하는 main 역활 webServer..
aws cloudwatch log 사용하기 최근 클라우드 서버를 aws로 변경하면서 이것저것 작업을 하고잇다. 지난번에는 가비아에 등록된 도메인을 aws 로 이전하는 작업을 하였고 또 이전한 도메인에 ssl 인증을 하여 front-end/back-end 에 추가하였다 ( 원래 front-end에만 진행하려고하였지만 frontend에 ssl을 설정할 경우 backend에도 반드시 해줘야함 ) 이번에는 filebeat + logstash + elasticsearch + kibana 를 사용하던 구조를 aws cloudwatch로 통합하는 과정을 진행해보려고한다. 기본 설정은 docker container를 4개 사용중입니다 4개의 container는 volume 설정으로 /var/lib/docker/volumes/_data 밑에 저장됩니다. * 추가..
docker 커스텀 이미지 생성시 arg 활용 도커에서 이미지를 만들때 크게 두가지 방식을 사용한다. 1. docker build 명령어를 사용 2. docker-compose 사용 1번의 경우 각각의 도커 이미지를 만들때 주로 사용되고 2번의 경우 한개의 호스트에서 여러 이미지/컨테이너를 관리할때 사용되는 방법이다. 이미지를 만드는 방법은 다루지않고 arg사용하느부분만 자꾸 잊어버려 기록해 놓을 예정이다. 이미지를 만들떄 Dockerfile 을 통해 이미지를 만드는데 이때 변수를 사용할 경우가 종종 생긴다. (예를들면 서버 주소나 , 아이디 ,포트번호 등등 운영서버와 테스트서버 구분 하는 여러가지 경우) 이런경우 Dockerfile 에 ARG ENV 라고 선언하고 사용하면된다. 1번을 통해서 빌드할 때에는 docker build -t [image_..
docker 로그 보는방법 도커의 이미지를 컨테이너로 생성할떄 사용하는 docker run 명령어의 기본 동작 방식을 foreground 방식이다. 그렇게 때문에 docker run 으로 실행하면 해당 콘솔은 컨테이너가 종료될 때 까지 다른 행동을 할 수없다. 이런경우 해당 컨테이너의 로그가 출력되는 것을 볼 수 있다. 반면 background 방식으로 실행 시키려면 옵션에 -d 를 주어야한다. -d 옵션은 detached 를 의미하며 background 방식으로 동작하여 , 해당 콘솔이 run 이후 다른 동작을 할수있게 해준다. 만약 이미 실행한 컨테이너의 로그를 보는 방법은 아래와 같다. 1. docker attach [container_id] : 이후에 발생하는 로그를 실시간으로 확인할수 있다. 단 ) 해당 컨테이너가 res..
mysql 5.6 에서 5.7 업그레이드 후 쿼리 속도 이슈 안녕하세요 . 정말 귀차니즘의 끝을 달리다가 글을 씁니당... 일단 이슈는 제목 그대로 mysql 버전 업그레이드 되면서 일부 select query 가 급격히 느려진 현상입니다. 아래는 제가 문제 접근부터 해결 까지 기록한 내용입니다. ******************************************************************************************************** 위 부분에서 버전이 업그레이드 됨으로써 의도한데로 쿼리가 작동하지 않고 , 그로 인해 더 많은 데이터를 검색해야하는 비용이 발생하여 쿼리 속도가 느려지게 되는 문제가 발생하였습니다. 이를 해결하기 위해 병합되지않는 룰 중 하나인 group by 를 사용하여 아래 왼쪽 처럼 기존에 의도한..