2013-02-04 7 views
1

현재 mkv 형식을 재생할 수있는 Java 미디어 플레이어에서 작업 중입니다. VLCJ를 사용하고 있는데, 작동하지 않는 오디오 트랙을 변경하려고 할 때를 제외하고는 모든 것이 작동합니다. VLC는 도청 된 오디오 트랙을 설정하는 기본 API 호출을 2.0.5 이전Java VLCJ 플레이어, 오디오 트랙이 작동하지 않습니다.

여기에 코드를

공용 클래스 MediaPlayer를 libVLC 버전에서 {

private static JFileChooser filechooser = new JFileChooser(); 

public mediaplayer() { 
} 

public static void main(String[] args) { 
    String vlcPath = "", mediaPath = ""; 
    File ourfile; 

    filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY); 
    filechooser.showSaveDialog(null); 
    ourfile = filechooser.getSelectedFile(); 
    mediaPath = ourfile.getAbsolutePath(); 


    EmbeddedMediaPlayerComponent mediacom = new EmbeddedMediaPlayerComponent(); 



     JFrame frame = new JFrame(); 
     frame.setContentPane(mediacom); 
     frame.add(canvas); 
     frame.setLocation(100, 100); 
     frame.setSize(1050, 600); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     frame.setVisible(true); 

    MediaPlayer mplayer = mediacom.getMediaPlayer(); 

    mplayer.playMedia(mediaPath); 
    mplayer.setAudioTrack(1); 







} 

}

답변

1

입니다.

libVLC 2.0.5의 수정 사항을 사용하면 오디오 트랙 설정이 안정적으로 이루어 지지만 0..N의 단순한 인덱스를 가정 할 수는 없으므로 순차적 트랙 번호를 가정 할 수 없습니다. 호출을 통해 오디오 트랙을 나열해야합니다 mediaPlayer.getAudioDescriptions(). 반환 된 TrackDescription 객체에는 mediaPlayer.setAudioTrack()과 함께 사용해야하는 오디오 트랙 식별자가 들어 있습니다.

오디오를 비활성화하려면 "사용 안 함"에 대한 설명으로 트랙의 오디오 트랙 식별자를 선택할 수 있습니다.

또한 mediaPlayer.playMedia()를 호출 한 직후 오디오 트랙을 설정하지 못할 수도 있습니다. 미디어가 비동기 적으로 시작되고 트랙 정보가 사용 가능해지기 전에 미디어가 실제로 시작되거나 구문 분석 될 때까지 기다려야합니다.