====== DVD Title ====== * [[dvd_info]] * [[lsdvd]] * [[volname]] I used to have a ''dvd_title'' binary I wrote, but I merged it into [[dvd_info]] instead. It returns the UDF volume name. It must be an ISO or the DVD itself in the drive to print it. $ dvd_info --title BATMAN_BEYOND_SEASON_1_DISC_2 Each disc will have a title assigned to it. This is a small string. The disc title is **not** a unique identifer in itself, but it can be used as an element in creating one if you are archiving your titles. I recommend using the [[dvd_id|DVD id instead]]. Most of this page content is old, since I have [[dvd_info]] now. Most programs that access your DVD will at some point usually spit it out as part of displaying the metadata. There are a few ways to get the title from a disc. In this case, I'm using Ruby Spears Superman, disc one. Volname is the simplest one, if you are looking to use it for a shell script: $ volname dvd.iso RUBY_SPEARS_SUPERMAN_DISC_01 Some other ways to get it: lsdvd dvd.iso 2> /dev/null | grep "^Disc Title" | cut -d " " -f 3- Or you can use ''dd'': dd if=VIDEO_TS.IFO bs=1 count=32 skip=64 2> /dev/null Also, here's a small C program I wrote cobbled together from multiple sources to get it as well: #include #include #include #include #include #include #include /** * A simple little program to get the DVD title * * Checks if the device is a DVD drive or not, and if it is, also looks to see * if it can be polled or not. */ int main(int argc, char **argv) { int cdrom; int drive_status; int disc_status; char* dvd_device; char* status; char title[33]; FILE* filehandle = 0; int x, y, z; if(argc == 1) dvd_device = "/dev/dvd"; else dvd_device = argv[1]; // Check if device exists if(access(dvd_device, F_OK) != 0) { fprintf(stderr, "cannot access %s\n", dvd_device); return 1; } // Open device cdrom = open(dvd_device, O_RDONLY | O_NONBLOCK); if(cdrom < 0) { fprintf(stderr, "error opening %s\n", dvd_device); return 1; } drive_status = ioctl(cdrom, CDROM_DRIVE_STATUS); // If the device is a DVD drive, then wait up to 30 seconds for it to be ready (not opening or closing), // and then check if there is a disc in the tray. If there's no disc, exit quietly. // If the drive is open, then it just quietly exits. if(drive_status > 0) { int max_sleepy_time = 30; int num_sleepy_times = 0; while(ioctl(cdrom, CDROM_DRIVE_STATUS) == CDS_DRIVE_NOT_READY && num_sleepy_times < max_sleepy_time) { sleep(1); num_sleepy_times++; } if(ioctl(cdrom, CDROM_DRIVE_STATUS) != CDS_DISC_OK) { close(cdrom); return 1; } } close(cdrom); filehandle = fopen(dvd_device, "r"); if(filehandle == NULL) { fprintf(stderr, "could not open device %s for reading\n", dvd_device); return 1; } if(fseek(filehandle, 32808, SEEK_SET) == -1) { fprintf(stderr, "could not seek on device %s\n", dvd_device); fclose(filehandle); return 1; } x = fread(title, 1, 32, filehandle); if(x == 0) { fprintf(stderr, "could not read device %s\n", dvd_device); fclose(filehandle); return 1; } title[32] = '\0'; fclose(filehandle); y = sizeof(title); while(y-- > 2) { if(title[y] == ' ') { title[y] = '\0'; } } for(z = 0; z < strlen(title); z++) { printf("%c", title[z]); } printf("\n"); return 0; }