screen_record_plus_puftpalkim 1.1.1
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 #
- Á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 (viaAVAudioConverter, 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 únicoAVAssetWriterInputde á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étruee o app precisa terNSMicrophoneUsageDescriptionnoInfo.plist(ver seção iOS abaixo) — sem isso o app pode travar ao tentar gravar. - Removido o recorte de vídeo via FFmpeg (
recordingRect+flutter_ffmpeg_kit_full): oARCameraViewdo PuftPalkim sempre grava a tela inteira (nunca passarecordingRect), 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.audioAppnuma única faixa de áudio, em vez de só o áudio do app. RequerNSMicrophoneUsageDescriptionnoInfo.plist. - 1.0.0 — fork inicial a partir do
screen_record_plus1.1.0: adiciona captura de.audioAppno 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.