- Implemented.
Safari/iPhone recording now uses MP4/AAC when WebM is unavailable. WebM remains the default when supported and FFmpeg is disabled. Added optional FFmpeg profiles: recommended M4A/AAC-LC or requested MP4/H.264 + AAC. Added MIME-aware, playsinline audio playback. Added dashboard controls under Plans & Platform → Voice Transcoding / FFmpeg. Added Apache/Nginx media MIME configuration and documentation. Core implementation: voice_transcoder.php (line 72), messages.php (line 86), and cyberchat-app.js (line 635).
This commit is contained in:
@@ -13,6 +13,7 @@ CyberChat is a framework-free PHP, SQLite, JavaScript, and HTML5 chat applicatio
|
||||
- Premium-configurable recording presence for both sending and viewing
|
||||
- Premium-configurable automatic voice sending
|
||||
- Tier-configurable automatic playback of newly received voice clips
|
||||
- Optional FFmpeg voice transcoding to iPhone-compatible AAC/M4A or H.264/AAC MP4
|
||||
- Administrator tier overrides that grant plan features without payment
|
||||
- Single-worker queued polling with cursor catch-up, request timeouts, deduplication, bounded retry backoff, and a capped browser message buffer
|
||||
- Plan-based custom username colors
|
||||
@@ -29,6 +30,7 @@ CyberChat is a framework-free PHP, SQLite, JavaScript, and HTML5 chat applicatio
|
||||
- A web server with HTTPS for production
|
||||
- Write access to `db/`, `archive/`, `uploads/voice/`, and `config.json`
|
||||
- A modern browser with `MediaRecorder` for voice recording
|
||||
- Optional: FFmpeg with AAC support; `libx264` is also required for the H.264 profile
|
||||
- Optional: PDO MySQL for the MySQL/MariaDB mirror
|
||||
|
||||
## Installation
|
||||
@@ -38,7 +40,7 @@ CyberChat is a framework-free PHP, SQLite, JavaScript, and HTML5 chat applicatio
|
||||
3. Configure Apache with the included `.htaccess`, or adapt `nginx-example.conf`.
|
||||
4. Open `admin.php` and sign in with the initial password `changeme123`.
|
||||
5. Immediately change `admin.password` in the Configuration tab.
|
||||
6. Open **Plans & Platform** to configure tiers, Mailgun, Stripe, and optional MySQL mirroring.
|
||||
6. Open **Plans & Platform** to configure tiers, Mailgun, Stripe, optional voice transcoding, and MySQL mirroring.
|
||||
|
||||
The SQLite schema and default Free, Plus, and Pro tiers are created automatically on first use.
|
||||
|
||||
@@ -115,6 +117,21 @@ Stripe references:
|
||||
- <https://docs.stripe.com/api/checkout/sessions/create>
|
||||
- <https://docs.stripe.com/webhooks>
|
||||
|
||||
## Voice Compatibility and FFmpeg
|
||||
|
||||
Browsers that support WebM continue to record WebM by default. Safari and iPhone may record MP4/AAC instead, which the upload API also accepts.
|
||||
|
||||
Under **Admin > Plans & Platform > Voice Transcoding / FFmpeg**, configure:
|
||||
|
||||
- Enable or disable server-side transcoding
|
||||
- FFmpeg executable name or absolute path
|
||||
- `M4A / AAC-LC`, recommended for audio-only playback on iPhone, Safari, Android, and desktop
|
||||
- `MP4 / H.264 + AAC`, which adds a tiny black H.264 video track for systems requiring a conventional MP4
|
||||
- Audio bitrate and conversion timeout
|
||||
- Whether to retain the original source when conversion fails
|
||||
|
||||
When transcoding is disabled, the original browser recording is stored. WebM remains the preferred default on supported browsers. When enabled, new uploads are converted; existing voice files are unchanged.
|
||||
|
||||
## Archives
|
||||
|
||||
The application archives daily messages into:
|
||||
@@ -143,7 +160,7 @@ Set a PDO MySQL DSN in the dashboard, enable the mirror, and optionally enable a
|
||||
<script>
|
||||
window.CYBERCHAT_BASE = '/chat';
|
||||
</script>
|
||||
<script src="/chat/assets/js/cyberchat-app.js?v=20260609.5"></script>
|
||||
<script src="/chat/assets/js/cyberchat-app.js?v=20260609.6"></script>
|
||||
<script>
|
||||
CyberChat.init('#my-chat');
|
||||
</script>
|
||||
@@ -166,6 +183,7 @@ api/stripe-webhook.php Stripe event synchronization
|
||||
assets/js/cyberchat-app.js Browser application
|
||||
lib/mailer.php Reusable Mailgun sender
|
||||
lib/stripe.php Stripe REST client and subscription sync
|
||||
lib/voice_transcoder.php Optional FFmpeg voice compatibility pipeline
|
||||
lib/mysql_mirror.php Optional SQLite-to-MySQL mirror
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user