That&#x27;s a neat way way to tight together both worlds, and I can see it being useful in cases like testing.<p>Nonetheless, it is important to distinguish the need to communicate between programs and the need to programmatically run a piece of software like ffmpeg and getting its output.<p>For the seconds case, especially in more complex architectures, where you need &quot;interact with software written in another language&quot; it makes sense to explicitly separate this interaction, for example through a broker [0]. In the end, all you need is a way to communicate from Program A that Program B can do some sort of job, and this can be a simple string pointing to a raw video file in a storage like S3, not necessarily the raw file.<p>[0] <a href="http:&#x2F;&#x2F;www.artur-rodrigues.com&#x2F;tech&#x2F;2015&#x2F;06&#x2F;04&#x2F;beanstalkd-a-simple-and-reliable-message-queue.html" rel="nofollow">http:&#x2F;&#x2F;www.artur-rodrigues.com&#x2F;tech&#x2F;2015&#x2F;06&#x2F;04&#x2F;beanstalkd-a-...</a>