2013-10-29 2 views
0

나는 비디오 파일 (웹 디스플레이 mp4, ogv, webm을위한 다중 포맷)의 폴더를 가지고있다. Java에서 해당 파일을 검색 할 때 파일 이름에서 확장자를 가져 와서 형식을 확인할 수 있습니다. 파일에서 비디오 및 오디오 코덱 데이터와 같은 다른 정보를 검색하는 방법이 있습니까?Jave Reading 비디오/오디오 코덱 파일로부터

파일을 만들려면 Java에서 ffmpeg를 사용하여 비디오 파일을 필요한 형식과 크기로 코드 변환해야하므로 파일을 만들 때 코덱 정보를 알고 있습니다. 자동으로 파일의 어딘가에 저장되지 않으면 메타 데이터 등을 설정하고 정보를 수동으로 저장하여 나중에 검색 할 수있는 방법이 있습니까? 파일 시스템에서 파일을 검색하고 검색하는 것만으로 파일 위치 또는 다른 데이터를 저장하는 데이터베이스를 사용하지 않습니다.

답변

0

비디오 및 오디오 데이터 스트림 (예 : H.264/AVC 비디오, AAC, 돌비 디지털 오디오 등)은 컨테이너 형식으로 알려진 파일 형식 안에 함께 다중화됩니다. MP4는 이러한 컨테이너 형식 중 하나이며 다양한 형식의 비디오 및 오디오 스트림을 저장할 수 있도록 설계되었습니다 (공식적으로 등록 된 형식 중 일부는 http://www.mp4ra.org/codecs.html 참조).

다른 컨테이너 형식은 특정 미디어 스트림을 디코딩하는 데 어떤 형식의 디코더를 사용해야하는지 결정하는 데 도움이되도록 포함 된 다양한 미디어 스트림을 식별하는 메타 데이터를 가지고 있습니다.

(자바를 사용한다고 말한 경우) ffprobe을 사용하여 미디어 파일에 사용 된 컨테이너, 비디오 및 오디오 형식 (기타 메타 데이터 포함)을 확인하십시오. 모든 미디어 유형에 대해 100 % 신뢰할 수는 없지만 (일부는 인식하지 못하기 때문에) ffmpeg (ffprobe는 ffmpeg 파생 도구 임)로 인코딩하면 작업을 수행해야합니다.

1

내가 아는 바로는 컨텐츠별로 파일 유형을 판별하는 쉬운 방법은 없습니다. 가정을하고 코드로 이러한 가정을 테스트해야합니다 (예를 들어 유형 X라고 생각하므로 항상 X 유형의 파일에있는 패턴의 첫 번째 Y 바이트를 검사합니다).

1

ffmpegffmpeg 유틸리티의 소스로 지정한 파일에서 자동으로 비디오 및 오디오 형식을 가져올 수 있다고 생각합니다.

다른 목적으로 메타 데이터가 필요한 경우 Red5 서버 소스 (java)를 사용해 볼 수 있습니다. 메타 데이터를 얻는 데 사용할 수있는 많은 독자 (MP4Reader 포함)가 있습니다. MP4에 대한 예를 들어

파일 MP4Reader는 클래스 생성자에 전체 파일을 검사 한 후 첫 번째 태그에서 메타 데이터를 얻을 수 있습니다

reader = new org.red5.io.mp4.impl.MP4Reader(myFile) 
String v = reader.getVideoCodecId(); // e.g. "avc1" (for h.254), "VP6F" 
String a = reader.getAudioCodecId(); // e.g. "mp4a" (for aac), ".mp3" (for mp3) 
...