ffmpeg : decoding_encoding.c 및 filtering_video.c의 exmaples에 이어 iPhone에서 찍은 비디오 파일 하나를 처리합니다. 비디오 파일 : .mov, 비디오 크기; 480x272, 비디오 코덱 : H.264/AVC, 초당 30 프레임, 비트율 : 605kbps.왜 frame-> pts가 1이 아닌 20만큼 증가합니까?
먼저 YUV 인 각 프레임을 추출합니다. YUV를 RGB24로 변환하고 RGB24를 처리 한 다음 RGB24를 .ppm 파일에 씁니다. .ppm 파일이 정확한지 보여줍니다.
그런 다음 처리 된 RGB24 프레임을 비디오 파일로 인코딩 할 계획입니다. MPEG는 RGB24 그림 형식을 지원하지 않으므로 AV_CODEC_ID_HUFFYUV를 사용했습니다. 그러나 출력 비디오 파일 (18.5MB 표시)은 재생되지 않습니다. Movie Player에서 Ubuntu의 오류라고 주장합니다. 스트림 유형을 결정할 수 없습니다. 나는 또한 VCL에서 그것을 시도했다. 오류 정보 없이는 작동하지 않습니다.
내 두 번째 질문
은 다음과 같습니다 입력 비디오 파일, 나는 그 점을 얻을에서 각각 추출 된 FRAM를 들어 다음과 같이 filtering_video.c에 따라 : 나는 각 프레임의 PTS를 인쇄하고, 그 찾을
frame->pts = av_frame_get_best_effort_timestamp(frame);
아래와 같이 20만큼 증가 :
프레임은 상기 입력 영상에서 추출 된 프레임이고,이 pFrameRGB_count RGB24 형태로 처리 된 프레임에 대한 카운트pFrameRGB_count: 0, frame->pts: 0
pFrameRGB_count: 1, frame->pts: 20
pFrameRGB_count: 2, frame->pts: 40
pFrameRGB_count: 3, frame->pts: 60
.
왜 잘못 되었나요?