Currently the ffmpeg binary needs to be nested inside the <xypath>. I'm thinking of introducing a selection box at the start that asks the user for the location of the ffmpeg binary.
You can get your binary here:
http://ffmpeg.zeranoe.com/builds/
Code: Select all
/* XYplorer script - Convert selected media files using FFmpeg
All credit for FFmpeg goes to the FFmpeg developers.
FFmpeg is licensed under the GNU Lesser General Public License (LGPL) version 2.1 or later.
However, FFmpeg incorporates several optional parts and optimizations that are covered
by the GNU General Public License (GPL) version 2 or later.
If those parts get used the GPL applies to all of FFmpeg.
http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
http://ffmpeg.org
FFmpeg Windows binaries can be obtained here:
http://ffmpeg.zeranoe.com/builds/
*/
// 1. Collect data
$xypath = "<xypath>";
$selectedfiles=""; //files selected by user in pane a
$apath=""; //source file path
$aextension=""; //source fille extension
$bpath=""; //target file path
$bextension=""; //target file extension
$options=""; //ffmpeg codec options
$ffmpeg=""; //ffmpeg command line is build incrementally.
$bextension = input("FFMpeg conversion - Enter disered file extension.","Enter only the extension. No dots or quotes.","mp3",s,"",,);
$options = input("FFMpeg conversion - Enter FFMpeg command options","Refer to FFmpeg help for commands. Leave blank for default","",s,"",,);
$selectedfiles = get(selecteditemspathnames,|,a);
// 2. Start conversion loop and build the ffmpeg command line
foreach($apath,$selectedfiles,|)
{
// 2.1 FFmpeg executable location
$ffmpeg = $xypath . "\Data\Bins\ffmpeg\bin\ffmpeg.exe -i ";
// 2.2 Add source file path and type
$aextension = gettoken($apath,-1,".");
$bpath = $apath;
$apath = """$apath""";
$ffmpeg = $ffmpeg . $apath;
//echo $ffmpeg;
// 2.3 Add conversion options
$options = " " . $options . " ";
$ffmpeg = $ffmpeg . $options;
//echo $ffmpeg;
// 2.4 Add target file path
$bpath = replace($bpath,$aextension,$bextension,,,1);
$bpath = """$bpath""";
$ffmpeg = $ffmpeg . $bpath;
//echo $ffmpeg;
// 2.5 Run ffmpeg command. Run only one instance of ffmpeg at once.
run "$ffmpeg",,1;
}