주 메뉴 열기

wwiki β

바뀜

FFmpeg 개발

374 바이트 추가됨, 2020년 5월 31일 (일) 00:40
열린 파일에서 읽기
열린 AVFormatContext에서 데이터를 읽는 것은 av_read_frame()를 반복적으로 호출하면 된다. 호출할 때마다 인코딩된 데이터인 하나의 AVStream을 포함한 AVPacket(AVPacket.stream_index번호로 식별된다.)을 리턴한다. 데이터를 디코딩하려면 패킷을 libavcodec의 디코딩 함수인 avcodec_send_packet()이나 avcodec_decode_subtitle2()에 직접 전달할 수 있다.
[[AVPacket.pts]], AVPacket.dts, AVPacket.duration은 타이밍정보가 설정된다. 만약 스트림이 제공하지 않는다면 pts와 dts가 AV_NOPTS_VALUE이고 duration은 0이다. 타이밍 정보는 AVStream.time_base단위로 표시됩니다. 즉, 시간단위를 곱하여 초로 변환한다.
반환된 패킷에 AVPacket.buf가 설정되어 있으면 패킷이 동적으로 할당되므로 사용자가 이를 무한정 유지할 수 있다. 그렇지 않으면 AVPacket.buf는 NULL이다NULL이고, 패킷 데이터는 디먹서 안의 정적 저장소에 백업되고(backed) 파일을 닫거나 av_read_frame()를 호출할 때까지만 유효하다. 더 사용하려면 av_dup_packet()함수가 av_malloc()를 호출해서 그것을 복사할 수 있다. 두 경우 모두 더 이상 필요하지 않으면 av_packet_unref()를 호출해서 패킷을 해제한다.
== 외부링크 ==
편집
2,431