Commit Graph

13 Commits

Author SHA1 Message Date
shogo4405 b718080c4a Made expectedFrameRate optional. (#1841) 2025-11-24 20:43:05 +09:00
shogo4405 bc88759070 Refactor VideoCodecSettings. 2025-11-24 15:32:16 +09:00
shogo4405 3c234d20e5 Rename #1832 2025-11-21 23:30:18 +09:00
Tabber (인병윤) b119b56969 Add framerate to RTMP onMetaData (#1832)
* feat: Add framerate to RTMP onMetaData

Adds framerate field to RTMP onMetaData for RTMP servers like
nginx-rtmp-module to correctly parse stream frame rate statistics.

The framerate value is synchronized from VideoCodec.expectedFrameRate
when MediaMixer.setFrameRate() is called.

* feat: Move expectedFrameRate to VideoCodecSettings and add framerate to RTMP metadata

- Move expectedFrameRate from VideoCodec to VideoCodecSettings
- Remove setExpectedFrameRate() method from OutgoingStream and StreamConvertible
- Add framerate field to RTMP onMetaData message
- Synchronize expectedFrameRate in MediaMixer.setFrameRate() and addOutput()
- Add helper methods for frame rate synchronization
- Make MediaMixer.defaultFrameRate public

* feat: Rename expectedFrameRate to defaultFrameRate and add framerate to RTMP metadata

- Rename VideoCodecSettings.expectedFrameRate to defaultFrameRate to represent
  a different concept from MediaMixer.frameRate
- Remove synchronization code from MediaMixer.setFrameRate() and addOutput()
  to allow independent frame rate management per stream
- Remove VideoCodec.expectedFrameRate and OutgoingStream.expectedFrameRate properties
- Add framerate field to RTMP onMetaData message for RTMP servers like
  nginx-rtmp-module to correctly parse stream frame rate statistics
- Make MediaMixer.defaultFrameRate public

This change allows each stream to have its own independent defaultFrameRate
(e.g., Service A at 30 FPS, Service B at 60 FPS) while MediaMixer can output
at a different frame rate. The defaultFrameRate is used both for VideoToolbox
encoder configuration and RTMP metadata.

Breaking changes:
- VideoCodecSettings.expectedFrameRate renamed to defaultFrameRate
- MediaMixer.addOutput() no longer synchronizes frame rate (streams must
  explicitly set defaultFrameRate via VideoCodecSettings init or setVideoSettings())
2025-11-21 23:17:23 +09:00
shogo4405 9ca05352d0 add variableBitRate mode. 2025-10-25 13:41:06 +09:00
shogo4405 d4d8ae3583 Update documents. 2025-10-07 22:51:11 +09:00
shogo4405 f6fc447a1c Add LowLatencyRateControlEnabled option. 2025-08-15 21:15:04 +09:00
shogo4405 135f42b3e6 enum BitRateMode to struct. 2025-08-12 22:16:08 +09:00
shogo4405 096ed75802 Rename isHardwareEncoderEnabled to isHardwareAcceleratedEnabled. 2025-08-09 17:06:25 +09:00
shogo4405 0b432934f8 Removing unnecessary code. 2025-08-07 09:16:20 +09:00
shogo4405 7741aee8d3 Modified to throw an error for unsupported codecs. 2025-07-15 00:08:37 +09:00
shogo4405 68c0d1cfc8 Repackage RTMPHaishinKit. 2025-07-13 12:43:53 +09:00
shogo4405 3ea705aa99 Read from local spm. 2024-11-10 13:27:58 +09:00