wav2dao.pl
上传用户:weiliju62
上传日期:2007-01-06
资源大小:619k
文件大小:2k
源码类别:

SCSI/ASPI

开发平台:

MultiPlatform

  1. #!/usr/bin/perl
  2. use strict 'subs';
  3. use strict 'refs';
  4. @dev = ('--device', '/dev/pg0:0,0');
  5. sub help {
  6. print "Syntax: $0 [-H] [options] audiofilesn";
  7. print <<"EOF" ;
  8. Use cdrdao on the wav audio file arguments, making an appropriate toc file.
  9. -d cdrw Use cdrw as the CDRW device (default: $dev[1]).
  10. -o file Output the toc file on this file - do not use a temporary file.
  11. -p Perform a 'print-size' cdrdao command.
  12. -i Perform a 'toc-info' cdrdao command.
  13. -c Perform a 'show-toc' cdrdao command.
  14. -t Perform a 'read-test' cdrdao command.
  15. -w Write the CD in DAO mode (default, if no other action is specified).
  16. -s Simulate writing only ('simulate' instead of 'write' command).
  17. -j Do not eject the CD after writing it.
  18. -n Print the cdrdao commands, instead of executing them.
  19. EOF
  20. }
  21. require 'getopts.pl';
  22. &Getopts('o:pictwsjnH');
  23. if ($opt_H) { &help ; exit }
  24. $dev[1] = $opt_d if $opt_d;
  25. $opt_w = 1 unless $opt_p || $opt_i || $opt_c || $opt_t || $opt_w || $opt_s || $opt_o ne "";
  26. die "Usage: $0 [options] audiofiles" unless @ARGV;
  27. $fname = $opt_o ne "" ? $opt_o : "/tmp/toc$$";
  28. open(F, "> $fname") || die "open($fname): $!, stopped";
  29. print F "CD_DAn";
  30. foreach (@ARGV) {
  31. print F "nTRACK AUDIOnNO COPYn";
  32. # print F "NO PRE_EMPHASISnTWO_CHANNEL_AUDIOn";
  33. print F "FILE "$_" 0n";
  34. # print F "START 00:02:00n" if $no++;
  35. }
  36. close F;
  37. if ($opt_p) {
  38. if ($opt_n) { print "cdrdao print-size $fnamen" }
  39. else { system 'cdrdao', 'print-size', $fname}
  40. }
  41. if ($opt_i) {
  42. if ($opt_n) { print "cdrdao toc-info $fnamen" }
  43. else { system 'cdrdao', 'toc-info', $fname}
  44. }
  45. if ($opt_c) {
  46. if ($opt_n) { print "cdrdao show-toc $fnamen" }
  47. else { system 'cdrdao', 'show-toc', $fname}
  48. }
  49. if ($opt_t) {
  50. if ($opt_n) { print "cdrdao read-test $fnamen" }
  51. else { system 'cdrdao', 'read-test', $fname}
  52. }
  53. if ($opt_w || $opt_s) {
  54. unshift @dev, $opt_s ? 'simulate' : 'write';
  55. push @dev, '--eject' unless $opt_s || $opt_j;
  56. push @dev, $fname;
  57. if ($opt_n) { print "cdrdao @devn" } else { system 'cdrdao', @dev }
  58. }
  59. unlink $fname unless $opt_o ne "";
  60. __END__