EFV CHANGELOG

Change log

Document every improvement and stay up to date on EFV’s latest advancements.

  1. Improved scrolling-text removal. A source-code hack fixes the white trails previously left by removed text. Removal now works whether text enters from the left and exits right or enters from the right and exits left.
  2. Adapted both CMS and APP to support previews of third-party m3u8 streams.
  3. Fixed incorrect VIP group expiration dates and live-streaming keys when editing users in the administration panel.
  1. Added support for third-party m3u8 streams. The system can automatically generate and host local m3u8 playlists as m3u8 as middleware, support previews in CMS and APP, return preview m3u8 playlists based on user permissions, and automatically generate screenshots and animated images.
  2. Added fluentapi functions for retrieving header information from local or remote videos and generating animated images, individual screenshots and batches of screenshots from URLs or local paths.
  3. Improved VBR, or variable-bitrate constraints, from 10% to 50%. For example, with a setting of 720P:1000, the maximum variable bitrate is now 1500kb.
  4. Fixed incorrect VIP group expiration dates and live-streaming keys when editing users in the administration panel.
  5. Fixed duplicate results returned by the intelligent recommendation API.
  1. Improved portrait-video transcoding, including cases where phone-camera videos were incorrectly detected as landscape. Several detection methods now accurately determine orientation and adjust transcoding accordingly. Recent use revealed incorrect width and height detection for phone-camera footage, so dozens of tests across multiple phone models were performed. The resulting logic precisely identifies portrait videos and optimizes all transcoding parameters for them. Output retains the original aspect ratio as a genuine portrait video, rather than converting it to landscape. This is important because video uploads will later be added to the APP.
  2. Further optimized video compression. Audio streams now use 128KB and stereo for better listening through headphones and speakers.
  3. Added a recommendation algorithm sorted by the number of matching tags. With properly configured tags, recommendations on the public site and APP playback pages are highly accurate. Matches across category tags, region, actors, directors and screenwriters contribute to the ranking. A virtual order weight property shows the weight of each video or series returned by a tag-array query. More information: click to view.
  4. Added dedecms support to automatic publishing, with custom mappings to DedeCMS fields. For example, custom m3u8, mp4, tags and gif article fields can receive the m3u8 playback URL, mp4 download URL, tags and gif animation respectively. In the automatic publishing panel, map adaptive m3u8 to the m3u8 field, the mp4 URL to the mp4 field, tags to tags and the animation to gif. Users can then design templates that play, download or display those fields.
  1. Fixed errors when srt or ass subtitle filenames contain [].
  2. Separated the import and upload folders to avoid conflicts. Uploaded videos are stored in upload, while the default import folder is movies.
  3. Improved the streaming API in review and watermark/scrolling-text removal settings. Dragging the timeline now returns the corresponding frame immediately, without waiting.
  4. Added fluentAPI support for obtaining a preview m3u8 stream of a specified video and duration, making previews easier for third-party applications to use.
  1. Completed CMS language switching. Users can choose their preferred language; Traditional Chinese, Simplified Chinese and English are currently supported.
  2. Added a redis memory-cache wrapper for mongodb queries. It is easy to use and can speed up data retrieval by nearly 3 times. Developers can also use the wrapper by adding .H3H after a mongodb read operation.
  3. Fixed the direct-purchase BUG in CMS and the incorrect points-purchase BUG.
  4. Added direct m3u8 playback counting. It is recommended for third-party use: each playback of this m3u8 through a third-party application increments the count once. Disable it when using the built-in CMS, because the built-in CMS already has its own counter.
  5. Selecting a recommendation in the panel uses an animated image as the poster and obtains its width and height for the masonry layout. Some video covers in APP and CMS are animated, improving presentation.
  6. The APP is nearing completion, hand-coded with flutter and masonry layouts throughout. Work is not yet finished because background downloading still needs to be supported.
  1. Rewrote the entire template, called projectx, using uikit and very few other libraries. The complete CSS and js require only 5 files, making loading very fast.
  2. Rewrote cloud-storage code, improved its workflow and added automatic retries for failed uploads. The synchronization implementation has largely been rewritten and extracted into an independent subsystem that can run separately without affecting the main application. The standalone version offers more control: choose monitored folders and file types, whether to delete files after upload, and which filename extensions to preserve when deleting. It supports wasabi, s3, minio, Alibaba OSS, Qiniu Cloud, Upyun and most major domestic and international cloud-storage services. Details: https://express-ffmpeg-vip.moejj.com/blog/5ec4a5d0e84cb5c0e1a32845
  3. Added configurable preview durations. Fixed multi-resolution ordering and portrait-player layout issues, and optimized playback-page loading. Administrators can set how many seconds users without sufficient permissions may preview. Resolution ordering issues and portrait players stretching the page have been fixed.
  4. Fixed another BUG found in the ffmpeg community: videos from some screen-recording tools failed to transcode because of excessively large keyframe intervals, causing this BUG.
  5. Redesigned points pricing and minimum spending to make rewards for referrals and uploads more flexible. Previously, CMS used a price per point with a minimum of one yuan per point. It now specifies how many points one yuan buys, for example 10 points per yuan. This makes check-in rewards, referral rewards, uploads, points-based playback and download-permission purchases more flexible. The minimum points purchase has also become a minimum monetary spend.
  6. Randomized filenames for mp4 files generated for download and added the movie fields download and downloadprice. The new download-permission system does not require retaining an MP4 file. A new API generates an mp4 from m3u8 in real time when a downloadable video has no mp4, returns the download and caches it in the video's download field. Subsequent downloads of the same video return the existing file instead of regenerating it. Details: https://express-ffmpeg-vip.moejj.com/blog/5ebf6daee84cb5c0e1a32844
  7. Added purchases of download permissions based on points and permission duration. CMS now supports downloading videos with points; see the preceding link. Administrators can set default points prices and validity periods, and override the required points for individual videos. Downloads are unlimited during the valid period; after expiration, permission must be purchased again with points.
  8. Added a fluent API for generating an MP4 of a specified video and resolution in real time and returning its path. FluentAPI is a core capability of EFV: calling an api can provide transcoding, segmentation, screenshots, animations, preview videos and other functions. Third parties can use EFV as a transcoding SAAS service. The first Fluent API was created for downloads: pass apikey, apisecret, id and hd, and it looks up the video by ID, generates an mp4 from the m3u8 for the resolution specified by hd, then returns the path for subsequent processing based on that path.
  9. Added users' points-purchase and points-spending records to the administration panel, giving administrators a clear view of all spending.
  10. The second step in subsystem separation extracts live streaming. Many users do not need it, so the service now runs separately and can be started with one click when required.
  11. Added real-time transcoding progress to the video library, including separate progress for each resolution. This initial implementation uses the real-time capabilities of socketio. Video: https://www.leimulamu.com/movie/5ec4dcf131ec047e1d7686ed
  12. The resolution selected by a viewer is recorded. Subsequent videos use that resolution by default.
  13. Playback progress is recorded by video ID. Refreshing or reopening the same video resumes at that position, and switching resolution also continues from the recorded position.
  14. Added configurable referral rewards. Administrators can specify points earned through promotion. Points can currently be obtained by daily check-ins, referrals, uploads and purchases. This works well with the points-per-yuan pricing setting.
  15. Added direct purchase of VIP groups. Previously users had to buy points and then buy a VIP group with those points. Both points-based purchases and direct purchases of VIP groups are now available.
  16. Replaced fixed animation start times with intelligent frame selection from the middle of the video. Tests showed that no animation was produced if the configured start time exceeded the video's duration. The improved code automatically generates animations from the video's midpoint.
  17. Improved series publication with a dedicated formal-publication button. A newly added series may have no episodes, which could cause public-site errors. Users can now add episodes first and explicitly publish the series afterward, giving them control over when it becomes visible.
  1. Rewrote part of fluent-ffmpeg to improve stability.
  2. Fixed scrolling text not accepting spaces, the English colon : or the apostrophe ’.
  3. Fixed subtitle burning failures when matching ass or srt filenames contain spaces in the title.
  4. Added a multilingual framework. Users can add language packs or individual entries and use them directly in the frontend.
  5. Added language switching to the administration panel, currently supporting English, Simplified Chinese and Traditional Chinese.
  6. Upgraded scrolling text in the core settings to advanced dynamic scrolling text. Once replacement content is configured, each transcode substitutes that content into the scrolling advertisement. Users can customize dynamic text for their needs and make each video's scrolling text unique.
  1. Added batch category saving, allowing categories to be assigned to multiple videos at once.
  2. Added quick movie-title editing: click a title in video management to rename it immediately.
  3. Modified m3u8 response headers so most browsers can open and play m3u8 links directly, without player-side parsing.
  4. Added the MaPay interface to payment settings. Simple configuration enables Alipay, WeChat and qq Wallet, individually or in combination.
  5. Added poster 2, the poster2 field, to all content (adaptive images).
  6. Added adaptive posters, preview-video links and download links to the collection page.
  7. Added 2K and original-quality support to the collection page.
  8. Adapted publishing for 2k and original quality.
  9. Adapted the next-generation CMS for 2k and original-quality publication.
  10. Added publishing of series to Apple, Ocean and Feifei CMS. Series updates are published automatically. Extensive logic was rewritten so adding episode links automatically updates the CMS.
  11. Changed publication logic: content is only automatically sent to CMS and the next-generation platform after clicking Formal Publish or Publish All, allowing users to finish editing its information first.
  1. Further optimized transcoding and watermark processing for portrait and widescreen videos, in both CPU and GPU modes.
  2. Added RMVB and other format support to GPU transcoding by decoding with CPU and then encoding with GPU.
  1. Added 2K and original-quality transcoding. 2K uses 2560*1440 resolution. Original quality retains the source resolution and bitrate, while an intelligent algorithm further reduces file size. Scrolling text and watermarks can be added without losing picture quality, and the transcoded result can be 30% smaller than the source. Added 2K and original-quality permission settings to CMS, and optimized both the playback api and preview API.
  2. Fully optimized portrait-video transcoding and extensively rewrote the logic. It now produces clear, genuinely portrait output instead of landscape video with large black borders. Resolution, bitrate, scrolling-text and watermark settings are also optimized for portrait footage.
  3. Added configurable scrolling-text font size. After the transcoding rewrite, a single reference size adapts automatically across all video resolutions.
  4. Preserved all video-library filter states after editing information, so users no longer need to repeat their filtering. This addresses user feedback and improves efficiency.
  5. Added series to the collection page to make series collection easier.
  1. The carefully developed app is available free for a limited time. Simple configuration lets users build their own Android or Apple application.
  2. Added an api for the new app, commonly called api2.
  1. Added a global option to skip a specified duration because some formats do not support direct trimming at the start. After skipping that duration, the video is transcoded and segmented with scrolling text, watermarks and other processing, efficiently.

  2. Added Ocean CMS to the automatic publishing system.

3、Fixed spaces being changed into periods during import or upload.

  1. Added a music-library center. Users can upload audio and edit its title, artist, album, cover and other information.
  2. Added music programs to cms. Programs can be playlists, audio courses and similar collections populated with audio edited in the library. The cms frontend automatically displays a music channel with an advanced player and a distinct listening experience.
  3. Added optional background-image uploads for news content. Uploaded backgrounds appear on the public site; otherwise the default background is used.
  4. Added verification-code login and advertising management to CMS, and improved the mobile login placement.
  5. Fixed known bug issues and optimized parts of the code to improve stability as much as possible.
  1. Added offline video downloads from dozens of video websites, seamlessly integrated with the transcoding system and developed using the open-source youtube-dl project.
  2. Added a download-center API. Download tasks can be created directly through the API, and developers can build their own frontend for offline downloads. Supported sites:

https://ytdl-org.github.io/youtube-dl/supportedsites.html

  1. Added advanced automatic preview-video generation. Administrators set the preview duration in seconds, and the system extracts several sections, transcodes and combines them into a preview without audio. Tests produced a 5-second, 350*180 preview of only 170KB, smaller than an animated GIF. A frontend plugin can play it when the mouse moves over an image, substantially improving click-through rates, retention and user experience.
  2. Added arbitrary filename extensions for segment files. The default is TS, but jpg, png, gif or any other extension can be used. Please try it.