Je travaille actuellement sur une application de preuve de concept écrite en monotouch qui enregistrerait des vidéos. J'ai besoin d'ajuster l'heure du CMSampleBuffer, j'ai trouvé un code qui fait exactement cela mais il est écrit en Objective-C. J'ai essayé de traduire le code ci-dessous, mais je ne trouve aucun mappage à cette fonction - CMSampleBufferGetSampleTimingInfoArray, comment allons-nous appeler cette fonction dans monotouch? Ci-dessous le code complet pour le réglage du temps, mais en Objective-C:Monotouch - CMSampleBufferGetSampleTimingInfoArray
- (CMSampleBufferRef) adjustTime:(CMSampleBufferRef) sample by:(CMTime) offset
{
CMItemCount count;
CMSampleBufferGetSampleTimingInfoArray(sample, 0, nil, &count);
CMSampleTimingInfo* pInfo = malloc(sizeof(CMSampleTimingInfo) * count);
CMSampleBufferGetSampleTimingInfoArray(sample, count, pInfo, &count);
for (CMItemCount i = 0; i < count; i++)
{
pInfo[i].decodeTimeStamp = CMTimeSubtract(pInfo[i].decodeTimeStamp, offset);
pInfo[i].presentationTimeStamp = CMTimeSubtract(pInfo[i].presentationTimeStamp, offset);
}
CMSampleBufferRef sout;
CMSampleBufferCreateCopyWithNewTiming(nil, sample, count, pInfo, &sout);
free(pInfo);
return sout;
}
Avez-vous vu cela? https://github.com/mono/maccore/blob/master/src/CoreMedia/CMSampleBuffer.cs la fonctionnalité que vous mentionnez est commentée, mais selon ce que vous faites, cela peut être utile –
Oui, je l'ai vu, La réponse de Rolf fonctionne presque, sauf pour la partie où nous créons un CMSampleBuffer en lui passant un handle. Le constructeur CMSampleBuffer pour cela est déclaré interne. – lmumar
J'essaie d'implémenter une fonctionnalité d'enregistrement vidéo similaire à celle de la vigne, où vous pouvez enregistrer/suspendre plusieurs fois. J'ai réussi à le dupliquer en enregistrant plusieurs fichiers et en combinant les fichiers après (AVMutableComposition) mais je ne peux pas résoudre le problème de scintillement de la vidéo surtout si vous faites la séquence d'enregistrement/pause trop rapidement. J'ai pensé qu'il n'est pas nécessaire de l'enregistrer dans plusieurs fichiers, mais chaque fois que j'ai besoin de reprendre, je dois recalculer l'heure du CMSampleBuffer pour que la vidéo soit lue en continu. – lmumar