주 메뉴 열기

wwiki β

바뀜

FFmpeg 개발

2,286 바이트 추가됨, 2022년 4월 10일 (일) 02:09
avcodec_send_packet
[[FFmpeg]] 명령 사용을 먼저 해 볼 수 있다.
 
== libavformat(lavf) ==
오디오 비디오 포맷 라이브러리 I/O and Muxing(Mux: '''mu'''ltipl'''x'''er, 다중통신장치)/Demuxing Library.
다양한 미디어 컨테이너 형식을 처리하기 위한 라이브러리입니다. 데이터에 액세스하기 위한 여러 프로토콜(예: 파일, tcp, http 및 기타)을 지원하는 I/O모듈이 있습니다. lavf를 사용하기 전에 av_register_all()을 호출하여 컴파일된 모든 muxer, 디먹서 및 프로토콜을 등록해야 합니다. libavformat의 네트워크 기능을 사용하려면 avformat_network_init()를 호출해야 합니다.
ret = av_parser_parse2(s, avctx, &pkt->data, &pkt->size, data, data_size, AV_NOPTS_VALUE, AV_NOPTS_VALUE, 0);
 
====== avcodec_send_packet ======
'''파라미터'''
 
* AVCodecContext * avctx 코덱 콘텍스트
* const AVPacket * avpkt [in]
 
<blockquote>입력값. 일반적으로 단일 비디오 프레임이거나 몇 개의 완성된 오디오 프레임들이다. 패킷의 소유권은 호출한 곳에 유지되고, 디코더는 그 패킷의 값을 변경하지 않을 것이다. 디코더는 패킷 데이터에 대한 참조를 생성할 수 있다.(혹은 레퍼런스 카운트되지 않는다면 복사할 것이다.) 오래된 함수들과 다르게 패킷은 항상 전체가 소비되고, 패킷이 어떤 오디오 코덱처럼 여러 프레임들을 포함한다면 avcodec_receive_frame()함수를 여러 번 호출해야 할 것이다. avpkt가 NULL이거나 혹은 avpkt의 data가 NULL이거나 size가 0인 경우에는 스트림의 끝이라는 신호인 flush pakcet으로 간주된다. 처음 flush packet을 보내는 것은 성공을 반환한다. 다시 보내는 것은 불필요하고 AVERROR_EOF를 리턴할 것이다. 만약 디코더가 여전히 버퍼된 프레임을 가지고 있다면, flush packet을 보낸 후에 리턴한다.</blockquote>'''반환''': int<blockquote>성공이면 0, 그렇지 않으면 음수인 에러코드를 리턴한다. </blockquote>원시 패킷 데이터를 디코더에 입력으로 제공한다.
 
내부적으로 이 함수를 호출하면 각 패킷의 디코딩하는 것에 영향을 미치는 AVCodecContext의 관련된 필드를 복사할 것이다. 그리고 실제로 패킷이 디코딩되었을 때 적용한다.
 
'''경고'''
 
입력버퍼인 avpkt->data는 어떤 최적화된 bitstream reader는 끝을 넘어서 한번에 32비트나 64비트를 읽기 때문에 실제 읽은 바이트보다 AV_INPUT_BUFFER_PADDING_SIZE가 커야 한다.
 
동일한 AVCodecContext를 avcodec_decode_video2()와 같은 오래된 함수와 혼용하지 마라. 기대하지 않았던 값을 리턴할 것이다.
 
'''주의'''
 
AVCodecContext는 디코더에 전달하기 전에 avcodec_open2()함수를 호출하여 열어야 한다.
==== Core functions/structures. ====
== 각주 ==
<references />
[[분류:FFMPEG]]
편집
2,431