67 lines · 1.8 KB · Python
RawDownload
#!/usr/bin/env python3 import argparseimport cmdimport loggingimport sysimport zmq HELP = '''Provide a shell used to send interactive commands to a zmq filter. The command assumes there is a running zmq or azmq filter acting as aZMQ server. You can send a command to it, follwing the syntax:TARGET COMMAND [COMMAND_ARGS] * TARGET is the target filter identifier to send the command to* COMMAND is the name of the command sent to the filter* COMMAND_ARGS is the optional specification of command arguments See the zmq/azmq filters documentation for more details, and thezeromq documentation at:https://zeromq.org/''' logging.basicConfig(format='zmqshell|%(levelname)s> %(message)s', level=logging.INFO)log = logging.getLogger()  class LavfiCmd(cmd.Cmd):    prompt = 'lavfi> '     def __init__(self, bind_address):        context = zmq.Context()        self.requester = context.socket(zmq.REQ)        self.requester.connect(bind_address)        cmd.Cmd.__init__(self)     def onecmd(self, cmd):        if cmd == 'EOF':            sys.exit(0)        log.info(f"Sending command: {cmd}")        self.requester.send_string(cmd)        response = self.requester.recv_string()        log.info(f"Received response: {response}")  class Formatter(    argparse.ArgumentDefaultsHelpFormatter, argparse.RawDescriptionHelpFormatter):    pass  def main():    parser = argparse.ArgumentParser(description=HELP, formatter_class=Formatter)    parser.add_argument('--bind-address', '-b', default='tcp://localhost:5555', help='specify bind address used to communicate with ZMQ')     args = parser.parse_args()    try:        LavfiCmd(args.bind_address).cmdloop('FFmpeg libavfilter interactive shell')    except KeyboardInterrupt:        pass  if __name__ == '__main__':    main()

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t