Add h264_v4l2m2m codec and profiles to HomeKit cameras (#91246)
This commit is contained in:
parent
4f507e7f57
commit
7446ff478f
4 changed files with 90 additions and 4 deletions
|
@ -19,6 +19,8 @@ VIDEO_CODEC_COPY = "copy"
|
|||
VIDEO_CODEC_LIBX264 = "libx264"
|
||||
AUDIO_CODEC_OPUS = "libopus"
|
||||
VIDEO_CODEC_H264_OMX = "h264_omx"
|
||||
VIDEO_CODEC_H264_V4L2M2M = "h264_v4l2m2m"
|
||||
VIDEO_PROFILE_NAMES = ["baseline", "main", "high"]
|
||||
AUDIO_CODEC_COPY = "copy"
|
||||
|
||||
# #### Attributes ####
|
||||
|
@ -54,6 +56,7 @@ CONF_STREAM_ADDRESS = "stream_address"
|
|||
CONF_STREAM_SOURCE = "stream_source"
|
||||
CONF_SUPPORT_AUDIO = "support_audio"
|
||||
CONF_VIDEO_CODEC = "video_codec"
|
||||
CONF_VIDEO_PROFILE_NAMES = "video_profile_names"
|
||||
CONF_VIDEO_MAP = "video_map"
|
||||
CONF_VIDEO_PACKET_SIZE = "video_packet_size"
|
||||
CONF_STREAM_COUNT = "stream_count"
|
||||
|
@ -71,6 +74,7 @@ DEFAULT_MAX_WIDTH = 1920
|
|||
DEFAULT_PORT = 21063
|
||||
DEFAULT_CONFIG_FLOW_PORT = 21064
|
||||
DEFAULT_VIDEO_CODEC = VIDEO_CODEC_LIBX264
|
||||
DEFAULT_VIDEO_PROFILE_NAMES = VIDEO_PROFILE_NAMES
|
||||
DEFAULT_VIDEO_MAP = "0:v:0"
|
||||
DEFAULT_VIDEO_PACKET_SIZE = 1316
|
||||
DEFAULT_STREAM_COUNT = 3
|
||||
|
|
|
@ -40,6 +40,7 @@ from .const import (
|
|||
CONF_VIDEO_CODEC,
|
||||
CONF_VIDEO_MAP,
|
||||
CONF_VIDEO_PACKET_SIZE,
|
||||
CONF_VIDEO_PROFILE_NAMES,
|
||||
DEFAULT_AUDIO_CODEC,
|
||||
DEFAULT_AUDIO_MAP,
|
||||
DEFAULT_AUDIO_PACKET_SIZE,
|
||||
|
@ -51,6 +52,7 @@ from .const import (
|
|||
DEFAULT_VIDEO_CODEC,
|
||||
DEFAULT_VIDEO_MAP,
|
||||
DEFAULT_VIDEO_PACKET_SIZE,
|
||||
DEFAULT_VIDEO_PROFILE_NAMES,
|
||||
SERV_DOORBELL,
|
||||
SERV_MOTION_SENSOR,
|
||||
SERV_SPEAKER,
|
||||
|
@ -111,8 +113,6 @@ RESOLUTIONS = [
|
|||
(1600, 1200),
|
||||
]
|
||||
|
||||
VIDEO_PROFILE_NAMES = ["baseline", "main", "high"]
|
||||
|
||||
FFMPEG_WATCH_INTERVAL = timedelta(seconds=5)
|
||||
FFMPEG_LOGGER = "ffmpeg_logger"
|
||||
FFMPEG_WATCHER = "ffmpeg_watcher"
|
||||
|
@ -128,6 +128,7 @@ CONFIG_DEFAULTS = {
|
|||
CONF_AUDIO_MAP: DEFAULT_AUDIO_MAP,
|
||||
CONF_VIDEO_MAP: DEFAULT_VIDEO_MAP,
|
||||
CONF_VIDEO_CODEC: DEFAULT_VIDEO_CODEC,
|
||||
CONF_VIDEO_PROFILE_NAMES: DEFAULT_VIDEO_PROFILE_NAMES,
|
||||
CONF_AUDIO_PACKET_SIZE: DEFAULT_AUDIO_PACKET_SIZE,
|
||||
CONF_VIDEO_PACKET_SIZE: DEFAULT_VIDEO_PACKET_SIZE,
|
||||
CONF_STREAM_COUNT: DEFAULT_STREAM_COUNT,
|
||||
|
@ -346,7 +347,7 @@ class Camera(HomeAccessory, PyhapCamera):
|
|||
if self.config[CONF_VIDEO_CODEC] != "copy":
|
||||
video_profile = (
|
||||
"-profile:v "
|
||||
+ VIDEO_PROFILE_NAMES[
|
||||
+ self.config[CONF_VIDEO_PROFILE_NAMES][
|
||||
int.from_bytes(stream_config["v_profile_id"], byteorder="big")
|
||||
]
|
||||
+ " "
|
||||
|
|
|
@ -95,6 +95,7 @@ from .const import (
|
|||
TYPE_VALVE,
|
||||
VIDEO_CODEC_COPY,
|
||||
VIDEO_CODEC_H264_OMX,
|
||||
VIDEO_CODEC_H264_V4L2M2M,
|
||||
VIDEO_CODEC_LIBX264,
|
||||
)
|
||||
|
||||
|
@ -107,7 +108,12 @@ MAX_VERSION_PART = 2**32 - 1
|
|||
|
||||
|
||||
MAX_PORT = 65535
|
||||
VALID_VIDEO_CODECS = [VIDEO_CODEC_LIBX264, VIDEO_CODEC_H264_OMX, AUDIO_CODEC_COPY]
|
||||
VALID_VIDEO_CODECS = [
|
||||
VIDEO_CODEC_LIBX264,
|
||||
VIDEO_CODEC_H264_OMX,
|
||||
VIDEO_CODEC_H264_V4L2M2M,
|
||||
AUDIO_CODEC_COPY,
|
||||
]
|
||||
VALID_AUDIO_CODECS = [AUDIO_CODEC_OPUS, VIDEO_CODEC_COPY]
|
||||
|
||||
BASIC_INFO_SCHEMA = vol.Schema(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue