/* Dump a MMS stream using the libmms library. */ #include #include #include #include #include #include "mms.h" #define DEFAULT_FILENAME "out.wmv" #define BITRATE 0x80000000 static void usage(void) { fprintf(stderr, "usage: dumpmms [-o file] url\n"); exit(1); } int main(int argc, char *argv[]) { char ch, *filename, *url, buf[BUFSIZ]; int fd, len; mms_t *mms = NULL; filename = DEFAULT_FILENAME; while ((ch = getopt(argc, argv, "o:")) != -1) { switch (ch) { case 'o': if (strcmp(optarg, "-") == 0) filename = NULL; else filename = optarg; break; } } argc -= optind; argv += optind; if (argc == 1) url = *argv; else usage(); if ((mms = mms_connect(NULL, NULL, url, BITRATE)) == NULL) errx(1, "cannot open stream"); if (filename == NULL) fd = STDOUT_FILENO; else if ((fd = open(filename, O_WRONLY|O_CREAT|O_TRUNC, 0644)) == -1) err(1, "cannot open output file"); while ((len = mms_read(0, mms, buf, BUFSIZ)) > 0) { if (write(fd, buf, len) == -1) err(1, "write"); } mms_close(mms); close(fd); return 0; }