Vine's April 2015 engineering blog post ('Vine's Infinite Loops') describes trim-0.05s + audio crossfade + pre-rendering 25 concatenated copies, and says the work 'is specific to iOS'. The recovered web player source proves the web player ALSO shipped the N-copies technique — via MediaSource Extensions, minus the audio crossfade.
How to verify: load Wayback Machine capture 20150529050307 of any vine.co/v/ permalink (e.g. post OQlWgxzQVBU). The page HTML references two assets on v.cdn.vine.co under /w/f6548e06-assets/: a vendor bundle and the app bundle (vine-ember, Ember app version 2.0.0.2f05f2b3). Fetch the app bundle through Wayback's js_ endpoint, prettify, and read the AMD module 'vine-ember/controllers/playing-vine'.
Mechanics (action mediaSourceLoaded):
Other recovered details: fallback loop path was ended -> setCurrentTime(0) -> play() (gapful); mobile used the native loop attribute; a 1 Hz health checker rebooted the player if currentTime froze while playing, plus a post-wrap check (currentTime >= floor(duration) after the seek means it failed -> reboot); a 'loop' was counted when playback passed 0.5 s of each pass (so the first playthrough counted — loops ≈ plays), with anti-bot (two records under 2 s apart disable tracking), cap 25 per post per session, batched POST /api/loops every 30 s, pending counts persisted in localStorage across unload.
Transferable lesson: for seamless A/V looping on the web, a continuous MSE timeline (repeated appends with timestampOffset + appendWindow trims) eliminates the native wrap seek entirely; append windows double as a clean way to drop AAC priming at junctions without re-encoding.