screen_record_plus_puftpalkim 1.1.1 copy "screen_record_plus_puftpalkim: ^1.1.1" to clipboard
screen_record_plus_puftpalkim: ^1.1.1 copied to clipboard

Fork of screen_record_plus for PuftPalkim: adds app-audio + microphone capture (mixed into one track) on iOS (the upstream plugin only records video and silently drops all audio), and drops the unused [...]

screen_record_plus_puftpalkim #

Fork privado de screen_record_plus (v1.1.0), feito para o app PuftPalkim, na mesma linha do fork arkit_plugin_puftpalkim já usado no projeto (Custom Pub Dependency do FlutterFlow).

Por que este fork existe #

O plugin original, no iOS, usa a API de sample buffers do ReplayKit (RPScreenRecorder.startCapture) mas só processa buffers do tipo .video — qualquer áudio entregue pelo ReplayKit é descartado silenciosamente, em qualquer app que use o pacote, para qualquer gravação. Não é um problema de permissão nem de configuração: é assim que o ios/Classes/ScreenRecordPlusPlugin.swift original está escrito. O resultado prático: todo vídeo gravado com screen_record_plus original sai mudo.

O que este fork muda #

  1. Áudio do app + microfone, MIXADOS em uma única faixa (.audioApp + .audioMic): o handler de captura agora trata tanto .audioApp (o áudio que o próprio app está tocando — no PuftPalkim, a narração da experiência de Realidade Aumentada) quanto .audioMic (o microfone físico — a voz de quem está segurando o livro). Cada buffer é convertido para PCM mono Float32 a 44.1kHz (via AVAudioConverter, então funciona seja qual for o formato real que o ReplayKit entregar), os dois fluxos são somados amostra a amostra em tempo real (com clamp para evitar clipping) e o resultado é escrito em um único AVAssetWriterInput de áudio. Isso é necessário porque um vídeo com duas faixas de áudio separadas não é reproduzido de forma confiável com as duas audíveis nos players comuns (Fotos, WhatsApp costumam tocar só uma faixa) — precisava ser uma mixagem de verdade, não duas faixas paralelas. Como agora usamos o microfone físico, isMicrophoneEnabled é true e o app precisa ter NSMicrophoneUsageDescription no Info.plist (ver seção iOS abaixo) — sem isso o app pode travar ao tentar gravar.
  2. Removido o recorte de vídeo via FFmpeg (recordingRect + flutter_ffmpeg_kit_full): o ARCameraView do PuftPalkim sempre grava a tela inteira (nunca passa recordingRect), então esse caminho de código nunca era exercitado — mas a dependência do FFmpeg (~100MB) era compilada no app do mesmo jeito. Removendo essa funcionalidade não usada, o app ganha o áudio sem ficar maior — na verdade fica menor do que estava com o pacote original.

A API pública em Dart (ScreenRecorderController, .start(), .stop(), .exporter.exportVideo(...)) é idêntica à do pacote original — só o parâmetro recordingRect deixou de ter efeito (a gravação é sempre da tela inteira). Quem já usa screen_record_plus normalmente só precisa trocar o nome do pacote no pubspec.yaml/import.

Uso #

dependencies:
  screen_record_plus_puftpalkim: ^1.1.0
import 'package:screen_record_plus_puftpalkim/screen_record_plus_puftpalkim.dart';

final controller = ScreenRecorderController();
await controller.start();
// ...
await controller.stop();
final file = await controller.exporter.exportVideo(
  multiCache: true,
  cacheFolder: 'my_recordings',
);

iOS #

A partir da 1.1.0 o microfone físico é usado de verdade (mixado com o áudio do app), então esta chave é obrigatória no Info.plist do app — sem ela o iOS pode encerrar o app ao chamar isMicrophoneEnabled = true:

<key>NSMicrophoneUsageDescription</key>
<string>Precisamos do microfone para gravar a tela com áudio.</string>

Android #

Sem mudanças nesta versão — o lado Android continua exatamente igual ao pacote original (não foi tocado neste fork; o PuftPalkim ainda não testou gravação em Android).

Histórico #

  • 1.1.0 — captura também .audioMic (microfone físico) e mixa em tempo real com .audioApp numa única faixa de áudio, em vez de só o áudio do app. Requer NSMicrophoneUsageDescription no Info.plist.
  • 1.0.0 — fork inicial a partir do screen_record_plus 1.1.0: adiciona captura de .audioApp no iOS e remove o recorte via FFmpeg (e sua dependência).

Licença #

MIT, herdada do projeto original — ver LICENSE. Copyright original de Trần Văn Hiếu (BrianTran24/screen_record); modificações para o PuftPalkim marcadas nos arquivos alterados.

0
likes
120
points
328
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Fork of screen_record_plus for PuftPalkim: adds app-audio + microphone capture (mixed into one track) on iOS (the upstream plugin only records video and silently drops all audio), and drops the unused FFmpeg region-cropping feature to avoid its ~100MB dependency.

License

MIT (license)

Dependencies

flutter, path, path_provider

More

Packages that depend on screen_record_plus_puftpalkim

Packages that implement screen_record_plus_puftpalkim