FindPage
View Source:
DPG/makemp2.php
!Notes: If you get strange errors about too many packets in the buffer, add -noskip to the mencoder command line. This seems to fix it. <verbatim> #!/usr/bin/env php <?php // Load options if (count($argv) != 5) { echo "Usage: makemp2 <file> <kbps> <Hz> <basename>\n"; exit; } $name = array_shift($argv); $file = array_shift($argv); $kbps = array_shift($argv); $hz = array_shift($argv); $base = array_shift($argv); if (!file_exists($file)) { printf("encaudio: %s: No such file or directory\n", $file); return 1; } $len = filesize($file); $src = fopen($file, "r"); $cmd = sprintf('mencoder - -o %s.mp2 -of rawaudio -srate %u -ovc copy -oac lavc -lavcopts acodec=mp2:abitrate=%u', $base, $hz, $kbps); $ds = Array( 0 => Array("pipe", "r"), 1 => Array("file", sprintf("%s.mp2.log", $base), "a"), 2 => Array("file", sprintf("%s.mp2.log", $base), "a"), ); $p = proc_open($cmd, $ds, $pipes); if (!$p) { printf("Command execution failed: %s\n", $cmd); return 1; } $blksz = 4096; $count = 0; $running = true; while ($running) { $data = fread($src, $blksz); $count+= strlen($data); $out = fwrite($pipes[0], $data, strlen($data)); if (!$out) { echo "...huh. It didn't want any more.\n"; break; } if (0 == ($count % 65536)) { printf("\r %3.3f%% [%09u/%09u] ", (100 * ($count / $len)), $count, $len); } $running = !feof($src); } printf("\r %3.3f%% [%09u/%09u] \n", (100 * ($count / $len)), $count, $len); fclose($src); fclose($pipes[0]); $ret = proc_close($p); if (0 != $ret) { printf("Command returned with status %u\n", $ret); printf("Check command log (%s.mp2.log) for details\n", $base); return 1; } ?> </verbatim>