Update ha-ffmpeg 2.0 (#22427)

This commit is contained in:
Pascal Vizeli 2019-03-27 07:55:05 +01:00 committed by Sebastian Muszynski
parent 19d99ddf57
commit a55afa8119
14 changed files with 41 additions and 31 deletions

View file

@ -78,7 +78,7 @@ class AmcrestCam(Camera):
self.hass, request, stream_coro)
# streaming via ffmpeg
from haffmpeg import CameraMjpeg
from haffmpeg.camera import CameraMjpeg
streaming_url = self._camera.rtsp_url(typeno=self._resolution)
stream = CameraMjpeg(self._ffmpeg.binary, loop=self.hass.loop)
@ -86,8 +86,9 @@ class AmcrestCam(Camera):
streaming_url, extra_cmd=self._ffmpeg_arguments)
try:
stream_reader = await stream.get_reader()
return await async_aiohttp_proxy_stream(
self.hass, request, stream,
self.hass, request, stream_reader,
self._ffmpeg.ffmpeg_stream_content_type)
finally:
await stream.close()

View file

@ -83,7 +83,7 @@ class ArloCam(Camera):
async def handle_async_mjpeg_stream(self, request):
"""Generate an HTTP MJPEG stream from the camera."""
from haffmpeg import CameraMjpeg
from haffmpeg.camera import CameraMjpeg
video = self._camera.last_video
if not video:
error_msg = \
@ -97,8 +97,9 @@ class ArloCam(Camera):
video.video_url, extra_cmd=self._ffmpeg_arguments)
try:
stream_reader = await stream.get_reader()
return await async_aiohttp_proxy_stream(
self.hass, request, stream,
self.hass, request, stream_reader,
self._ffmpeg.ffmpeg_stream_content_type)
finally:
await stream.close()

View file

@ -80,7 +80,7 @@ class CanaryCamera(Camera):
"""Return a still image response from the camera."""
self.renew_live_stream_session()
from haffmpeg import ImageFrame, IMAGE_JPEG
from haffmpeg.tools import ImageFrame, IMAGE_JPEG
ffmpeg = ImageFrame(self._ffmpeg.binary, loop=self.hass.loop)
image = await asyncio.shield(ffmpeg.get_image(
self._live_stream_session.live_stream_url,
@ -93,15 +93,16 @@ class CanaryCamera(Camera):
if self._live_stream_session is None:
return
from haffmpeg import CameraMjpeg
from haffmpeg.camera import CameraMjpeg
stream = CameraMjpeg(self._ffmpeg.binary, loop=self.hass.loop)
await stream.open_camera(
self._live_stream_session.live_stream_url,
extra_cmd=self._ffmpeg_arguments)
try:
stream_reader = await stream.get_reader()
return await async_aiohttp_proxy_stream(
self.hass, request, stream,
self.hass, request, stream_reader,
self._ffmpeg.ffmpeg_stream_content_type)
finally:
await stream.close()

View file

@ -12,7 +12,7 @@ from homeassistant.helpers.dispatcher import (
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.entity import Entity
REQUIREMENTS = ['ha-ffmpeg==1.11']
REQUIREMENTS = ['ha-ffmpeg==2.0']
DOMAIN = 'ffmpeg'

View file

@ -48,7 +48,7 @@ class FFmpegCamera(Camera):
async def async_camera_image(self):
"""Return a still image response from the camera."""
from haffmpeg import ImageFrame, IMAGE_JPEG
from haffmpeg.tools import ImageFrame, IMAGE_JPEG
ffmpeg = ImageFrame(self._manager.binary, loop=self.hass.loop)
image = await asyncio.shield(ffmpeg.get_image(
@ -58,15 +58,16 @@ class FFmpegCamera(Camera):
async def handle_async_mjpeg_stream(self, request):
"""Generate an HTTP MJPEG stream from the camera."""
from haffmpeg import CameraMjpeg
from haffmpeg.camera import CameraMjpeg
stream = CameraMjpeg(self._manager.binary, loop=self.hass.loop)
await stream.open_camera(
self._input, extra_cmd=self._extra_arguments)
try:
stream_reader = await stream.get_reader()
return await async_aiohttp_proxy_stream(
self.hass, request, stream,
self.hass, request, stream_reader,
self._manager.ffmpeg_stream_content_type)
finally:
await stream.close()

View file

@ -86,7 +86,7 @@ class FFmpegMotion(FFmpegBinarySensor):
def __init__(self, hass, manager, config):
"""Initialize FFmpeg motion binary sensor."""
from haffmpeg import SensorMotion
from haffmpeg.sensor import SensorMotion
super().__init__(config)
self.ffmpeg = SensorMotion(

View file

@ -55,7 +55,7 @@ class FFmpegNoise(FFmpegBinarySensor):
def __init__(self, hass, manager, config):
"""Initialize FFmpeg noise binary sensor."""
from haffmpeg import SensorNoise
from haffmpeg.sensor import SensorNoise
super().__init__(config)
self.ffmpeg = SensorNoise(

View file

@ -190,7 +190,7 @@ class ONVIFHassCamera(Camera):
async def async_camera_image(self):
"""Return a still image response from the camera."""
from haffmpeg import ImageFrame, IMAGE_JPEG
from haffmpeg.tools import ImageFrame, IMAGE_JPEG
if not self._input:
await self.hass.async_add_job(self.obtain_input_uri)
@ -207,7 +207,7 @@ class ONVIFHassCamera(Camera):
async def handle_async_mjpeg_stream(self, request):
"""Generate an HTTP MJPEG stream from the camera."""
from haffmpeg import CameraMjpeg
from haffmpeg.camera import CameraMjpeg
if not self._input:
await self.hass.async_add_job(self.obtain_input_uri)
@ -221,8 +221,9 @@ class ONVIFHassCamera(Camera):
self._input, extra_cmd=self._ffmpeg_arguments)
try:
stream_reader = await stream.get_reader()
return await async_aiohttp_proxy_stream(
self.hass, request, stream,
self.hass, request, stream_reader,
ffmpeg_manager.ffmpeg_stream_content_type)
finally:
await stream.close()

View file

@ -115,7 +115,7 @@ class RingCam(Camera):
async def async_camera_image(self):
"""Return a still image response from the camera."""
from haffmpeg import ImageFrame, IMAGE_JPEG
from haffmpeg.tools import ImageFrame, IMAGE_JPEG
ffmpeg = ImageFrame(self._ffmpeg.binary, loop=self.hass.loop)
if self._video_url is None:
@ -128,7 +128,7 @@ class RingCam(Camera):
async def handle_async_mjpeg_stream(self, request):
"""Generate an HTTP MJPEG stream from the camera."""
from haffmpeg import CameraMjpeg
from haffmpeg.camera import CameraMjpeg
if self._video_url is None:
return
@ -138,8 +138,9 @@ class RingCam(Camera):
self._video_url, extra_cmd=self._ffmpeg_arguments)
try:
stream_reader = await stream.get_reader()
return await async_aiohttp_proxy_stream(
self.hass, request, stream,
self.hass, request, stream_reader,
self._ffmpeg.ffmpeg_stream_content_type)
finally:
await stream.close()

View file

@ -138,7 +138,7 @@ class XiaomiCamera(Camera):
async def async_camera_image(self):
"""Return a still image response from the camera."""
from haffmpeg import ImageFrame, IMAGE_JPEG
from haffmpeg.tools import ImageFrame, IMAGE_JPEG
url = await self.hass.async_add_job(self.get_latest_video_url)
if url != self._last_url:
@ -152,15 +152,16 @@ class XiaomiCamera(Camera):
async def handle_async_mjpeg_stream(self, request):
"""Generate an HTTP MJPEG stream from the camera."""
from haffmpeg import CameraMjpeg
from haffmpeg.camera import CameraMjpeg
stream = CameraMjpeg(self._manager.binary, loop=self.hass.loop)
await stream.open_camera(
self._last_url, extra_cmd=self._extra_arguments)
try:
stream_reader = await stream.get_reader()
return await async_aiohttp_proxy_stream(
self.hass, request, stream,
self.hass, request, stream_reader,
self._manager.ffmpeg_stream_content_type)
finally:
await stream.close()

View file

@ -118,7 +118,7 @@ class YiCamera(Camera):
async def async_camera_image(self):
"""Return a still image response from the camera."""
from haffmpeg import ImageFrame, IMAGE_JPEG
from haffmpeg.tools import ImageFrame, IMAGE_JPEG
url = await self._get_latest_video_url()
if url and url != self._last_url:
@ -135,7 +135,7 @@ class YiCamera(Camera):
async def handle_async_mjpeg_stream(self, request):
"""Generate an HTTP MJPEG stream from the camera."""
from haffmpeg import CameraMjpeg
from haffmpeg.camera import CameraMjpeg
if not self._is_on:
return
@ -145,8 +145,9 @@ class YiCamera(Camera):
self._last_url, extra_cmd=self._extra_arguments)
try:
stream_reader = await stream.get_reader()
return await async_aiohttp_proxy_stream(
self.hass, request, stream,
self.hass, request, stream_reader,
self._manager.ffmpeg_stream_content_type)
finally:
await stream.close()

View file

@ -505,7 +505,7 @@ greenwavereality==0.5.1
gstreamer-player==1.1.2
# homeassistant.components.ffmpeg
ha-ffmpeg==1.11
ha-ffmpeg==2.0
# homeassistant.components.philips_js.media_player
ha-philipsjs==0.0.5

View file

@ -114,7 +114,7 @@ geojson_client==0.3
georss_client==0.5
# homeassistant.components.ffmpeg
ha-ffmpeg==1.11
ha-ffmpeg==2.0
# homeassistant.components.hangouts
hangups==0.4.6

View file

@ -33,7 +33,8 @@ class TestFFmpegNoiseSetup:
assert self.hass.data['ffmpeg'].binary == 'ffmpeg'
assert self.hass.states.get('binary_sensor.ffmpeg_noise') is not None
@patch('haffmpeg.SensorNoise.open_sensor', return_value=mock_coro())
@patch('haffmpeg.sensor.SensorNoise.open_sensor',
return_value=mock_coro())
def test_setup_component_start(self, mock_start):
"""Set up ffmpeg component."""
with assert_setup_component(1, 'binary_sensor'):
@ -48,7 +49,7 @@ class TestFFmpegNoiseSetup:
entity = self.hass.states.get('binary_sensor.ffmpeg_noise')
assert entity.state == 'unavailable'
@patch('haffmpeg.SensorNoise')
@patch('haffmpeg.sensor.SensorNoise')
def test_setup_component_start_callback(self, mock_ffmpeg):
"""Set up ffmpeg component."""
with assert_setup_component(1, 'binary_sensor'):
@ -95,7 +96,8 @@ class TestFFmpegMotionSetup:
assert self.hass.data['ffmpeg'].binary == 'ffmpeg'
assert self.hass.states.get('binary_sensor.ffmpeg_motion') is not None
@patch('haffmpeg.SensorMotion.open_sensor', return_value=mock_coro())
@patch('haffmpeg.sensor.SensorMotion.open_sensor',
return_value=mock_coro())
def test_setup_component_start(self, mock_start):
"""Set up ffmpeg component."""
with assert_setup_component(1, 'binary_sensor'):
@ -110,7 +112,7 @@ class TestFFmpegMotionSetup:
entity = self.hass.states.get('binary_sensor.ffmpeg_motion')
assert entity.state == 'unavailable'
@patch('haffmpeg.SensorMotion')
@patch('haffmpeg.sensor.SensorMotion')
def test_setup_component_start_callback(self, mock_ffmpeg):
"""Set up ffmpeg component."""
with assert_setup_component(1, 'binary_sensor'):