media_kit 1.1.7 media_kit: ^1.1.7 copied to clipboard
A cross-platform video player & audio player for Flutter & Dart. Performant, stable, feature-proof & modular.
1.1.7 #
fix: close PlatformPlayer.playlistModeController
1.1.6 #
- feat: HLS support for web
- fix: movtext subtitles not working
- fix: expose composition model classes
- fix: increase default demuxer cache size to 128 MB
- fix(android): S/W rendering fallback
- fix(android): create fresh
android.view.Surface
for every video output
1.1.5 #
- feat:
Media.memory
1.1.4+1 #
- docs: document updated
media_kit_video
1.1.4 #
- feat:
VideoTrack
/AudioTrack
/SubtitleTrack
expose more parameters - feat:
NativePlayer.observeProperty
&NativePlayer.unobserveProperty
- fix:
error
stream not being emitted in certain cases - fix: pause during buffering makes
Player
not exit buffering - fix: DASH having
BaseURL
(s) with special characters not loading - fix(windows/android): AV1 support
1.1.3+1 #
- docs: document updated
media_kit_libs_ios_audio
media_kit_libs_ios_video
media_kit_libs_macos_audio
media_kit_libs_macos_video
1.1.3 #
- fix:
EXT-X-KEY
support - fix: set
subs-fallback
&subs-with-matching-audio
- fix(android): use
hwdec=auto
- fix(android):
SurfaceTexture.setDefaultBufferSize
& render race
1.1.2+1 #
- docs: document updated
media_kit_libs_ios_audio
media_kit_libs_ios_video
media_kit_libs_macos_audio
media_kit_libs_macos_video
1.1.2 #
- feat: export
PlayerState
&PlayerStream
1.1.1 #
- feat:
Player.screenshot
pixel-buffer support - feat: WebVTT over HLS support
- feat(android): DASH support
- feat(android): load/call
mpv_lavc_set_java_vm
inAndroidHelper
- perf(android): static link FFmpeg w/ libmpv
- perf: reduce bundle size
- perf: improve
Player.dispose
& eliminatempv_terminate_destroy
delay - fix(windows): broken HLS support
1.1.0 #
- feat:
Player.screenshot
for capturing video snapshots asUint8List
- feat: external audio track & subtitle track support
AudioTrack.uri
SubtitleTrack.uri
&SubtitleTrack.data
- feat: WebVTT subtitle support
- feat:
Player.state.videoParams
&Player.stream.videoParams
- feat:
Player.state.subtitle
&Player.stream.subtitle
- perf(android): use
hwdec=mediacodec
w/enableHardwareAcceleration
- fix(android): OpenSL ES limit
- fix(android): improve stability
- fix(android): file-descriptor clean-up for content:// URI
- fix(windows): improve stability
- fix: immediately set
vid
/aid
/sid
tono
indispose
- perf: reduce bundle size by <= 50%
- perf: do not decode video until
VideoController
attach
1.0.2 #
- deps: update
package:http
dependency constraint
1.0.1 #
- deps: bump
package:http
to1.1.0
1.0.0 #
- feat: web support
- feat:
Player.stop
- feat: support for AGP 8.0
- feat: pre-built video controls
- fix:
buffering
stream behavior - fix: improve stability on Android emulator(s)
- fix: default
PlayerState
volume
=100.0
- fix:
Player.add
,Player.remove
,Player.jump
&Player.move
stability - test: stricter & more unit-tests
0.0.11 #
- fix:
audioDevices
state/stream not being set/emit
0.0.10+1 #
- docs: update demo application links
0.0.10 #
- perf: emit distinct events in
Player.stream
- fix(android): crash on some devices
- fix:
Player.setAudioDevice
not working - fix: set/emit
completed
asfalse
uponPlayer.seek
0.0.9+1 #
- docs: document updated
media_kit_video
0.0.9 #
- fix(android): crash on Android 6.0 or lower
0.0.8 #
- fix:
Player.dispose
event loop clean-up - refactor:
Player
implementation clean-up - feat:
Initializer.dispose
- feat:
InitializerIsolate.dispose
- feat:
InitializerNativeEventLoop.dispose
- feat:
- feat:
PlatformPlayer.waitForVideoControllerInitializationIfAttached
- feat: HTTP headers support in
Media
0.0.7+1 #
- docs: document updated
media_kit_libs_android_video
andmedia_kit_libs_android_audio
0.0.7 #
- fix:
MediaKit.ensureInitialized
not passing optionallibmpv
argument
0.0.6 #
- feat: synchronize
Player
methods - refactor: improve
Playlist
handling inPlayer
- refactor: improve handling of
playlist
,audioBitrate
&audioParams
states/events
0.0.5+2 #
- docs: document updated
media_kit_video
&media_kit_libs_windows_audio
0.0.5+1 #
- docs: document updated
media_kit_video
0.0.5 #
- Android support
- feat: video output width & height states/events:
Player.state.width
: currently playing video's width asint
Player.stream.width
: currently playing video's width asStream<int>
Player.state.height
: currently playing video's height asint
Player.stream.height
: currently playing video's height asStream<int>
- feat(refactor): entry point
MediaKit.ensureInitialized
- feat: media stream buffer state/event:
Player.state.buffer
: currently buffered duration of the media stream asDuration
Player.stream.buffer
: currently buffered duration of the media stream asStream<Duration>
- perf: limit demuxer cache size to 32 MB by default
- fix: HTTPS m3u8 file loading
- fix: asset names with special characters
- feat:
protocolWhitelist
inPlayerConfiguration
for whitelisting protocols - feat:
bufferSize
inPlayerConfiguration
for setting demuxer cache size
0.0.4+1 #
- docs(fix): images on pub.dev
0.0.4 #
- fix: opening
Playlist
(withindex
> 0) causes index to be treated 0 after internal queue was finished - fix: double
play
calls makingPlayer
paused
0.0.3+3 #
- docs: document updated
media_kit_video
,media_kit_libs_macos_video
andmedia_kit_libs_ios_video
0.0.3+2 #
- docs: document updated
media_kit_video
0.0.3+1 #
- docs: document updated
media_kit_native_event_loop
0.0.3 #
- fix: unable to publish iOS to AppStore
- fix: support for iOS simulator
0.0.2 #
- macOS support
- iOS support
- feat: draw first frame upon
Player.open
beforePlayer.play
(#69) - feat:
Player.open
now acceptsPlayable
i.e.Media
orPlaylist
- feat: access
Player
logs from internal backend e.g. libmpvPlayerLogs
: classPlayer.stream.logs
: logs asStream<PlayerLogs>
- fix: improve internal playlist handling & management
- feat: audio output device selection & enumeration
Player.setAudioDevice
: methodAudioDevice
: classAudioDevice.auto
: factory constructorPlayer.state.audioDevice
: currently selected audio device asAudioDevice
Player.stream.audioDevice
: currently selected audio device asStream<AudioDevice>
Player.state.audioDevices
: currently available audio device(s) asList<AudioDevice>
Player.stream.audioDevices
: currently available audio device(s) asStream<List<AudioDevice>>
- feat: video, audio & subtitle track selection & enumeration (#54)
Player.selectVideoTrack
: methodPlayer.selectAudioTrack
: methodPlayer.selectSubtitleTrack
: methodVideoTrack
: classAudioTrack
: classSubtitleTrack
: classVideoTrack.auto
: factory constructorVideoTrack.no
: factory constructorAudioTrack.auto
: factory constructorAudioTrack.no
: factory constructorSubtitleTrack.auto
: factory constructorSubtitleTrack.no
: factory constructorPlayer.state.track.video
: currently selected video track asVideoTrack
Player.stream.track.video
: currently selected video track asStream<VideoTrack>
Player.state.track.audio
: currently selected audio track asAudioTrack
Player.stream.track.audio
: currently selected audio track asStream<AudioTrack>
Player.state.track.subtitle
: currently selected subtitle track asSubtitleTrack
Player.stream.track.subtitle
: currently selected subtitle track asStream<SubtitleTrack>
Player.state.tracks.video
: currently available video track(s) asList<VideoTrack>
Player.stream.tracks.video
: currently available video track(s) asStream<List<VideoTrack>>
Player.state.tracks.audio
: currently available audio track(s) asList<AudioTrack>
Player.stream.tracks.audio
: currently available audio track(s) asStream<List<AudioTrack>>
Player.state.tracks.subtitle
: currently available subtitle track(s) asList<SubtitleTrack>
Player.stream.tracks.subtitle
: currently available subtitle track(s) asStream<List<SubtitleTrack>>
- refactor: rename
Player.volume
setter toPlayer.setVolume
- refactor: rename
Player.rate
setter toPlayer.setRate
- refactor: rename
Player.pitch
setter toPlayer.setPitch
- refactor: rename
Player.shuffle
setter toPlayer.setShuffle
- refactor: rename
Player.state.isPlaying
toPlayer.state.playing
- refactor: rename
Player.state.isPaused
toPlayer.state.paused
- refactor: rename
Player.state.isCompleted
toPlayer.state.completed
- refactor: rename
Player.state.isBuffering
toPlayer.state.buffering
- refactor: rename
Player.stream.isPlaying
toPlayer.stream.playing
- refactor: rename
Player.stream.isPaused
toPlayer.stream.paused
- refactor: rename
Player.stream.isCompleted
toPlayer.stream.completed
- refactor: rename
Player.stream.isBuffering
toPlayer.stream.buffering
0.0.1 #
- Microsoft Windows support
- GNU/Linux support
- Initial release