Figured it was worth a brief writeup - I was unable to get the essential outdoor camera 2 working with the standard setup in this repo, something about flv being incompatible with h265. Lots of digging later, and I ended up with a whole load of changes but ultimately a working setup. In camera.py, I changed the internal ffmpeg call in _start_stream():
self.stream = await asyncio.create_subprocess_exec( *['ffmpeg', '-err_detect', 'ignore_err', '-fflags', '+genpts+discardcorrupt+igndts', '-i', stream, '-c:v', 'libx264', '-preset', 'ultrafast', '-c:a', 'libmp3lame', '-ar', '44100', '-bsf', 'dump_extra', '-f', 'mpegts', 'pipe:'], stdin=subprocess.DEVNULL, stdout=self.proxy_writer, stderr=subprocess.PIPE if DEBUG else subprocess.DEVNULL )
This re enocdes with some error handling, which seemed to clear the issues with the original stream up. Seems like arlo uses some weird mpegts parameters.
Figured it was worth a brief writeup - I was unable to get the essential outdoor camera 2 working with the standard setup in this repo, something about flv being incompatible with h265. Lots of digging later, and I ended up with a whole load of changes but ultimately a working setup. In camera.py, I changed the internal ffmpeg call in
_start_stream():self.stream = await asyncio.create_subprocess_exec( *['ffmpeg', '-err_detect', 'ignore_err', '-fflags', '+genpts+discardcorrupt+igndts', '-i', stream, '-c:v', 'libx264', '-preset', 'ultrafast', '-c:a', 'libmp3lame', '-ar', '44100', '-bsf', 'dump_extra', '-f', 'mpegts', 'pipe:'], stdin=subprocess.DEVNULL, stdout=self.proxy_writer, stderr=subprocess.PIPE if DEBUG else subprocess.DEVNULL )This re enocdes with some error handling, which seemed to clear the issues with the original stream up. Seems like arlo uses some weird mpegts parameters.