본문 바로가기

프로그래밍177

[FFMPEG] 오디오 덤프 뜨는 법 ffmpeg -i rtsp://ip:port -acodec copy C:\path\test.opus 위 처럼 하면 지정한 경로에 덤프 떠진 오디오 파일이 생성된다.! 2022. 1. 11.
[ANDROID] JNI Error:(150) undefined reference to '함수이름' JNI 빌드 시 Error:(150) undefined reference to '함수이름' 라고 에러가 뜨면서 빌드가 실패하는 경우가 종종 있다. 왜 그런지 열심히 구글링 한 결과............... 나는 ~.c 파일의 함수들이 선언된 헤더를 ~.cpp 파일에서 그냥 #include로만 사용했기 때문이다. 이를 해결하기 위해선.. #ifdef __cplusplus extern “C” { #endif #include “cy.h” #ifdef __cplusplus } #endif 위와 같이 c 헤더 파일을 사용한다는 의미의 조건문을 써주면 빌드 완료!!! 2022. 1. 9.
[ANDROID] JNI (c++) 에서 JAVA 함수 콜하기 자바에서 이벤트 처리를 할 때 jni쪽으로 전달할 순 있지만, 역으로 jni 쪽에서 이벤트 처리를 할 때 java 쪽으로 이벤트를 주고 싶었다. 근데 이미 짜여져 있는 코드에서 추가 수정 작업을 하려니 JNIEnv *env 위 env 변수가 발목을 잡았다. 따로 전역변수 선언해서 저장해 놓고 쓸 수가 없었다................ 그래서 삽푸다가 겨우 해결한 방안은 다음이다. static JavaVM *rjvm = NULL; static jobject robject = NULL; extern "C" JNIEXPORT void JNICALL Java_com_cy_test_MainActivity_onvifStartServer( JNIEnv *env, jobject thiz) { main_onvif_se.. 2022. 1. 7.
[ANDROID] Mediacodec을 사용한 높은 비트레이트 낮추기 후 완전 삽펐다. 업무시간 7시간을 날렸다.. onPreviewFrame에서 넘어온 데이터를 미디어 코덱에 넣고 인코딩 돼서 나온 데이터 크기가 20만이 넘었다. 즉, bufferinfo size가 20만이 넘은 것이다. 물론 중간에 한 번씩 20만 넘는 사이즈로 튀는건 괜찮은데 계속 20만 이었다가 중간에 한 번씩 80만으로 튀는 현상이 발생했다...... mMediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, 2000000); 위 코드에서 비트레이트 값을 아무리 바꿔봐도 1도 적용이 안돼보였다... 위 그림에서 sum * 8 값이 계산된 비트레이트 값인데 약 60메가가 나온다. 해결 방법은 간단하다. mMediaFormat.setInteger(MediaFormat.K.. 2022. 1. 5.
[ANDROID] onvif ptz 처음에 onvif 라는 것을 접하게 되었을 때, onvif가 뭐지... ptz 기능을 컨트롤 할 수 있다는데 ptz는 또 뭐지.. 싶었다. 아무래도.. 카메라 쪽을 이렇게 심화적으로 다루는게 익숙치 않다 보니 처음 접하는 것도 너무 많았다 ㅜ 우선 간단하게 의미를 짚어보고 가겠다. ONVIF란 ? 1. (Open Network Video Interface Forum) 오픈 네트워크 비디오 인터페이스 포럼의 약자로 보안목적의 물리적인 IP기반 제품에 사용되는 프로토콜 2. 영상, 음성, 이벤트 송수신 : RTP/RTSP // 제어, 설정, 조회 : WSDL, SOAP 3. HTTP기반 프로토콜 PTZ란 ? - 회전 (PAN), 수직 방향 기울기 (Tilt), 줌 (Zoom) 만약 ptz 기능을 가진 ip카.. 2021. 12. 21.
[ANDROID] ONVIF 라이브러리 https://github.com/RootSoft/ONVIF-Java GitHub - RootSoft/ONVIF-Java: A Java client library to discover, control and manage ONVIF-supported devices. A Java client library to discover, control and manage ONVIF-supported devices. - GitHub - RootSoft/ONVIF-Java: A Java client library to discover, control and manage ONVIF-supported devices. github.com https://github.com/extinguish/onvif-camera GitHub.. 2021. 12. 16.
[FFMPEG/VLC] TCP 스트리밍 방법 (Live555 기준) (1) FFMPEG TCP 스트리밍 방법 ffplay -rtsp_transport tcp -i rtsp://xxx.xxx.xxx.xxx:xxxx/ (2) VLC TCP 스트리밍 방법 1. 도구 > 환경설정 2. 상단 입력/코덱 창에서 하단 우측 "RTSP (TCP) 위에서 RTP 사용 선택 후 저장 2021. 11. 1.
[ANDROID] Library AAR 파일 생성 aar 만드는 방법은 생각보다 간단했다.! 1. MainActivity 삭제 지워도 상관 없을 것 같으나 나는 그냥 지워줬다 여기서 AndroidManifest.xml도 수정해줘야 한다. 2. Plugins ID 수정 //기존 코드 plugins { id 'com.android.application' } //아래와 같이 수정 plugins { id 'com.android.library' } 3. defaultConfig applicationId 제거 defaultConfig { // applicationId "com.test.testaar" minSdkVersion 16 targetSdkVersion 30 versionCode 1 versionName "1.0" testInstrumentationRunn.. 2021. 9. 29.
[ANDROID] failed to apply plugin 'com.github.dcendents.android-maven'. git에 있는 오픈 소스를 가져와 빌드를 하려 하니 아래와 같은 에러가 나며 빌드가 실패했다. > Failed to apply plugin [id 'com.github.dcendents.android-maven'] > Could not create plugin of type 'AndroidMavenPlugin'. > Unable to determine constructor argument #1: missing parameter of type Factory, or no service of type Factory. 해결 방법 해당 프로젝트 build.gradle에는 다음과 같이 되어있었다. buildscript { repositories { jcenter() google() } dependencies { c.. 2021. 9. 15.
[SWIFT] AVPlayer Background 재생 핸드폰이 슬립모드 가거나, 전원을 끄거나, 앱을 잠시 숨겨놓거나 등... 앱이 background로 이동하면 모든 활동이 멈춘다. 이때, 오디오 재생을 background에서도 재생하고 싶다면?! 한 줄만 코딩하면 된다. 백그라운드 재생 설정 do { try AVAudioSession.sharedInstance().setCategory(.playback) } catch { } 2021. 8. 3.