criado repositório jhonny-editor no Gitea adicionado script admin/deploy.command com commit automático atualizado admin/DEV-NOTES.md com template limpo Resumo: - 48 arquivos alterados - 26 novos - 19 modificados - 3 removidos 22 files changed, 658 insertions(+), 568 deletions(-) Arquivos: - AGENTS.md - admin/DEV-NOTES.md - admin/OpenCut.command - admin/commit.command - admin/deploy.command - admin/update.command - code/cep-plugin/index.html - code/cep-plugin/main.js - code/cep-plugin/styles.css - code/engine/ARQUITETURA.md - code/engine/arquitetura/README.md - code/engine/gerar_relatorio_timeline.py - code/engine/integracoes/apple_speech/apple_speech_transcriber.swift - code/engine/integracoes/apple_speech/provider_de_transcricao_apple.py - code/engine/integracoes/midia/__init__.py - code/engine/integracoes/whisper/provider_de_transcricao_local.py - code/engine/scanner/__init__.py - code/engine/scanner/coordenacao/__init__.py - code/engine/scanner/descoberta/__init__.py - code/engine/scanner/modelos.py - code/engine/scanner/transcricao_da_timeline.py - code/src/tools/discovery.ts - :memory:.ses - admin/Jhonny.command - admin/inativos/OpenCut.command - admin/inativos/update.command - code/docs/glossario-analise-emocional.md - code/docs/levantamento-apple-vision-e-apple-intelligence.md - code/docs/levantamento-ferramentas-analise-visual-local.md - code/engine/arquitetura/biblioteca-inteligente-de-videos.md - code/engine/executar_scanner.py - code/engine/integracoes/huggingface/ - code/engine/integracoes/midia/extracao_de_metadados.py - code/engine/integracoes/visual/ - code/engine/requirements-visual.txt - code/engine/scanner/configuracao_visual.py - code/engine/scanner/descoberta/descoberta_de_arquivos.py - code/engine/scanner/metadados.py - code/engine/scanner/relatorio_visual.py - code/engine/scanner/retakes/ - code/engine/scanner/visual.py - code/engine/testes/test_analise_visual_local.py - code/engine/testes/test_arquivos_e_metadados.py - code/engine/testes/test_provider_de_transcricao_apple.py - code/relatorios/analise-brools/ - code/relatorios/analise-visual/ - code/relatorios/audio/arquivos/ - code/relatorios/transcricao-timeline.md
288 lines
21 KiB
Markdown
288 lines
21 KiB
Markdown
# Levantamento: Apple Vision e Apple Intelligence para análise editorial de vídeo
|
|
|
|
Data: 2026-09-08
|
|
Escopo: analisar vídeos localmente, construir contexto confiável para o programa e, somente depois, pedir à IA uma seleção editorial revisável.
|
|
|
|
## Resumo executivo
|
|
|
|
A ideia é viável, mas a primeira entrega deve ser um **arquivo cronológico de contexto multimodal**, não um motor de decisão editorial. Esse arquivo será a fonte que posteriormente poderá ser lida pelo editor humano ou por uma IA de decisão.
|
|
|
|
O pipeline tem duas camadas:
|
|
|
|
1. **Apple Vision + AVFoundation** leem os frames e produzem fatos temporais: texto, rostos, pessoas, pose, códigos, saliência, qualidade, similaridade e movimento.
|
|
2. **Apple Intelligence via Foundation Models**, inicialmente opcional, pode transformar os fatos em descrições de cena e resumos. Mais adiante, outra chamada de IA poderá ler o arquivo completo e decidir cortes, permanências e ordem.
|
|
|
|
O arquivo de contexto não deve ser confundido com a decisão. A precisão temporal vem do nosso pipeline de frames e da transcrição; a IA pode interpretar e decidir depois. Toda decisão futura deverá apontar de volta para os intervalos e evidências do arquivo, para que o editor saiba “cortar ou manter” e por quê.
|
|
|
|
## O que cada tecnologia faz
|
|
|
|
### AVFoundation: acessar o vídeo com timestamp correto
|
|
|
|
AVFoundation deve ser a camada de decodificação. Ela lê o `AVAsset`, duração, taxa de frames, orientação, dimensões e amostras de vídeo (`CMSampleBuffer`/`CVPixelBuffer`). O ponto importante é preservar o timestamp do arquivo de origem e a transformação de orientação antes de entregar a imagem ao Vision.
|
|
|
|
O projeto hoje extrai uma amostra via OpenCV. Isso é suficiente para o primeiro protótipo, mas um helper Swift com AVFoundation será melhor quando precisarmos de timestamps exatos, inclusive VFR; leitura de frames próximos a cortes; orientação, HDR e color space explícitos; processamento em streaming; e `CVPixelBuffer` direto para Vision e Foundation Models.
|
|
|
|
`AVAssetReader` é a API oficial para ler dados de mídia de um `AVAsset`.
|
|
|
|
### Vision: fatos observáveis por frame
|
|
|
|
O Vision trabalha com o padrão “criar request → executar sobre imagem/frame → ler observations”. Também possui `VNSequenceRequestHandler` para requests que acompanham uma sequência de frames. As caixas usam coordenadas normalizadas; o adapter deve converter somente na borda do sistema e manter a convenção do domínio documentada.
|
|
|
|
| Capacidade | API Vision | Evidência útil para edição |
|
|
| --- | --- | --- |
|
|
| Texto em tela | `RecognizeTextRequest` / `VNRecognizeTextRequest` | texto, confiança, idioma e bounding box; localizar cartelas, placas, telas e erros de legenda |
|
|
| Regiões de texto | `DetectTextRectanglesRequest` | área de texto mesmo quando o OCR não consegue ler o conteúdo |
|
|
| Rostos | `DetectFaceRectanglesRequest` | quantidade, caixas e presença/posição de rosto |
|
|
| Landmarks faciais | `DetectFaceLandmarksRequest` | olhos, boca, sobrancelhas e contornos; útil para enquadramento e olhos fechados, não para inferir emoção |
|
|
| Qualidade facial | `DetectFaceCaptureQualityRequest` | sinal de nitidez/qualidade de captura do rosto |
|
|
| Pessoas | `DetectHumanRectanglesRequest` e requests de pessoa | presença, quantidade e ocupação aproximada |
|
|
| Pose corporal | `DetectHumanBodyPoseRequest` | juntas, posição e confiança; base para postura e ação simples |
|
|
| Mãos | `DetectHumanHandPoseRequest` | juntas da mão e confiança; base para gestos definidos por regras |
|
|
| Animais | `RecognizeAnimalsRequest` | presença de gato, cachorro e outros animais reconhecidos |
|
|
| Barcodes/QR | `DetectBarcodesRequest` | conteúdo, simbologia e localização |
|
|
| Classificação | `ClassifyImageRequest` / `VNClassifyImageRequest` | rótulos gerais e confiança; sinal de assunto, não verdade editorial |
|
|
| Similaridade visual | `GenerateImageFeaturePrintRequest` | distância entre frames; deduplicar quase-iguais e agrupar takes |
|
|
| Saliencia | `GenerateAttentionBasedSaliencyImageRequest` e `GenerateObjectnessBasedSaliencyImageRequest` | regiões que atraem atenção; apoiar crop e composição |
|
|
| Máscara de pessoa | `GeneratePersonInstanceMaskRequest` / segmentação | separar pessoa/fundo e medir ocupação |
|
|
| Estética | `CalculateImageAestheticsScoresRequest` | score auxiliar para escolher thumbnail ou frame representativo |
|
|
| Horizonte | `DetectHorizonRequest` | inclinação do horizonte; sinal técnico/compositivo |
|
|
| Movimento/tracking | `TrackObjectRequest`, `TrackRectangleRequest`, optical flow | continuidade de sujeito, deslocamento e movimento entre frames |
|
|
|
|
Essas APIs não entregam, sozinhas, “essa é a melhor tomada”, “a pessoa está nervosa” ou “este trecho deve entrar no corte”. Elas entregam observações e scores. Conceitos editoriais precisam ser derivados por regras, comparação temporal ou Foundation Models.
|
|
|
|
### Inventário ampliado da documentação
|
|
|
|
Além da tabela acima, o framework inclui estas famílias que podem entrar no Scanner conforme o caso:
|
|
|
|
| Família | O que pode ser extraído |
|
|
| --- | --- |
|
|
| Documentos | estrutura de documento, palavras, linhas, parágrafos, listas, tabelas, regiões de texto e códigos; útil para cenas com prontuário, formulário, receita ou tela organizada |
|
|
| Segmentação interativa | máscara a partir de pontos, retângulo ou rabisco; útil quando o usuário indicar manualmente o sujeito |
|
|
| Pose 3D | pontos do corpo humano em espaço 3D relativo à câmera; exige validar se o vídeo e o dispositivo fornecem resultado estável |
|
|
| Pose animal | pontos/partes do corpo de animais; útil para identificar ação em cenas com animais |
|
|
| Trajetórias | trajetória de formas em movimento parabólico; caso especializado, não um detector geral de ação |
|
|
| Contornos | linhas/arestas da imagem; útil para medir forma, desenho e mudanças bruscas, mas gera muitos dados |
|
|
| Retângulos | quadriláteros/regiões retangulares projetadas; útil para telas, documentos, quadros e superfícies |
|
|
| Mancha na lente | indício de smudge na lente em frame ou vídeo; alerta técnico |
|
|
| Registro de imagem | transformação translacional, homográfica ou alinhamento entre imagens; útil para comparar takes e estabilidade |
|
|
| Subject lifting | máscara de objetos perceptíveis ou pessoas para separar primeiro plano e fundo |
|
|
| Modelo customizado | `CoreMLRequest` executa um modelo Core ML escolhido pelo produto; as classes e atributos passam a depender do modelo distribuído por nós |
|
|
|
|
Os resultados normalmente são uma combinação de `confidence`, `boundingBox`/região normalizada, pontos/landmarks, rótulos, score, máscara, distância ou transformação. Para vídeo, cada resultado precisa receber o `timestamp` do frame; requests com estado devem usar o mesmo handler de sequência.
|
|
|
|
**O que o Vision não oferece pronto:** descrição livre de “o que está acontecendo”, emoção da fala, identidade da pessoa, intenção, qualidade narrativa, transcrição de áudio ou decisão de corte. Essas camadas vêm, respectivamente, de Foundation Models/VLM, análise de áudio, regras de privacidade, transcrição e um motor editorial posterior. O Vision pode fornecer os sinais que apoiam algumas dessas inferências, mas não deve receber esse significado como se fosse uma observação nativa.
|
|
|
|
Fontes: [Vision](https://developer.apple.com/documentation/vision), [VNSequenceRequestHandler](https://developer.apple.com/documentation/vision/vnsequencerequesthandler), [feature prints](https://developer.apple.com/documentation/vision/generateimagefeatureprintrequest) e [thumbnails de vídeo](https://developer.apple.com/documentation/vision/generating-thumbnails-from-videos).
|
|
|
|
### Foundation Models: interpretar evidências e gerar um plano
|
|
|
|
`FoundationModels` dá acesso ao `SystemLanguageModel`, o modelo de linguagem on-device que alimenta o Apple Intelligence, quando estiver disponível no dispositivo. Ele é bom para resumir transcrição e evidências; extrair entidades, assuntos e tags; classificar trechos segundo critérios fornecidos; comparar descrições de cenas; gerar JSON/Swift estruturado com `@Generable`; e propor títulos, capítulos, selects e versões para plataformas.
|
|
|
|
A documentação atual também descreve prompting multimodal: uma imagem pode ser anexada ao prompt e o modelo pode analisá-la. Isso permite enviar frames ou uma contact sheet, mas não transforma a sessão em um analisador de vídeo temporal. A orquestração de frames, timestamps e cenas continua sendo responsabilidade do nosso programa.
|
|
|
|
O desenho mais forte para nós é usar ferramentas: o modelo recebe contexto textual e pode chamar uma ferramenta controlada que consulta evidências Vision, OCR ou um índice local. A ferramenta retorna fatos; o modelo interpreta; o modelo não ganha permissão implícita para alterar o Premiere.
|
|
|
|
Limitações relevantes:
|
|
|
|
- verificar disponibilidade em runtime com `SystemLanguageModel.default.availability`;
|
|
- a janela on-device documentada é de 4096 tokens por sessão;
|
|
- registrar prompt e versão, pois o modelo muda com atualizações do sistema;
|
|
- validar respostas estruturadas; não usar texto livre como contrato de edição;
|
|
- limitar imagens por sessão, pois muitas imagens aumentam custo, latência e contexto;
|
|
- manter fallback quando o modelo local estiver indisponível.
|
|
|
|
Fontes: [Foundation Models](https://developer.apple.com/documentation/foundationmodels), [geração e tarefas](https://developer.apple.com/documentation/foundationmodels/generating-content-and-performing-tasks-with-foundation-models), [prompting multimodal](https://developer.apple.com/documentation/foundationmodels/analyzing-images-with-multimodal-prompting), [context window](https://developer.apple.com/documentation/technotes/tn3193-managing-the-on-device-foundation-model-s-context-window) e [SystemLanguageModel](https://developer.apple.com/documentation/foundationmodels/systemlanguagemodel).
|
|
|
|
## Como analisar frame a frame sem desperdiçar processamento
|
|
|
|
“Frame a frame” deve significar que cada frame escolhido tem timestamp e evidências próprias — não necessariamente processar todos os 24/30/60 frames por segundo na primeira passagem.
|
|
|
|
```text
|
|
Vídeo original
|
|
↓ AVFoundation / sampler
|
|
Frames de baixa cadência + frames ao redor de cortes
|
|
↓ Vision barato
|
|
Mapa temporal de cenas, movimento, qualidade, faces e similaridade
|
|
↓ seleção de candidatos
|
|
Frames representativos + contact sheet + transcrição por intervalo
|
|
↓ Foundation Models
|
|
Descrição, tags, ranking e plano editorial estruturado
|
|
↓ revisão
|
|
Operações Premiere com IDs e guards de revisão
|
|
```
|
|
|
|
**Passagem 1 — cobertura:** 1 frame por segundo, ou cadência ajustada à duração, mais frames imediatamente antes/depois de mudanças de cena. Usar qualidade, faces/pessoas, OCR curto, feature print e diferença entre frames.
|
|
|
|
**Passagem 2 — refinamento:** subdividir somente as cenas candidatas. Aumentar a cadência para localizar entrada/saída do sujeito, fala, gesto, olho fechado, blur, troca de enquadramento e continuidade.
|
|
|
|
**Passagem 3 — semântica:** enviar ao Foundation Models uma descrição compacta por cena e, quando necessário, uma contact sheet com poucos frames etiquetados por timestamp. A IA escolhe entre evidências já localizadas, não inventa intervalos.
|
|
|
|
O exemplo oficial da Apple para thumbnails combina score estético por amostra e feature prints para evitar frames visualmente semelhantes. É um bom ponto de partida para “melhor frame da cena”, mas o score estético deve continuar sendo somente um sinal auxiliar.
|
|
|
|
## Produto inicial: arquivo cronológico de contexto
|
|
|
|
O primeiro produto deve ser um arquivo único por projeto ou vídeo, ordenado cronologicamente. Ele funciona como um “roteiro técnico aumentado”: cada intervalo contém o que foi falado, o que aparece na imagem e os sinais que podem ajudar uma decisão futura.
|
|
|
|
Pode haver duas representações do mesmo conteúdo:
|
|
|
|
- `contexto-video.json`: formato completo, estável e consumível por máquina;
|
|
- `contexto-video.md` ou `.srt` enriquecido: leitura humana, com timestamp, transcrição e descrição da cena no mesmo bloco.
|
|
|
|
O JSON é a fonte de verdade. Markdown e SRT são visões derivadas e não devem substituir os IDs, timestamps, confiança e revisões do JSON.
|
|
|
|
Exemplo de unidade cronológica:
|
|
|
|
```json
|
|
{
|
|
"segment_id": "clip-07@42.100-49.800",
|
|
"source_id": "project-item-123",
|
|
"start": 42.1,
|
|
"end": 49.8,
|
|
"transcription": {
|
|
"text": "A frase falada neste intervalo.",
|
|
"speaker": "speaker-01",
|
|
"confidence": 0.93
|
|
},
|
|
"caption": {"text": "A frase falada neste intervalo."},
|
|
"visual": {
|
|
"description": "Pessoa em plano médio falando para a câmera.",
|
|
"objects": ["person", "microphone"],
|
|
"faces": 1,
|
|
"text_on_screen": [],
|
|
"composition": {"face_well_framed": true, "caption_area_available": true},
|
|
"technical_alerts": []
|
|
},
|
|
"speech_signals": {
|
|
"emotion": "calm",
|
|
"confidence": 0.61,
|
|
"provider": "speech_emotion_provider"
|
|
},
|
|
"representative_frames": [
|
|
{"frame_id": "clip-07@44.000", "timestamp": 44.0, "path": "frames/...jpg"}
|
|
],
|
|
"evidence_ids": ["clip-07@44.000:face-01"],
|
|
"status": "observed"
|
|
}
|
|
```
|
|
|
|
A descrição visual deve ser marcada como `observed`, `inferred` ou `unknown`. “Pessoa em plano médio” pode ser uma descrição apoiada por Vision; “parece confiante” é uma interpretação e deve carregar confiança e provider. Emoção de fala também é um sinal probabilístico, não um fato psicológico. Nunca esconder incerteza dentro de uma frase narrativa.
|
|
|
|
Esse arquivo permite ao editor navegar cronologicamente e responder, em uma etapa posterior:
|
|
|
|
- manter ou cortar este intervalo;
|
|
- escolher entre takes semelhantes;
|
|
- remover repetição, silêncio, erro técnico ou retake;
|
|
- preservar uma fala importante mesmo quando o frame não é o mais bonito;
|
|
- reorganizar trechos para uma intenção editorial específica.
|
|
|
|
## Contexto que o programa deve montar
|
|
|
|
Cada evidência deve ser persistida separadamente da interpretação:
|
|
|
|
```json
|
|
{
|
|
"evidence_id": "clip-07@12.480:face-01",
|
|
"clip_id": "clip-07",
|
|
"source_id": "project-item-123",
|
|
"timestamp": 12.48,
|
|
"interval": {"start": 12.0, "end": 13.0},
|
|
"kind": "face",
|
|
"value": {"bounding_box": {"x": 0.31, "y": 0.18, "width": 0.22, "height": 0.42}},
|
|
"confidence": 0.97,
|
|
"provider": "apple_vision",
|
|
"model_or_revision": "vision-revision-x",
|
|
"source_revision": "sha256:..."
|
|
}
|
|
```
|
|
|
|
O arquivo deve conter intenção opcional do usuário; metadados do clipe e da timeline; transcrição temporal; legenda correspondente; intervalos de cena; OCR consolidado; presença/posição de pessoas e rostos; qualidade e composição; movimento, similaridade e possíveis retakes; sinais de emoção da fala; frames representativos; limitações, falhas de provider e confiança.
|
|
|
|
Não enviar uma lista gigantesca de observações repetidas. Consolidar eventos contínuos, por exemplo `rosto presente de 12.0s a 18.4s`, mantendo os frames brutos para auditoria.
|
|
|
|
## Etapa posterior: decisão editorial por IA
|
|
|
|
Depois que o arquivo cronológico estiver validado, podemos entregá-lo a uma IA de decisão. Essa IA será complementar ao contexto, não parte obrigatória da primeira análise. Ela poderá receber:
|
|
|
|
1. o JSON completo, quando couber no contexto;
|
|
2. chunks cronológicos com estado resumido entre eles;
|
|
3. uma intenção editorial, como “vídeo de 60 segundos para apresentação”;
|
|
4. regras explícitas, como preservar falas sobre determinado assunto;
|
|
5. autorização para produzir somente uma decisão ou também um plano de edição.
|
|
|
|
Quando o arquivo for grande, não devemos simplesmente truncá-lo. O programa deve fazer chunking cronológico, consolidar o estado e gerar um resultado final com referências globais aos `segment_id` e `evidence_ids` originais.
|
|
|
|
## Contrato da saída editorial
|
|
|
|
A saída posterior da IA de decisão deve ser um artefato de planejamento, não uma edição aplicada:
|
|
|
|
```json
|
|
{
|
|
"scene_id": "scene-04",
|
|
"decision": "candidate",
|
|
"score": 0.84,
|
|
"reasons": ["fala cobre o tema", "rosto bem enquadrado", "sem alerta técnico"],
|
|
"selected_range": {"start": 42.1, "end": 49.8},
|
|
"evidence_ids": ["clip-07@42.1:...", "clip-07@47.0:..."],
|
|
"warnings": [],
|
|
"requires_review": true
|
|
}
|
|
```
|
|
|
|
Regras: `selected_range` só aponta para timestamps/evidências existentes; toda decisão tem `evidence_ids`; ausência de evidência vira `unknown`; a IA sugere trim, descarte, agrupamento e ordem, mas não escreve diretamente no projeto; o aplicador confere `source_revision` e `timeline_revision`; decisões de alto impacto exigem confirmação.
|
|
|
|
Isso encaixa no que já existe em `EditorialContextPack` e `EditorialPlan`: ambos são revision-aware, citáveis e read-only antes da aplicação.
|
|
|
|
## Situação atual do projeto
|
|
|
|
Já temos `QuadroDeVideo` com timestamp, índice, dimensões, imagem e caminho; `AnalisadorDeFrame` e `AnalisadorDeSequenciaDeQuadros`; `DetectorDeCenas`; análises OpenCV de qualidade, composição, movimento e continuidade; adapter inicial `AnalisadorAppleVision` para OCR e faces via PyObjC; adapters ONNX/Core ML e MediaPipe; e contexto editorial/plano com evidência, revisões e revisão obrigatória.
|
|
|
|
Gaps para a implementação Apple completa:
|
|
|
|
1. ampliar o adapter Vision para pose, mãos, qualidade facial, feature print, saliência, pessoa e estética;
|
|
2. adicionar runner Swift/AVFoundation para timestamps e `CVPixelBuffer`, mantendo PyObjC como protótipo;
|
|
3. consolidar evidências contínuas e gerar contact sheets etiquetadas;
|
|
4. criar `FoundationModelsProvider` separado, com disponibilidade, timeout, versão, token budget e saída tipada;
|
|
5. criar store de frames/evidências por hash do arquivo e revision;
|
|
6. testar orientação, VFR, HDR, vertical/horizontal e falha parcial de requests;
|
|
7. medir precisão editorial em fixtures reais antes de permitir aplicação automática.
|
|
|
|
## Ordem recomendada
|
|
|
|
### Fase 1 — Vision determinístico
|
|
|
|
Implementar OCR, faces, pessoas, qualidade, feature print e estética. O resultado deve ser JSON versionado por frame. Manter OpenCV para métricas existentes e comparar resultados, em vez de substituir tudo de uma vez.
|
|
|
|
### Fase 2 — cenas e selects
|
|
|
|
Combinar cortes, similaridade e qualidade para produzir cenas e frames representativos. Criar visualização de auditoria com timeline, thumbnail, timestamp, observações e confiança.
|
|
|
|
### Fase 3 — descrições de cena
|
|
|
|
Gerar descrições visuais sincronizadas com os intervalos da transcrição e produzir o JSON cronológico. Começar com descrições baseadas nos fatos Vision; usar Foundation Models somente para transformar evidências em linguagem curta, com marcação de confiança e origem.
|
|
|
|
### Fase 4 — Apple Intelligence como decisão complementar
|
|
|
|
Enviar o arquivo cronológico ou seus chunks para uma IA separada. Começar por resumo e tags; depois manter/cortar; por fim plano de edição com saída guiada e validação estrita. Se o modelo estiver indisponível, o Scanner continua entregando o arquivo completo de contexto.
|
|
|
|
### Fase 5 — Premiere
|
|
|
|
Usar o plano existente como camada de revisão. Somente depois da confirmação chamar operações de organização, stringout, rough cut, marcadores ou legendas, sempre com readback.
|
|
|
|
## Decisão
|
|
|
|
Devemos implementar **Vision como os olhos do Scanner** e um **arquivo cronológico multimodal como o produto central da primeira fase**. O Foundation Models pode ajudar a escrever as descrições de cena. Mais tarde, uma IA de decisão poderá ler esse arquivo e sugerir “corta/mantém/usa este take”, sempre apontando para os intervalos e evidências que justificam a escolha.
|
|
|
|
Essa arquitetura aproveita o Apple Silicon, preserva privacidade, funciona com o modelo local quando disponível e mantém fallback para OpenCV/ONNX/Whisper e outros hosts. Também evita confundir Apple Intelligence com Media Intelligence do Premiere: são produtos e APIs diferentes.
|
|
|
|
## Fontes oficiais
|
|
|
|
- [Apple Vision](https://developer.apple.com/documentation/vision)
|
|
- [Processar vídeo e gerar thumbnails](https://developer.apple.com/documentation/vision/generating-thumbnails-from-videos)
|
|
- [AVAssetReader](https://developer.apple.com/documentation/avfoundation/avassetreader)
|
|
- [Foundation Models](https://developer.apple.com/documentation/foundationmodels)
|
|
- [Analisar imagens com prompting multimodal](https://developer.apple.com/documentation/foundationmodels/analyzing-images-with-multimodal-prompting)
|
|
- [Gerar conteúdo e executar tarefas](https://developer.apple.com/documentation/foundationmodels/generating-content-and-performing-tasks-with-foundation-models)
|
|
- [Janela de contexto do modelo on-device](https://developer.apple.com/documentation/technotes/tn3193-managing-the-on-device-foundation-model-s-context-window)
|
|
- [SystemLanguageModel](https://developer.apple.com/documentation/foundationmodels/systemlanguagemodel)
|
|
- [Disponibilidade e dispositivos compatíveis com Apple Intelligence](https://support.apple.com/en-us/121115)
|