EmbeddedMediaPlayerComponent가 있고 비디오에 오디오 트랙이 있는지 재생하기 전에 확인하고 싶습니다.
이 getMediaPlayer().getAudioTrackCount()
방법은 잘 작동하지만 비디오를 재생하고 public void playing(MediaPlayer mp)
이벤트 내부에있을 때만 작동합니다 . 나는 또한 시도했다
getMediaPlayer().prepareMedia("/path/to/media", null);
getMediaPlayer().play();
System.out.println("TRACKS: "+getMediaPlayer().getAudioTrackCount());
하지만 작동하지 않습니다. 0이라고되어 있습니다.
나는 또한 시도했다 :
MediaPlayerFactory factory = new MediaPlayerFactory();
HeadlessMediaPlayer p = factory.newHeadlessMediaPlayer();
p.prepareMedia("/path/to/video", null);
p.parseMedia();
System.out.println("TRACKS: "+p.getAudioTrackCount());
그러나 그것은 또한 -1이라고 말합니다. 내가 할 수있는 방법이 있습니까? 아니면 다른 기술을 사용합니까?
트랙 수는 메타 데이터 parseMedia()
가 아니므로 여기를 사용 하면 도움이되지 않습니다.
parseMedia()
예를 들어 ID3 태그 데이터, 제목, 아티스트, 앨범 등을 가져옵니다.
트랙 데이터는 일반적으로 미디어 재생이 시작될 때까지 사용할 수 없습니다. 트랙 수를 알고있는 특정 디코더 플러그인이기 때문입니다. 그럼에도 불구하고 미디어 재생이 시작된 직후에 항상 사용할 수있는 것은 아니며 때로는 불확실한 지연이 있습니다 (LibVLC 이벤트 없음).
미디어를 재생하기 전에 트랙 정보가 필요한 응용 프로그램에서는 일반적으로 기본 MediaInfo
응용 프로그램과 같은 것을 사용 하여 출력을 구문 분석합니다. 이것은 일반 텍스트 출력 형식이거나 XML 출력 형식이고 IIRC 최신 버전에는 JSON 출력이 있습니다. 체재. 단점은 이렇게하려면 네이티브 프로세스를 시작해야한다는 CommonsExec
것입니다. 저는 이와 같은 작업에 사용 합니다. 순수 Java 솔루션은 아니지만 매우 간단하고 작동하지만 vlcj도 마찬가지입니다!
실제로 메타 데이터를 원했다면 더 쉬운 방법이 있습니다.이 방법을 다음에서 사용하십시오 MediaPlayerFactory
.
public MediaMeta getMediaMeta(String mediaPath, boolean parse);
이렇게하면 미디어를 준비, 재생 또는 구문 분석하지 않고도 메타 데이터를 얻을 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다