i use avcapturevideodataoutput
in demo ,for take photos in loop (like scanner) without sound, set fps low level
[device setactivevideominframeduration:cmtimemake(1, 1)]; [device setactivevideomaxframeduration:cmtimemake(1, 1)];
in code, this
- (void)captureoutput:(avcaptureoutput *)captureoutput didoutputsamplebuffer:(cmsamplebufferref)samplebuffer fromconnection:(avcaptureconnection *)connection { nslog(@"date"); }
for check work, found print 24 times in second,not 1 times 1 second
ps: device edition iphone 5c , ios 8.12
i met same problem.you should take @ function explanation setactivevideominframeduration or setactivevideomaxframeduration. apple says:
on ios, receiver's activevideominframeduration resets default value under following conditions:
- receiver's activeformat changes
- receiver's avcapturedeviceinput's session's sessionpreset changes
- receiver's avcapturedeviceinput added session
so, should call setactivevideominframeduration , setactivevideomaxframeduration after changing activeformat,sessionpreset , avcapturesession's addinput.