- RTMP: fix connection to Twitch (see #283)
- RTMP: fix connection to Facebook Live ( see #274)
- PreviewView: call onZoomRationOnPinchChanged from the main thread
- PreviewView: stop preview before requesting a new surface to avoid race condition (with setConfig)
- UI: remove the permission in the
AndroidManifest.xml
PreviewViewstreamersetter/getter has been renamed bysetVideoSourceProvider.
- RTMP: New implementation (fixes #22)
- RTMP: Add support for Opus
- Camera settings are now suspendable
- Microphone: add a way to set the audio source
- Camera: also set
SENSOR_FRAME_DURATIONwhen the framerate setting is applied PreviewViewautomatically starts when it is displayed. You don't have to call neitherstartPreviewnorstopPreview- Upgrade to dokka 2.1.0
- PreviewView: fix multiple race conditions
- Fix timestamp after the device has been locked
- Camera settings: fix onTap.
- Remove multiple
runBlocking - Fix a deadlock when calling
setTargetRotationwhile trying to open the streamer - And other bug fixes.
DualStreamer: improve the set audio/video configuration API.- Add an API to invalidate the configuration of a configurable output.
- Fix a crash when trying to change the FPS of a configurable output
- Fix video aspect ratio when using multiple outputs with different aspect ratios.
- Do not emit audio/video source changed events when the configuration failed to be applied.
- Render correct preview size for non-camera video sources in
PreviewView. See #238 - Add an API to set color format in
VideoConfig. See #235 - Add an API to customize audio and video
MediaFormatinAudioConfigandVideoConfig. - Add an API to set threads, handler and dispatcher for streamers.
- Replace most of internal executor services with coroutines.
- Fix usage of the camera in background. See #231
- Fix multithreading issues in pipeline, encoding output,...
- Fix fps and dynamic range in camera
configureAPI. - And other bug fixes.
- Add a
SurfaceProcessorfactory toSingleStreamerandDualStreamerconstructors to customize the processing of the input surface. - Verify
VideoConfigandAudioConfigduring instantiation.
- Camera: Fix FPS
- Camera: add missing
RequiresPermissionannotation forstartPreview - DualStreamer: correctly use default value
- Move
RTMPandSRTpackages toio.github.thibaultbee.streampack:streampack-rtmpandio.github.thibaultbee.streampack:streampack-srt. - Made
SurfaceProcessorcustomizable: you can now set a customISurfaceProcessorInternalto process the frames before they are sent to the encoders. - Move audio and video input settings to
audioInputandvideoInputmembers
- Fix 16 KB page size alignment for SRT
- Demos: fix crash on startup for audio only demo
- Fix permissions of RTMP and SRT packages
- Fix dead lock on
release
- MediaProjection: add a dedicated
Serviceto handle screen recording.
- Multiple fixes on MediaProjection
- Fix HDR support for cameras
Version 3.0.0-RC is a release candidate for the next major version of StreamPack. It includes:
- dynamic endpoint: the endpoint (RTMP, SRT, File,...) is inferred from the stream URL.
- multiple outputs: you can now stream to multiple endpoints at the same time.
- dynamic input: you can set the input source (camera, screen, file,...) at runtime.
- a new file writer based on Android
MediaMuxer. - package have been moved, renamed and splits.
For the migration, see the migration guide.
- Upgrade dependencies (AGP 8.4.2, Kotlin 1.9.24,...)
- Streamer: do not call
stopStreamwhen streamer is not streaming - ScreenRecorder: fix callback registration #147
- PreviewView: fix facing camera orientation
- PreviewView: fix synchro
- MP4: use relative timestamps
- FLV: fix onMetadata audio sample size
- FLV: fix onMetadata timestamp
- FLV: only send header once
- TS: fix PES packet length when frame size is > 65535 #135. Thanks to @moliyadi
- AudioSource: try catch audio processors and properly release them
- VideoConfig: only set HDR when profile and level can be set
startStreamandstopStreamare now a suspend methods because they triggers a network operation. Therefore they must be called from a coroutine.
- Camera streamer: mirror the video on the stream when the front camera is used. Preview is not mirrored.
- RTMP: Add support for enhanced RTMP video codecs (HEVC, VP9 and AV1 (experimental, see #90))
- RTMP: Improve synchronization on audio and video frames: force to send Header 0 when timestamp are not in order.
- HDR: Add experimental support for HDR camera streamers, see #91
- VideoConfig: infer the bitrate from the resolution when it is not explicitly set.
- SRT: add a latency setting.
- SRT and RTMP: add specific class to describe the connection (see
SrtConnectionDescriptorandRtmpConnectionDescriptor). - AAC: add support for multiple AAC profiles (HE-AAC, HE-AACv2, ...).
- ISO Sensitivity: Add an API to set ISO sensitivity for camera streamers.
- MP4: Introduce MP4 muxer and new MP4 streamers. (Fragmented MP4)
- Screen recorder: display root cause on notification instead of the exception message.
- Codec helper: get only once instance of each profiles.
- Camera: add an API to set
onTapfor auto exposure, auto focus and auto white balance independently. - Improve orientation management.
- Upgrade to Android 14, gradle 8 and Kotlin 1.9
- Internal: rename
CapturetoSource
- Camera: fix default camera when device does not have a "0" camera
- Camera: fix an
onTapcrash when the device zoom ratio is < 1 - Camera: fix auto focus trigger on tap
- Rename
gopSizetogopDurationinVideoConfigclass.
- RTMP: force synchronisation of audio and video frames.
- Fixed a crash when the microphone is muted.
StreamerSurfaceViewhas been renamedPreviewViewand it is not longer aSurfaceView
- The logger is now a static class
Logger. You still can set theILoggerimplementation withLogger.setLogger().
- Add a new view that simplify StreamPack integration. It supports zoom on pinch and focus on tap.
See
StreamerSurfaceView. - Add a
gopSizeparameter inVideoConfigto set the keyframe interval. - Add an API for external cameras.
- In camera settings, add a zoom on pinch and a focus on tap API.
- Add encoder information in
AudioConfigandVideoConfig. - srt:
connect(String)API supports URI with query parameters:streamIdandpassphrase. Example:srt://server:port?streamId=myStreamId&passphrase=myPassphrase.
- Fixed a crash when created a MediaCodec on few Samsung devices.
- Fixed services notification for Android 13.
- Add HEVC for RTMP
- flv: First frame timestamp must be at 0
- Add sources in release packages
- Fix a crash in rtmpdroid in stopStream (in nativeClose)
- The screen recorder services have been moved to the library (instead of the example)
- Add zoom ratio API support for Android < R
- Introducing a life cycle observer for streamers called
StreamerLifeCycleObserver - Overload camera streamers'
startPreviewAPI to take aSurfaceViewor aTextureViewas input parameter - Add
isConnectedfield in live streamers
- Clamp camera range settings: zoom, exposure,...
- srt: Update to srt 1.5.0
- Fix ANR when connecting to a slow network
- Add apks in the build CI workflow
- Allow to set camera when camera has not been started
- Multiple fixes on FLV/RTMP
- demo-screenrecorder: do not set profile nor level
- Camera streamer: fix the stream after a
stopPreview - Live streamer: disconnect if an exception happens in
startStreaming(String) - Fix log/exception messages
- Add support for OPUS audio codec (TS File streamer and SRT streamer only)
- Obfuscation of RTMP extension
- Add
configurefor audio only and for video only - Disable ringtones and alerts when camera is in streaming mode
FileStreamersalso takes anOutputStreamas a parameter (as well as aFile)
- Send a
onLostevent when the RTMP connection is lost - Use initial connection listener
- Fix FLV header for
FileStreamers(wasn't written correctly)
- Add github actions for Android instrumented test
- Package has been moved to maven central and rename from
com.github.thibaultbeetoio.github.thibaultbee - Splits
StreamPackin multiple libraries:core: main functionalitiesextension/srt: SRT based streamersextension/rtmp: RTMP based streamers
- Error and connection listeners are now available in
Streamersconstructors Builderhave been removed in favor of Kotlin default parametersConfigurationHelperare accessible through thehelperfield ofStreamers
- Adds support for RTMP with the
Streamers:AudioOnlyRtmpLiveStreamer,CameraRtmpLiveStreamerandScreenRecorderRtmpLiveStreamer - Video sources can be operated in
ByteBuffermode as well as inSurfacemode
- You can call
configuremultiple times
- Zoom bas been moved to
streamer.settings.camera audioBitrateandvideoBitratehave been moved respectively tostreamer.settings.audio.bitrateandstreamer.settings.video.bitrate
- Introducing new surface to simplify usage:
AutoFitSurfaceView - Introducing camera settings for: auto white balance, focus, zoom, exposure, stabilization...
- Introducing an API to mute/unmute audio:
streamer.settings.audio.isMuted - Camera does not restart on
stopStreamanymore - Refactor
appsample - Remove
jcenteras a dependencies repository
- Fix screen recorder display on stream part
- Fix camera portrait aspect ratio on stream part
- Introducing new streamers:
- [ScreenRecorderSrtLiveStreamer] for screen sharing. A new sample application has been
developed: have a look at
screenrecorder\folder. - [AudioOnlySrtLiveStreamer] and [AudioOnlyTsFileStreamer] to record audio only
- [ScreenRecorderSrtLiveStreamer] for screen sharing. A new sample application has been
developed: have a look at
- Video orientation could be in portrait or/and in landscape. Use
Activity.requestedOrientationto lock orientation in portrait or landscape. - Add
isFrameRateSupportedAPI so you can check that camera supports current configured frame rate. Use it if you need to change the current camera.
- Add HEVC support
- Add API to check cameras orientation
- You can set video framerate to 60 FPS on sample if it is supported by your device and cameras.
- Add a bitrate regulation mechanism. A default bitrate regulator is provided but you can implement a custom bitrate regulator.
- Do not create a tmp file each time a
FileWriteris instantiated
- Add a SRT passphrase set/get API
- Add an API to enable/disable audio effects: a noise suppressor and an echo canceler (
check
AudioConfigandAudioConfig.Builder())
CaptureSrtLiveStreamerstreamIdbehavior has been changed. SetstreamIdfield each time you try a new connection
- App: catch exception on stopStream, stopPreview, release,... to avoid crash when a streamer cannot be created.
- Add a SRT stream Id set/get API
- Add Audio and Video configuration builder API
- Add streamers builder
- Add a configuration helper
CameraStreamerConfigurationHelperforBaseCameraStreamer. It replacesCodecUtilsand most configuration classes.
BaseCaptureStreamerhas been renamedBaseCameraStreamer(CaptureSrtLiveStreamer->CameraSrtLiveStreamer,...)
- Fix issue 11: Crash on display orientation on Android 11.
- Fix timestamps when camera timestamp source is SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
- Fix microphone timestamp source on Android >= N
- Fix TS packet when stuffing length == 1
- Dispatch SRT connect API with kotlin coroutines
- Add camera torch switch on/off
CaptureSrtLiveStreamerconnectand `startStream``must be called in a kotlin coroutine.
Initial release