diff options
author | Stefano Sabatini <stefasab@gmail.com> | 2023-03-26 23:34:10 +0200 |
---|---|---|
committer | Stefano Sabatini <stefasab@gmail.com> | 2023-04-02 16:28:54 +0200 |
commit | 774d358e0fd520ab9503447c5f8f5e1633b96e39 (patch) | |
tree | 8934ce7e3e778ba071b7236c9a503ac42f626571 /tools/zmqshell.py | |
parent | 686e14e9fb8b77950fd29f7eb7907505abc67311 (diff) | |
download | ffmpeg-774d358e0fd520ab9503447c5f8f5e1633b96e39.tar.gz |
tools/zmqshell: port to python3
Also extend docs, use argparse and logging.
Diffstat (limited to 'tools/zmqshell.py')
-rwxr-xr-x | tools/zmqshell.py | 63 |
1 files changed, 52 insertions, 11 deletions
diff --git a/tools/zmqshell.py b/tools/zmqshell.py index a7d1126006..8d941636e1 100755 --- a/tools/zmqshell.py +++ b/tools/zmqshell.py @@ -1,6 +1,32 @@ -#!/usr/bin/env python2 +#!/usr/bin/env python3 + +import argparse +import cmd +import logging +import sys +import 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 a +ZMQ 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 the +zeromq documentation at: +https://zeromq.org/ +''' + +logging.basicConfig(format='zmqshell|%(levelname)s> %(message)s', level=logging.INFO) +log = logging.getLogger() -import sys, zmq, cmd class LavfiCmd(cmd.Cmd): prompt = 'lavfi> ' @@ -14,13 +40,28 @@ class LavfiCmd(cmd.Cmd): def onecmd(self, cmd): if cmd == 'EOF': sys.exit(0) - print 'Sending command:[%s]' % cmd - self.requester.send(cmd) - message = self.requester.recv() - print 'Received reply:[%s]' % message - -try: - bind_address = sys.argv[1] if len(sys.argv) > 1 else "tcp://localhost:5555" - LavfiCmd(bind_address).cmdloop('FFmpeg libavfilter interactive shell') -except KeyboardInterrupt: + 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() |