startStream
andstopStream
are 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 ThibaultBee#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 ThibaultBee#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
SrtConnectionDescriptor
andRtmpConnectionDescriptor
). - 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
onTap
for auto exposure, auto focus and auto white balance independently. - Improve orientation management.
- Upgrade to Android 14, gradle 8 and Kotlin 1.9
- Internal: rename
Capture
toSource
- Camera: fix default camera when device does not have a "0" camera
- Camera: fix an
onTap
crash when the device zoom ratio is < 1 - Camera: fix auto focus trigger on tap
- Rename
gopSize
togopDuration
inVideoConfig
class.
- RTMP: force synchronisation of audio and video frames.
- Fixed a crash when the microphone is muted.
StreamerSurfaceView
has been renamedPreviewView
and it is not longer aSurfaceView
- The logger is now a static class
Logger
. You still can set theILogger
implementation withLogger.setLogger()
.
- Add a new view that simplify StreamPack integration. It supports zoom on pinch and focus on tap.
See
StreamerSurfaceView
. - Add a
gopSize
parameter inVideoConfig
to 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
AudioConfig
andVideoConfig
. - srt:
connect(String)
API supports URI with query parameters:streamId
andpassphrase
. 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'
startPreview
API to take aSurfaceView
or aTextureView
as input parameter - Add
isConnected
field 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
configure
for audio only and for video only - Disable ringtones and alerts when camera is in streaming mode
FileStreamers
also takes anOutputStream
as a parameter (as well as aFile
)
- Send a
onLost
event 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.thibaultbee
toio.github.thibaultbee
- Splits
StreamPack
in multiple libraries:core
: main functionalitiesextension/srt
: SRT based streamersextension/rtmp
: RTMP based streamers
- Error and connection listeners are now available in
Streamers
constructors Builder
have been removed in favor of Kotlin default parametersConfigurationHelper
are accessible through thehelper
field ofStreamers
- Adds support for RTMP with the
Streamers
:AudioOnlyRtmpLiveStreamer
,CameraRtmpLiveStreamer
andScreenRecorderRtmpLiveStreamer
- Video sources can be operated in
ByteBuffer
mode as well as inSurface
mode
- You can call
configure
multiple times
- Zoom bas been moved to
streamer.settings.camera
audioBitrate
andvideoBitrate
have been moved respectively tostreamer.settings.audio.bitrate
andstreamer.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
stopStream
anymore - Refactor
app
sample - Remove
jcenter
as 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.requestedOrientation
to lock orientation in portrait or landscape. - Add
isFrameRateSupported
API 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
FileWriter
is instantiated
- Add a SRT passphrase set/get API
- Add an API to enable/disable audio effects: a noise suppressor and an echo canceler (
check
AudioConfig
andAudioConfig.Builder()
)
CaptureSrtLiveStreamer
streamId
behavior has been changed. SetstreamId
field 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
CameraStreamerConfigurationHelper
forBaseCameraStreamer
. It replacesCodecUtils
and most configuration classes.
BaseCaptureStreamer
has 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
CaptureSrtLiveStreamer
connect
and `startStream``must be called in a kotlin coroutine.
Initial release