ffmpeg로 필요한 트랙만 가져오는 방법이 있나요?
글쓴이: siba555 / 작성시간: 수, 2015/04/08 - 4:39오후
안녕하세요. ffmpeg초보입니다.
ffmpeg를 네트웍으로 불러들여 인코딩 서비스를 개발중이며 삽질중입니다.ㅠㅠ
av_read_frame함수로 데이터를 읽을때 오디오트랙이 여러개가 있는것들은 정상적인 1개 트랙만 읽어오고싶습니다.
즉 0번 비디오트랙 , 1번 오디오트랙 ac3, 2번 오디오트랙 aac가 있다고 하면 av_read_frame로 읽으면 0,1,2 모든트랙에서 프레임을 읽어오는데
오디오는 2개일필요가 없어서 0번 비디오트랙과 2번오디오트랙만 읽고 싶은 경우는 어떻게 해야하는지요?
감사합니다.
Forums:
전 완전 문외한입니다. 그냥 찾아 보고 올리는 거니까
전 완전 문외한입니다. 그냥 찾아 보고 올리는 거라는 걸 고려해 주세요.
말씀하시는 트랙이라는 것이 stream인 것 같습니다. 그건 다음 구조체의 streams라는 멤버로 나타내지는 것 같습니다.
http://ffmpeg.org/doxygen/trunk/structAVFormatContext.html#acfefb6b6cf21e87a0dcbd1a547ba2348
avformat_open_input()으로 파일을 읽으면 streams가 할당이 되고 각 stream은 index라는 것으로 구분이 됩니다.
stream들은 av_find_best_stream()라는 함수로 선택될 수 있지만 그냥 손으로 선택할 수도 있을 것입니다.
그런 후에 av_read_frame() 함수로 frame을 읽어 오면서 packet의 stream_index가 읽고 싶은 stream의 index인지 비교해서
읽고 아닌 것은 버리면 될 것입니다.
http://ffmpeg.org/doxygen/trunk/filtering_audio_8c-example.html#a15
감사합니다.
즐거운 하루되세요
댓글 달기