본문 바로가기
Back-end/JAVA & Spring

[JAVA] xuggler 를 사용한 동영상 길이 추출

by 꼬바리 2021. 11. 24.

xuggler 를 사용한 동영상 정보 추출

 

java로 동영상 컨트롤 하는 방법중 하나이다.

가장 흔하게 사용하는 FFmpeg는 다운받아 설치 해야한다는 불편함이있다.

xuggler 는 메이븐에 디펜던시 넣어주면 라이브러리 사용가능하다.

xuggler의 단점도 있다. 너무 오래된 라이브러리라는것.

라이브러리 관리가 되지않아 xuggler 검색시 나오는 디펜던시를 넣으면 오류가 뜬다.

 

 

https://mvnrepository.com/artifact/xuggle/xuggle-xuggler/5.4에 확인 가능하다.

<dependency>
    <groupId>xuggle</groupId>
    <artifactId>xuggle-xuggler</artifactId>
    <version>5.4</version>
</dependency>

Missing artifact xuggle:xuggle-xuggler:jar:5.4 라는 오류가 뜬다.

 

더이상 아무도 유지 관리 하지않지만 여전히 저장된 저장소가 있다.

Xuggler 기본 저장소는 유지 관리되지 않지만 모바일(Android 및 iOS)에 대한 지원을 추가하고 FFmpeg의 최신 버전을 유지하기 위해 7년 동안 포크를 유지하고 있다고 한다. 스택오버플로우링크

5.7버전을 사용해서 하루 사용했는데 ^^ 이클립스엔 다행히 메이븐을 받았는데
다음날 레포지토리 사이트가 404가 뜬다.
VS CODE로 프로젝트 합치려했는데..다른 방법 서치 (21 . 11 . 15)
<dependency>
  <groupId>xuggle</groupId>
  <artifactId>xuggle-xuggler-server-all</artifactId>
  <version>5.7.0-SNAPSHOT</version>
</dependency>
<repositories>
    <repository>
        <id>olivier-ayache-xuggler</id> 
    <url>https://dl.cloudsmith.io/public/olivier-ayache/xuggler/maven/</url>
        <releases>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
        </releases>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
        </snapshots>
    </repository>
</repositories>

다음을 사용하여 Maven 저장소를 구성할 수 있다.

 

[21 /11/ 25]관리가 되지않는 메이븐을 사용하려하면 너무 불편하다

결국 다시 5.4버전을 찾았다.

디팬던시는 5.4 버전 그대로 사용하고

<repository>
	<id>xuggle repo</id>
	<url>https://www.dcm4che.org/maven2/</url>
</repository>

5.4버전 만 해당하는 레포지토리

안된다면, 
https://files.liferay.com/mirrors/xuggle.googlecode.com/svn/trunk/repo/share/java/
url에 넣고 다시 도전...

 

 

- 예제 코드

String filename = "c:/myvideo.mp4";
IContainer container = IContainer.make();
int result = container.open(filename, IContainer.Type.READ, null);
long duration = container.getDuration();
long fileSize = container.getFileSize();

자세한 예제는 여기로 확인 가능하다.

Icontainer 메소드 확인은 여기로 확인가능

 

duration 영상의 길이 이며,  마이크로 세컨드 이다.

m(마이크로) = 10^-6 이다.

 

 

 

🥶에러 현황

더보기

# 1차 error

이클립스 TEST시 영상 길이 잘나온다. (빠른속도)

but, 현재 진행중인 프로젝트가 프론트단이 react여서 툴을 VS code 사용중이다.

VS code도 같이 디펜던시, 레포지토리 넣어주고 update 메이븐 진행했다.

빨간줄 (에러) 안뜨고 잘 작성했지만.. 디버그 찍어봐도 무한 루프를 돈다..

10초짜리 영상이 1시간이 지나도 영상 길이 측정이 안된다.

VS code에서 사용할수있는 방법을 찾아봐야한다..

 

#2차 

tool의 문제가 아니였다. 역시...

vScode는 톰캣으로 띄우고.. 이클립스는 테스트 코드를 빠르게 작성하기 위해 사용중이었다.

이클립스 = 걍 Run java  

VS code =톰캣

vs code로 런 자바 해서 테스트해보니 잘나온다.. 아(심한욕)

톰캣 메모리 문제인가..?.....

찾아보아야한다..................................ㅠㅠ

 

#3차

vs CODE 로 run java 실행시 문제 없이 출력된다..

톰캣 메모리 확인하고.. jconsole로 힙메모리 체크하고..

도저히 오류를 못잡았다.

그리고 아무런 수정하지않고 톰캠으로 띄웠는데.. 됐다 안됐다 한다.

고로 안되는것..

10번중 1번 실패?

후.. 이유를 모르겠네

 

 

728x90
반응형

댓글