// // Copyright (c) 2013-2021 Winlin // // SPDX-License-Identifier: MIT // #ifndef SRS_APP_FFMPEG_HPP #define SRS_APP_FFMPEG_HPP #include #ifdef SRS_FFMPEG_STUB #include #include class SrsConfDirective; class SrsPithyPrint; class SrsProcess; // A transcode engine: ffmepg, used to transcode a stream to another. class SrsFFMPEG { private: SrsProcess* process; std::vector params; private: std::string log_file; private: std::string ffmpeg; std::vector iparams; std::vector perfile; std::string iformat; std::string input; std::vector vfilter; std::string vcodec; int vbitrate; double vfps; int vwidth; int vheight; int vthreads; std::string vprofile; std::string vpreset; std::vector vparams; std::string acodec; int abitrate; int asample_rate; int achannels; std::vector aparams; std::string oformat; std::string _output; public: SrsFFMPEG(std::string ffmpeg_bin); virtual ~SrsFFMPEG(); public: virtual void append_iparam(std::string iparam); virtual void set_oformat(std::string format); virtual std::string output(); public: virtual srs_error_t initialize(std::string in, std::string out, std::string log); virtual srs_error_t initialize_transcode(SrsConfDirective* engine); virtual srs_error_t initialize_copy(); public: virtual srs_error_t start(); virtual srs_error_t cycle(); virtual void stop(); public: virtual void fast_stop(); virtual void fast_kill(); }; #endif #endif