## 1 Introduction  
Multimedia (MM) data have been used in a plethora of applications for at least three decades. The wide availability of such data is facilitated by the presence of low-cost production (cameras, sensors, etc.) and storage devices. Moreover, often MM data comes in streams, i.e., sequences of MM objects of the same type that are received from a producer. The value that can be extracted from MM streams is dramatic, but so are challenges posed on computing power and analytical intelligence [1]. In particular, real-time analysis requires that data streams are processed with high throughput and limited latency, so as to exploit data freshness to respond and make decisions quickly. In this paper, we describe the metamorphosis of RAM\({}^{3}\)S [2, 3], a framework that we developed to integrate Big Data management platforms, so as to allow researchers to easily implement real-time complex analyses of massive MM streams exploiting a distributed computing environment (RAM\({}^{3}\)S stands for Real-time Analysis of Massive MultiMedia Streams). The use of RAM\({}^{3}\)S allows researchers to easily adapt complex MM stream analysis techniques (initially conceived for a centralized system) to a distributed computing scenario, so as to effectively _scale out_ them. Indeed, Big Data platforms offer a number of services which are crucial for the management and analysis of large quantities of information, in order to provide evidence-based decision making in many aspects of human activities. However, the use of such platforms is made difficult for analysts by the fact that their major focus is on issues of fault-tolerance, synchronization, increased parallelism, and so on, instead of providing an easy-to-use interface to programmers. The idea behind RAM3S was not to create yet another streaming processing engine, rather to give MM analysts an easy-to-use interface to existing Big Data streaming platforms. RAM3S thus acts as a bridge to integrate two complex technologies, one applicative (the multimedia stream analysis) and one architectural (the Big Data platform), allowing the seamless implementation of the former onto the latter. In this way, for example, a developer could compare the performance of different streaming engines before committing to a specific one for her applications. The fields of application of such technologies are innumerable, from the security of citizens [1], to recommender systems [4], and sentiment analysis [5], to cite a few. Although the generality of RAM3S has been demonstrated before, its applicability to the ever-changing world of stream analysis was limited by two main issues:  
* First, in its original incarnation [2], RAM3S exploited RabbitMQ to feed stream data into the system, and no other message broker was considered as an alternative;
* Second, the streaming processing model was over-simplistic, consisting of just a single node where each MM objects was analyzed. The contributions of the new, metamorphosed version of RAM3S we present here are:  
1. The RAM3S interface to input (and output) streams has been generalized so as to encompass the use of different message brokers (the current version includes the interface to three different message brokers as opposed to the single one originally available);
2. Decoupling RAM3S from the message broker also allows cascading different RAM3S instances, since the output of a single instance can now be used as input to another one. This provides a recursive, and richer, model for the processing of MM streams;
3. As an additional feature, we also included in RAM3S another popular Big Data streaming platform, namely Apache Samza, in addition to the ones already present (Spark Streaming, Storm, and Flink);
4. Finally, thanks to the wide availability of alternatives provided by this new version of RAM3S, we are able to experimentally compare performances of different message brokers and stream processing engines on three different real-world applications, demonstrating the handiness of RAM3S as a platform for testing purposes.