- Improved scrolling-text removal. A source-code
hackfixes 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. - Adapted both
CMSandAPPto support previews of third-party m3u8 streams. - Fixed incorrect
VIPgroup expiration dates and live-streaming keys when editing users in the administration panel.
EFV CHANGELOG
Change log
Document every improvement and stay up to date on EFV’s latest advancements.
- Added support for third-party m3u8 streams. The system can automatically generate and host local m3u8 playlists as m3u8 as middleware, support previews in
CMSandAPP, return preview m3u8 playlists based on user permissions, and automatically generate screenshots and animated images. - Added
fluentapifunctions for retrieving header information from local or remote videos and generating animated images, individual screenshots and batches of screenshots from URLs or local paths. - 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. - Fixed incorrect
VIPgroup expiration dates and live-streaming keys when editing users in the administration panel. - Fixed duplicate results returned by the intelligent recommendation
API.
- 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. - Further optimized video compression. Audio streams now use 128
KBand stereo for better listening through headphones and speakers. - Added a recommendation algorithm sorted by the number of matching tags. With properly configured tags, recommendations on the public site and
APPplayback pages are highly accurate. Matches across category tags, region, actors, directors and screenwriters contribute to the ranking. A virtualorderweight property shows the weight of each video or series returned by a tag-array query. More information: click to view. - Added
dedecmssupport to automatic publishing, with custom mappings to DedeCMS fields. For example, custom m3u8,mp4,tagsandgifarticle fields can receive the m3u8 playback URL,mp4download URL,tagsandgifanimation respectively. In the automatic publishing panel, map adaptive m3u8 to the m3u8 field, themp4URL to themp4field, tags totagsand the animation togif. Users can then design templates that play, download or display those fields.
- Fixed errors when
srtorasssubtitle filenames contain []. - Separated the import and upload folders to avoid conflicts. Uploaded videos are stored in
upload, while the default import folder ismovies. - Improved the streaming
APIin review and watermark/scrolling-text removal settings. Dragging the timeline now returns the corresponding frame immediately, without waiting. - Added
fluentAPIsupport for obtaining a preview m3u8 stream of a specified video and duration, making previews easier for third-party applications to use.
- Completed
CMSlanguage switching. Users can choose their preferred language; Traditional Chinese, Simplified Chinese and English are currently supported. - Added a
redismemory-cache wrapper formongodbqueries. 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 amongodbread operation. - Fixed the direct-purchase
BUGinCMSand the incorrect points-purchaseBUG. - 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-inCMSalready has its own counter. - 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
APPandCMSare animated, improving presentation. - The
APPis nearing completion, hand-coded withflutterand masonry layouts throughout. Work is not yet finished because background downloading still needs to be supported.
- Rewrote the entire template, called
projectx, usinguikitand very few other libraries. The completeCSSandjsrequire only 5 files, making loading very fast. - 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, AlibabaOSS, Qiniu Cloud, Upyun and most major domestic and international cloud-storage services. Details: https://express-ffmpeg-vip.moejj.com/blog/5ec4a5d0e84cb5c0e1a32845 - 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.
- Fixed another
BUGfound in theffmpegcommunity: videos from some screen-recording tools failed to transcode because of excessively large keyframe intervals, causing thisBUG. - Redesigned points pricing and minimum spending to make rewards for referrals and uploads more flexible. Previously,
CMSused 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. - Randomized filenames for
mp4files generated for download and added themoviefieldsdownloadanddownloadprice. The new download-permission system does not require retaining anMP4file. A newAPIgenerates anmp4from m3u8 in real time when a downloadable video has nomp4, 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 - Added purchases of download permissions based on points and permission duration.
CMSnow 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. - Added a
fluentAPIfor generating anMP4of a specified video and resolution in real time and returning itspath.FluentAPIis a core capability ofEFV: calling anapican provide transcoding, segmentation, screenshots, animations, preview videos and other functions. Third parties can useEFVas a transcodingSAASservice. The firstFluentAPIwas created for downloads: passapikey,apisecret,idandhd, and it looks up the video byID, generates anmp4from the m3u8 for the resolution specified byhd, then returns thepathfor subsequent processing based on thatpath. - Added users' points-purchase and points-spending records to the administration panel, giving administrators a clear view of all spending.
- 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.
- 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 - The resolution selected by a viewer is recorded. Subsequent videos use that resolution by default.
- 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. - 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.
- Added direct purchase of
VIPgroups. Previously users had to buy points and then buy aVIPgroup with those points. Both points-based purchases and direct purchases ofVIPgroups are now available. - 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.
- 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.
- Rewrote part of
fluent-ffmpegto improve stability. - Fixed scrolling text not accepting spaces, the English colon : or the apostrophe ’.
- Fixed subtitle burning failures when matching
assorsrtfilenames contain spaces in the title. - Added a multilingual framework. Users can add language packs or individual entries and use them directly in the frontend.
- Added language switching to the administration panel, currently supporting English, Simplified Chinese and Traditional Chinese.
- 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.
- Added batch category saving, allowing categories to be assigned to multiple videos at once.
- Added quick movie-title editing: click a title in video management to rename it immediately.
- Modified m3u8 response headers so most browsers can open and play m3u8 links directly, without player-side parsing.
- Added the MaPay interface to payment settings. Simple configuration enables Alipay, WeChat and
qqWallet, individually or in combination. - Added poster 2, the
poster2field, to all content (adaptive images). - Added adaptive posters, preview-video links and download links to the collection page.
- Added 2K and original-quality support to the collection page.
- Adapted publishing for 2k and original quality.
- Adapted the next-generation
CMSfor 2k and original-quality publication. - 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 theCMS. - Changed publication logic: content is only automatically sent to
CMSand the next-generation platform after clicking Formal Publish or Publish All, allowing users to finish editing its information first.
- Further optimized transcoding and watermark processing for portrait and widescreen videos, in both
CPUandGPUmodes. - Added
RMVBand other format support toGPUtranscoding by decoding withCPUand then encoding withGPU.
- 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 playbackapiand previewAPI. - 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.
- Added configurable scrolling-text font size. After the transcoding rewrite, a single reference size adapts automatically across all video resolutions.
- 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.
- Added series to the collection page to make series collection easier.
- The carefully developed
appis available free for a limited time. Simple configuration lets users build their own Android or Apple application. - Added an
apifor the newapp, commonly calledapi2.
-
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.
-
Added Ocean
CMSto the automatic publishing system.
3、Fixed spaces being changed into periods during import or upload.
- Added a music-library center. Users can upload audio and edit its title, artist, album, cover and other information.
- Added music programs to
cms. Programs can be playlists, audio courses and similar collections populated with audio edited in the library. Thecmsfrontend automatically displays a music channel with an advanced player and a distinct listening experience. - Added optional background-image uploads for news content. Uploaded backgrounds appear on the public site; otherwise the default background is used.
- Added verification-code login and advertising management to
CMS, and improved the mobile login placement. - Fixed known
bugissues and optimized parts of the code to improve stability as much as possible.
- Added offline video downloads from dozens of video websites, seamlessly integrated with the transcoding system and developed using the open-source
youtube-dlproject. - Added a download-center
API. Download tasks can be created directly through theAPI, and developers can build their own frontend for offline downloads. Supported sites:
- 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 170
KB, smaller than an animatedGIF. A frontend plugin can play it when the mouse moves over an image, substantially improving click-through rates, retention and user experience. - Added arbitrary filename extensions for segment files. The default is
TS, butjpg,png,gifor any other extension can be used. Please try it.