<?xml version="1.0" encoding="utf-8"?>
<HmsTranscodingConfig version="2.25">
  <TranscoderList>
    <Transcoder>
      <Name>HMSMPEG</Name>
      <Path>hmsmpeg.exe</Path>
      <HomePage>http://www.ffmpeg.org/</HomePage>
      <Download></Download>
    </Transcoder>
    <Transcoder>
      <Name>HmsMPEG</Name>
      <Path>Hmsmpeg.exe</Path>
      <HomePage>http://www.ffmpeg.org/</HomePage>
      <Download></Download>
    </Transcoder>
    <Transcoder>
      <Name>hmsMPEG</Name>
      <Path>hmsmpeg.exe</Path>
      <HomePage>http://www.ffmpeg.org/</HomePage>
      <Download></Download>
    </Transcoder>
  </TranscoderList>
  <TranscodingProfileList>
    <Profile>
      <TranscoderName>HMSMPEG</TranscoderName>
      <TranscodingCondition></TranscodingCondition>
      <TranscodingConditionSyntaxType>Нет скрипта</TranscodingConditionSyntaxType>
      <TranscodingComment></TranscodingComment>
      <TranscodingFolder></TranscodingFolder>
      <TranscodingMediaType>1</TranscodingMediaType>
      <TranscodingMimeType></TranscodingMimeType>
      <TranscodingMimeTypeScript>var
  bWav: Boolean;
  iSampleRate, iChannels, iBitsPerSample: Integer; 
begin
  bWav := Pos(&apos;wav&apos;, cfgTranscodingAudioMimeType) &gt; 0;  
  if bWav or SameText(Copy(cfgTranscodingAudioMimeType, 1, 7), &apos;audio/L&apos;) then begin
    iChannels := mpChannels;                                     
    if iChannels &gt; cfgTranscodingLpcmMaxChannels then  
      iChannels := cfgTranscodingLpcmMaxChannels
    else if iChannels &lt; 2 then  
      iChannels := 2;
    iSampleRate   := mpAudioSampleRate;
    if iSampleRate &gt; cfgTranscodingLpcmMaxSampleRate then
      iSampleRate := cfgTranscodingLpcmMaxSampleRate      
    else if iSampleRate &lt; 44100 then    
      iSampleRate := 44100;
    iBitsPerSample := mpBitsPerSample;    
    if iBitsPerSample &gt; cfgTranscodingLpcmMaxBitsPerSample then    
      iBitsPerSample := cfgTranscodingLpcmMaxBitsPerSample
    else if iBitsPerSample &lt; 16 then
      iBitsPerSample := 16;        
    if bWav then
      MimeType := cfgTranscodingAudioMimeType    
    else
      MimeType := &apos;audio/L&apos; + IntToStr(iBitsPerSample);        
    MimeType := MimeType + Format(&apos;;rate=%d;channels=%d;bits=%d&apos;, [iSampleRate, iChannels, iBitsPerSample]) 
  end else
    MimeType := cfgTranscodingAudioMimeType      
end.</TranscodingMimeTypeScript>
      <TranscodingMimeTypeSyntaxType>PascalScript</TranscodingMimeTypeSyntaxType>
      <TranscodingMode>0</TranscodingMode>
      <TranscodingParams>function GetSampleFmt(aBitsPerSample: Integer): string;
begin
  if aBitsPerSample &gt; 16 then  
    Result := &apos;s32&apos;    
  else  
    Result := &apos;s24&apos;
end;

function GetMetadataEx(const aParams: array of Variant): string;
var
  i, iTagsSize: Integer;  
  sPropertyValue: string;
begin
  Result := &apos;&apos;;  
  if cfgTranscodingAudioTagsSize &lt;&gt; 0 then begin
    if cfgTranscodingAudioTagsSize &gt; 0 then    
      iTagsSize := cfgTranscodingAudioTagsSize * 1024      
    else               
      iTagsSize := -1;
    Result := Format(&apos;-tags_size %d &apos;, [iTagsSize]);
    i := 0;  
    while i &lt; Length(aParams) do begin
      sPropertyValue := VarToStr(CurrentMediaItem[aParams[i]]);    
      if sPropertyValue &lt;&gt; &apos;&apos; then    
        Result := Result + Format(&apos;-metadata "%s=%s" &apos;, [aParams[i + 1], ReplaceStr(sPropertyValue, &apos;"&apos;, &apos;&apos;)]);
      Inc(i, 2)   
    end    
  end else  
    Result := &apos;-vn &apos; 
end;

function GetMetadata: string;
begin
  Result := GetMetadataEx([
     mpiTitle, &apos;title&apos;, mpiAuthor, &apos;author&apos;,  mpiAlbum, &apos;album&apos;,
     mpiYear, &apos;year&apos;,  mpiGenre, &apos;genre&apos;,  mpiTrack, &apos;track&apos;,
     mpiAuthor, &apos;artist&apos;, mpiAuthor, &apos;performer&apos;, mpiComposer, &apos;composer&apos;,
     mpiConductor, &apos;conductor&apos;, mpiAlbumArtist, &apos;album_artist&apos;, mpiPartNo, &apos;disc&apos;])     
end;

var
  bWav, bFlac: Boolean;
  iBitsPerSample, iChannels, iSampleRate: Integer;
  sInputCodec, sInputFileName, sMimeType, sOutputFormat, 
  sStreamType, sStreamHeader, sStartTime: string;  
begin
  if mpDvdItem then
    HmsCreateResourcePipe(sInputFileName)
  else begin  
    sInputFileName := &apos;&lt;INPUT FILE&gt;&apos;;
    if mpInternetItem and (Pos(&apos;\\.\pipe\&apos;, InputFileName) = 0) then 
      if HmsCreateInternetRadioStream(InputFileName, sInputFileName, sStreamType, sStreamHeader) then    
        if mpFileType = &apos;&apos; then begin        
          sStreamType := LowerCase(sStreamType);
          if Pos(&apos;aac&apos;, sStreamType) &gt; 0 then        
            mpFileType := &apos;aac&apos;          
          else if (Pos(&apos;x-ms&apos;, sStreamType) &gt; 0) then
            mpFileType := &apos;asf&apos;
          else                         
            mpFileType := &apos;mp3&apos;          
        end
  end;        

  if SameText(mpAudioCodec, &apos;dca&apos;) then
    sInputCodec := &apos;-acodec dca &apos;
  else if SameText(mpAudioCodec, &apos;MLP&apos;) then
    sInputCodec := &apos;-f mlp &apos;  
  else if SameText(mpAudioCodec, &apos;pcm_s16le&apos;) then  
    sInputCodec := Format(&apos;-f s16le -ac %d -ar %d &apos;, [mpChannels, mpAudioSampleRate])    
  else begin  
    if mpFileType &lt;&gt; &apos;&apos; then
      sInputCodec := &apos;-f "&apos; + mpFileType + &apos;" &apos;
    else if mpInternetItem or (Pos(&apos;\\.\pipe\&apos;, InputFileName) &gt; 0) then                                           
      sInputCodec := &apos;-f mp3 &apos;      
    else    
      sInputCodec := &apos;&apos;;
  end;  

  if mpInternetItem then
    sMimeType := cfgTranscodingRadioMimeType
  else
    sMimeType := cfgTranscodingAudioMimeType;
    
  bWav := Pos(&apos;wav&apos;, sMimeType) &gt; 0;
  bFlac := Pos(&apos;flac&apos;, sMimeType) &gt; 0;
  if bWav or bFlac or SameText(Copy(sMimeType, 1, 7), &apos;audio/L&apos;) then begin   
    iChannels := mpChannels;                                     
    if iChannels &gt; cfgTranscodingLpcmMaxChannels then  
      iChannels := cfgTranscodingLpcmMaxChannels
    else if iChannels &lt; 2 then  
      iChannels := 2;
    iSampleRate := mpAudioSampleRate;
    if iSampleRate &gt; cfgTranscodingLpcmMaxSampleRate then
      iSampleRate := cfgTranscodingLpcmMaxSampleRate      
    else if iSampleRate &gt; 96000 then    
      iSampleRate := 192000;
    iBitsPerSample := mpBitsPerSample;    
    if iBitsPerSample &gt; cfgTranscodingLpcmMaxBitsPerSample then    
      iBitsPerSample := cfgTranscodingLpcmMaxBitsPerSample
    else if iBitsPerSample &lt; 32 then
      iBitsPerSample := 24;
    if bWav then           
      sOutputFormat := Format(&apos;wav -acodec pcm_s%dle -ac %d -ar %d&apos;, [iBitsPerSample, iChannels, iSampleRate])
    else if bFlac then
      sOutputFormat := Format(&apos;flac -sample_fmt %s -ac %d -ar %d&apos;, [GetSampleFmt(iBitsPerSample), iChannels, iSampleRate])
    else
      sOutputFormat := Format(&apos;s%dbe -ac %d -ar %d&apos;, [iBitsPerSample, iChannels, iSampleRate])
  end else begin
    if Pos(&apos;video/mpeg&apos;, sMimeType) &gt; 0 then
      sOutputFormat := &apos;mpeg -acodec mp2&apos;
    else if Pos(&apos;x-ms&apos;, sMimeType) &gt; 0 then
      sOutputFormat := &apos;asf -acodec wmav2 -ab 320000 -ac 2 -ar 44100&apos;                                   
    else if mpInternetItem and SameText(mpFileType, &apos;mp3&apos;) then
      sOutputFormat := &apos;mp3 -acodec copy&apos;
    else
      sOutputFormat := &apos;mp3 -acodec libmp3lame -ab 320000 -ac 2 -ar 44100&apos;      
  end;
  
  TranscodingParams := Format(&apos;%s -i "%s" %s-f %s "&lt;OUTPUT FILE&gt;"&apos;, 
            [sInputCodec, sInputFileName, GetMetadata, sOutputFormat]);
            
  if not mpInternetItem and (mpTimeStart &lt;&gt; &apos;&apos;) then begin
    sStartTime := &apos;-ss &apos; + mpTimeStart;
    if mpTimeLength &lt;&gt; &apos;&apos; then
      sStartTime := sStartTime + &apos; -t &apos; + Copy(mpTimeLength, 1, 8);
    TranscodingParams := sStartTime + &apos; &apos; + TranscodingParams
  end
end.</TranscodingParams>
      <TranscodingParamsSyntaxType>PascalScript</TranscodingParamsSyntaxType>
      <TranscodingProfile>Музыка (основной)</TranscodingProfile>
      <TranscodingProfileActive>-1</TranscodingProfileActive>
      <TranscodingProfilePriority>-1</TranscodingProfilePriority>
      <TranscodingProfileUuid>BB1A7873C552412CB77C1C3125F0AA33</TranscodingProfileUuid>
    </Profile>
  </TranscodingProfileList>
</HmsTranscodingConfig>
