사람 추적 기능 개발에 대한 참고 사항

5370 단어 javaprogramming

배경



동영상은 추억입니다. 더 보기 좋게 만드는 데 더 많은 시간을 할애하지 않으시겠습니까? 시중의 많은 모바일 앱은 필터 적용, 스티커 추가와 같은 기본적인 편집 기능만 제공합니다. 즉, 움직이는 사람이 초점을 유지하는 역동적인 비디오를 만들고자 하는 사람들에게는 충분하지 않습니다. 전통적으로 이렇게 하려면 키프레임을 추가하고 비디오 이미지를 수동으로 조정해야 하므로 많은 아마추어 비디오 편집자들이 겁을 먹을 수 있습니다.
나는 그런 사람들 중 한 명이며 이런 종류의 기능을 구현하는 더 쉬운 방법을 찾고 있었습니다. 다행스럽게도 HMS Core Video Editor Kit의 트랙맨 기능을 우연히 발견했습니다. 이 기능은 아래 이미지와 같이 움직이는 사람을 중심으로 비디오를 자동으로 생성합니다.


기능을 사용하기 전에


기능을 사용한 후

이 기능 덕분에 이제는 사람 추적 효과가 있는 동영상을 자신 있게 만들 수 있습니다.
함수가 어떻게 개발되는지 봅시다.

개발 프로세스


준비



Configure the app information AppGallery Connect에서.

프로젝트 구성



1) 액세스 토큰 또는 API 키를 통해 앱에 대한 인증 정보를 설정합니다.
setAccessToken 메서드를 사용하여 앱 초기화 중에 액세스 토큰을 설정합니다. 한 번만 설정하면 됩니다.

MediaApplication.getInstance().setAccessToken("your access token");


또는 setApiKey를 사용하여 앱 초기화 중에 API 키를 설정합니다. API 키는 한 번만 설정하면 됩니다.

MediaApplication.getInstance().setApiKey("your ApiKey");


2) 고유 라이선스 ID를 설정합니다.

MediaApplication.getInstance().setLicenseId("License ID");


3) HuaweiVideoEditor에 대한 런타임 환경을 초기화합니다.
비디오 편집 프로젝트를 생성할 때 먼저 HuaweiVideoEditor 객체를 생성하고 런타임 환경을 초기화합니다. 비디오 편집 프로젝트를 종료할 때 이 개체를 놓습니다.
나. HuaweiVideoEditor 개체를 만듭니다.

HuaweiVideoEditor editor = HuaweiVideoEditor.create(getApplicationContext());


ii. 미리보기 영역 위치를 지정합니다.
이 영역은 비디오 이미지를 렌더링합니다. 이 프로세스는 SDK에서 SurfaceView 생성을 통해 구현됩니다. 영역을 생성하기 전에 미리보기 영역 위치를 지정해야 합니다.

<LinearLayout    
    android:id="@+id/video_content_layout"    
    android:layout_width="0dp"    
    android:layout_height="0dp"    
    android:background="@color/video_edit_main_bg_color"    
    android:gravity="center"    
    android:orientation="vertical" />
// Specify the preview area position.
LinearLayout mSdkPreviewContainer = view.findViewById(R.id.video_content_layout);

// Configure the preview area layout.
editor.setDisplay(mSdkPreviewContainer);


iii. 런타임 환경을 초기화합니다. 라이선스 확인에 실패하면 LicenseException이 발생합니다.
HuaweiVideoEditor 개체를 생성하면 시스템 리소스를 차지하지 않습니다. 런타임 환경의 초기화 시간은 수동으로 설정해야 합니다. 그러면 필요한 스레드와 타이머가 SDK에 생성됩니다.

try {
        editor.initEnvironment();
   } catch (LicenseException error) { 
        SmartLog.e(TAG, "initEnvironment failed: " + error.getErrorMsg());    
        finish();
        return;
   }


4) 비디오 또는 이미지를 추가합니다.
비디오 레인을 만듭니다. 파일 경로를 사용하여 레인에 비디오 또는 이미지를 추가합니다.

// Obtain the HVETimeLine object.
HVETimeLine timeline = editor.getTimeLine();

// Create a video lane.
HVEVideoLane videoLane = timeline.appendVideoLane();

// Add a video to the end of the lane.
HVEVideoAsset videoAsset = videoLane.appendVideoAsset("test.mp4");

// Add an image to the end of the video lane.
HVEImageAsset imageAsset = videoLane.appendImageAsset("test.jpg");


기능 구축




// Initialize the capability engine.
visibleAsset.initHumanTrackingEngine(new HVEAIInitialCallback() {
        @Override
        public void onProgress(int progress) {
        // Initialization progress.
        }

        @Override
        public void onSuccess() {
        // The initialization is successful.
        }

        @Override
        public void onError(int errorCode, String errorMessage) {
        // The initialization failed.
    }
   });

// Track a person using the coordinates. Coordinates of two vertices that define the rectangle containing the person are returned.
List<Float> rects = visibleAsset.selectHumanTrackingPerson(bitmap, position2D);

// Enable the effect of person tracking.
visibleAsset.addHumanTrackingEffect(new HVEAIProcessCallback() {
        @Override
        public void onProgress(int progress) {
            // Handling progress.
        }

        @Override
        public void onSuccess() {
            // Handling successful.
        }

        @Override
        public void onError(int errorCode, String errorMessage) {
            // Handling failed.
        }
});

// Interrupt the effect.
visibleAsset.interruptHumanTracking();

// Remove the effect.
visibleAsset.removeHumanTrackingEffect();

좋은 웹페이지 즐겨찾기