🎸- Good News, audio and video player has undergone a major revision 2.0
English | 简体中文
⚠️ This project has been replaced by theswift
project,Please check KJPlayerDemo-OC for the Object-C version.
Dynamic switching of the core, support for the player program of the side-to-play
- Support audio/video playback, midi file playback.
- Support online play and local play.
- Support background playback, audio extraction and playback.
- Support video side-by-side play, segmented download, play and store.
- Support breakpoint resuming and resuming playback, next time it is directly read and played from the buffer.
- Support cache management, clear time period cache.
- Support free look limit, automatically skip the opening and ending credits.
- Support recording the last playing time.
- Support auto play, auto continuous play.
- Support random/repeat/sequential playback.
- Support gravity sensor, full screen/half screen switch.
- Support basic gesture operation, progress volume, etc.
- Support lock screen.
- Long press to fast forward and rewind and other operations.
- Support double speed playback.
- Support switching between different resolution videos.
- Support live streaming media playback.
- Continuously updating...
Video support formats: mp4, m3u8, wav, avi, etc.
Audio support formats: midi, mp3, etc.
- This function is similar to the viewing nature of Vip members, and the viewing mode will continue to be played after recharging
// MARK: - KJPlayerFreeDelegate
extension DetailsViewController: KJPlayerFreeDelegate {
/// Get free look time
/// - Parameter player: player core
/// - Returns: try to see the time, return zero without limit
func kj_freeLookTime(with player: KJBasePlayer) -> TimeInterval {
return 50
}
/// Free viewing time has ended
func kj_freeLookTime(with player: KJBasePlayer, currentTime: TimeInterval) {
}
}
- Restore viewing rights after top-up
self.player.kj_closeFreeLookTimeLimit()
pod 'KJPlayer/FreeTime' # vip try to watch function
- This function is clearly similar to skip the opening and ending credits when watching a video
// MARK: - KJPlayerSkipDelegate
extension DetailsViewController: KJPlayerSkipDelegate {
/// Get the opening time of the beginning of the play
func kj_skipOpeningTime(with player: KJBasePlayer) -> TimeInterval {
return 18
}
/// Skip opening begin play response
func kj_skipOpeningTime(with player: KJBasePlayer, openingTime: TimeInterval) {
self.backview.hintTextLayer.kj_displayHintText("Skip opening intro, automatically play",
time: 5,
position: KJPlayerHintPositionBottom)
}
}
pod 'KJPlayer/SkipTime' # vip skip opening and ending credits function
- This function will automatically record the last playing time and continue playing seamlessly next time
// MARK: - KJPlayerRecordDelegate
extension DetailsViewController: KJPlayerRecordDelegate {
/// Get whether the response needs to be recorded
func kj_recordTime(with player: KJBasePlayer) -> Bool {
return true
}
/// Get the response to the last play time
func kj_recordTime(with player: KJBasePlayer, lastTime: TimeInterval) {
}
}
- Actively select storage memory
self.player.kj_saveRecordLastTime()
pod 'KJPlayer/RecordTime' # vip automatic memory playback function
Remarks: This function is greater than the skip title function. Simply put, after this function is implemented, it will continue to watch from the last playback position next time.
- Player modules
Example import midi player module:
- pod 'KJPlayer/MIDI'
Example import ikj player module:
- pod 'KJPlayer/IJKPlayer'
Example import av player module:
- pod 'KJPlayer/AVPlayer/AVCore'
Example import custom play view module:
- pod 'KJPlayer/CustomView'
- Functional area module
Example import av player play and save module:
- pod 'KJPlayer/AVPlayer/AVDownloader'
Example import record played time:
- pod 'KJPlayer/RecordTime'
Example import free look time:
- pod 'KJPlayer/FreeTime'
Example import skip opening and ending time:
- pod 'KJPlayer/SkipTime'
Example import cache section module:
- pod 'KJPlayer/Cahce'
Example import video screenshot module:
- pod 'KJPlayer/Screenshots'
Example import switch kernel player,
Supports 3 kinds of cores, avplayer, midi, ijkplayer
- pod 'KJPlayer/DynamicSource'
The general process is almost like this, the Demo is also written in great detail, you can check it out for yourself.🎷
Tip: The general function is completed, then slowly add other kernels later, if you find it helpful, please help me with a star. If you have any questions or needs, you can also issue.
Thanks.🎇
- 🎷 E-mail address: [email protected] 🎷
- 🎸 GitHub address: yangKJ 🎸
KJPlayer is available under the MIT license. See the LICENSE file for more info.