<?xml version="1.0" encoding="utf-8"?>
<HmsTranscodingConfig version="1.99.4">
  <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>3</TranscodingMediaType>
      <TranscodingMimeType></TranscodingMimeType>
      <TranscodingMimeTypeScript>begin
  if SameText(cfgTranscodingFileFormat, &apos;MPEG (DVD)&apos;) then
    FileExt := &apos;mpg&apos;
  else if Pos(&apos;MPEGTS&apos;, cfgTranscodingFileFormat) &gt; 0 then
    FileExt := &apos;ts&apos;
  else if Pos(&apos;ASF&apos;, cfgTranscodingFileFormat) &gt; 0 then
    FileExt := &apos;wmv&apos;
  else if SameText(cfgTranscodingFileFormat, &apos;MP4&apos;) then
    FileExt := &apos;mp4&apos;
  else if SameText(cfgTranscodingFileFormat, &apos;MPEG1&apos;) then
    FileExt := &apos;mpeg&apos;
  else
    FileExt := &apos;&apos;;    
  if FileExt &lt;&gt; &apos;&apos; then
    MimeType := HmsGetMimeType(FileExt)    
  else            
    MimeType := &apos;&apos;
end.</TranscodingMimeTypeScript>
      <TranscodingMimeTypeSyntaxType>PascalScript</TranscodingMimeTypeSyntaxType>
      <TranscodingMode>0</TranscodingMode>
      <TranscodingParams>// --------------------- Получение ссылки на Youtube (great senx 2 Eugeny) ----
Variant GetLink_Youtube2(char sLink, char sProc=&apos;&apos;) {
  char sData, sVideoID=&apos;&apos;, sTtsUrl=&apos;&apos;, sDashMpdLink=&apos;&apos;, sStreamMap=&apos;&apos;, sHlsUrl=&apos;&apos;, csVideoInfoLink, sVal;
  char sVideoLink, itag, sType, sVideo3D, sSourceLangCode=&apos;&apos;, s, sFile, sAudioLink, sYoutubeAuth=&apos;&apos;;
  bool bSuccess=false; TRegExpr RE;
  int i, n, iMinPriority=100, iMaxHeight=-1, iMaxVal, iHeight, iPriority;
  bool bDashVideoLinks=false, bSubtitles=false, bTranslate=true, bCanTranslate=false, bSubtitlesTranslate=false;
  variant sig; TJsonObject JSON, FmtStreamMap, StreamInfo; TXMLDocument oXMLDoc;
  TXMLItem oXMLItem, AdaptationSetItem, AudioAdaptationSetItem, VideoAdaptationSetItem, PeriodItem, RepresentationItem;

  int iMaxQualHeight = 720; char sBitrate = &apos;&apos;, sSubtitlesLanguage=&apos;ru&apos;;
  char sHeaders   = &apos;Referer: https://www.youtube.com/\r\nAccept: */*\r\nGData-Version: 2.1\r\n&apos;;
  csVideoInfoLink = &apos;https://www.youtube.com/get_video_info?eurl=%s&amp;video_id=%s&amp;el=embedded&amp;sts=16100&amp;has_verified=1&apos;;
  if (sYoutubeAuth!=&apos;&apos;) sHeaders += &apos;Authorization: GoogleLogin auth=&apos;+sYoutubeAuth+&apos;\r\n&apos;;

  if (HmsRegExMatch(&apos;--maxheight=(\\d+)&apos;, mpPodcastParameters, sVal)) iMaxQualHeight=StrToInt(sVal);
  HmsRegExMatch(&apos;--sublanguage=(\\w{2})&apos;, mpPodcastParameters, sSubtitlesLanguage);
  bSubtitles          = (Pos(&apos;--subtitles&apos;   , mpPodcastParameters)&gt;0);
  bSubtitlesTranslate = (Pos(&apos;--subtranslate&apos;, mpPodcastParameters)&gt;0);
  bDashVideoLinks     = (Pos(&apos;--dashmpd&apos;     , mpPodcastParameters)&gt;0);

  if (sProc==&apos;&apos;) {
    if (!HmsRegExMatch(&apos;[\\?&amp;]v=([^&amp;]+)&apos; , sLink, sVideoID))
         HmsRegExMatch(&apos;/(?:embed|v)/([^\\?]+)&apos;, sLink, sVideoID);

    if (sVideoID==&apos;&apos;) {
      sData = HmsDownloadUrl(sLink, sHeaders, true);
      HmsRegExMatch(&apos;watch\\?v=([^&amp;]+)&apos;, sData, sVideoID);
    }
    if (sVideoID!=&apos;&apos;) {
      if ((Trim(mpTimeLength)==&apos;&apos;) || (RightCopy(mpTimeLength, 5)==&apos;0.000&apos;)) {
        sVal = HmsDownloadUrl(&apos;http://gdata.youtube.com/feeds/api/videos/&apos;+sVideoID, sHeaders, true);
        if (HmsRegExMatch("duration=&apos;(\\d+)&apos;", sVal, sVal)) CurrentMediaItem[mpiTimeLength] = HmsTimeFormat(StrToInt(sVal))+&apos;.000&apos;;
      }
      if (HmsRegExMatch(&apos;has_cc=True.*?ttsurl=([^&amp;]*)&apos;      , sData, sTtsUrl     )) sTtsUrl      = HmsHttpDecode(sTtsUrl     );
      if (HmsRegExMatch(&apos;dashmpd=([^&amp;]*)&apos;                   , sData, sDashMpdLink)) sDashMpdLink = HmsHttpDecode(sDashMpdLink);
      if (HmsRegExMatch(&apos;url_encoded_fmt_stream_map=([^&amp;]*)&apos;, sData, sStreamMap  )) sStreamMap   = HmsHttpDecode(sStreamMap  );
      if (HmsRegExMatch(&apos;hlsvp=([^&amp;]*)&apos;                     , sData, sHlsUrl     )) sHlsUrl      = HmsHttpDecode(sHlsUrl     );
    }
    if (sStreamMap + sDashMpdLink + sHlsUrl == &apos;&apos;) {
      if (sVideoID!=&apos;&apos;) sVideoLink = &apos;http://www.youtube.com/watch?v=&apos; + sVideoID;
      else              sVideoLink = sLink;
      sVideoLink += &apos;&amp;has_verified=1&amp;bpctr=&apos;+IntToStr(DateTimeToTimeStamp1970(Now+EncodeTime(2, 30, 0, 0), false));
      sData = HmsDownloadUrl(sVideoLink, sHeaders, true);
      if (HmsRegExMatch(&apos;ytplayer.config.*?({.*?});&apos;, sData, sData)) {
        JSON = TJsonObject.Create();
        try {
          JSON.LoadFromString(sData);
          sDashMpdLink = JSON.S[&apos;args\\dashmpd&apos;];
          sStreamMap   = JSON.S[&apos;args\\url_encoded_fmt_stream_map&apos;];
          sHlsUrl      = JSON.S[&apos;args\\hlsvp&apos;];
          if (JSON.I[&apos;args\\cc_asr&apos;]==1) sTtsUrl = JSON.S[&apos;args\\ttsurl&apos;];
        } finally { JSON.Free(); }
      }
    }
    if (bDashVideoLinks &amp;&amp; (sDashMpdLink!=&apos;&apos;)) {
      bSuccess = GetLink_Youtube2(sDashMpdLink, &apos;CreateDashVideoLinks&apos;);
    } else if (sStreamMap!=&apos;&apos;) {
      // Subtitles loading
      if (bSubtitles &amp;&amp; (sTtsUrl!=&apos;&apos;)) GetLink_Youtube2(sTtsUrl, &apos;LoadSubtitles&apos;);
      // Get info from StreamMap
      i=1; while (i&lt;=Length(sStreamMap)) {
        sData    = Trim(ExtractStr(sStreamMap, &apos;,&apos;, i));
        sType    = HmsHttpDecode(ExtractParam(sData, &apos;type&apos;, &apos;&apos;, &apos;&amp;&apos;));
        itag     = ExtractParam(sData, &apos;itag&apos;, &apos;&apos;, &apos;&amp;&apos;);
        sVideo3D = ExtractParam(sData, &apos;stereo3d&apos;, &apos;&apos;, &apos;&amp;&apos;);
        sLink    = &apos;&apos;;
        if (sVideo3D==&apos;1&apos;) sVideo3D = &apos;[3D]&apos;;
        if (Pos(&apos;url=&apos;, sData)&gt;0) {
          sLink = &apos; &apos; + HmsHttpDecode(ExtractParam(sData, &apos;url&apos;, &apos;&apos;, &apos;&amp;&apos;));
          if (Pos(&apos;&amp;signature=&apos;, sLink)==0) {
            sig = HmsHttpDecode(ExtractParam(sData, &apos;sig&apos;, &apos;&apos;, &apos;&amp;&apos;));
            if (sig==&apos;&apos;) sig = GetLink_Youtube2(HmsHttpDecode(ExtractParam(sData, &apos;s&apos;, &apos;&apos;, &apos;&amp;&apos;)), &apos;YoutubeDecrypt&apos;);
            if (sig!=&apos;&apos;) sLink += &apos;&amp;signature=&apos; + sig;
          }
        }
        if (sLink!=&apos;&apos;) {
          bSuccess = true;
          if ((Pos(&apos;flv&apos;, sType)&gt;0) || (Pos(&apos;mp4&apos;, sType)&gt;0)) {
            iHeight = GetLink_Youtube2(itag, &apos;YoutubeMaxHeight&apos;);
            if (mpPodcastMediaFormats!=&apos;&apos;) {
              iPriority = HmsMediaFormatPriority(iHeight, mpPodcastMediaFormats);
              if ((iPriority&gt;=0) || (iPriority&lt;iMinPriority)) {
                mpFilePath = sLink; iMinPriority = iPriority;
              }
            } else if ((iHeight&gt;iMaxHeight) &amp;&amp; (iHeight&lt;=iMaxQualHeight)) {
              mpFilePath = sLink; iMaxHeight = iHeight;
            }
          }
        }
      }

    } else if (sHlsUrl!=&apos;&apos;) {
      bSuccess = GetLink_Youtube2(sHlsUrl     , &apos;CreateHlsVideoLinks&apos; );
    } else if (sDashMpdLink!=&apos;&apos;) {
      bSuccess = GetLink_Youtube2(sDashMpdLink, &apos;CreateDashVideoLinks&apos;);
    }
    if (!bSuccess &amp;&amp; (sVideoID!=&apos;&apos;)) bSuccess = GetLink_Youtube2(sVideoID, &apos;CreateMobileVideoLinks&apos;);
  // -------------------------------------------------------
  } else if (sProc==&apos;CreateHlsVideoLinks&apos;) {
    sData = HmsDownloadUrl(sLink, sHeaders, true);
    RE = TRegExpr.Create(&apos;BANDWIDTH=(\\d+).*?RESOLUTION=(\\d+)x(\\d+).*?(http[^#]*)&apos;, PCRE_SINGLELINE);
    try {
      if (RE.Search(sData)) do {
        bSuccess = true;
        sLink = &apos; &apos; + RE.Match(4);
        if (sBitrate!=&apos;&apos;) {
          if (SameText(sBitrate, RE.Match(1))) {mpFilePath=sLink; break;}
        } else {
          iHeight = StrToIntDef(RE.Match(3), 0);
          if (mpPodcastMediaFormats!=&apos;&apos;) {
            iPriority = HmsMediaFormatPriority(iHeight, mpPodcastMediaFormats);
            if ((iPriority&gt;=0) &amp;&amp; (iPriority&lt;iMinPriority)) {
              mpFilePath = sLink; iMinPriority = iPriority;
            }
          } else if ((iHeight &gt; iMaxHeight) &amp;&amp; (iHeight &lt;= iMaxQualHeight)) {
            mpFilePath = sLink; iMaxHeight = iHeight;
          }
        }
      } while (RE.SearchAgain());
    } finally { RE.Free(); }
  // -------------------------------------------------------
  } else if (sProc==&apos;CreateDashVideoLinks&apos;) {
    oXMLDoc = TXMLDocument.Create();
    try {
      RE.Create(&apos;\\/s\\/(.*?)\\/&apos;);
      try {
        if (RE.Search(sLink)) {RE.Replace(&apos;/signature/&apos;+GetLink_Youtube2(RE.Match, &apos;YoutubeDecrypt&apos;)+&apos;/&apos;); sLink = RE.Subject;}
      } finally { RE.Free(); }
      sData = HmsDownloadUrl(sLink, sHeaders, true);
      oXMLDoc.LoadFromString(sData);
      PeriodItem = oXMLDoc.Root.Find(&apos;Period&apos;);
      if (PeriodItem!=nil) {
        AudioAdaptationSetItem = nil; VideoAdaptationSetItem = nil;
        for (i=0; i&lt;PeriodItem.Count; i++) {
          AdaptationSetItem = PeriodItem.Items[i];
          if (SameText(AdaptationSetItem.Name, &apos;AdaptationSet&apos;)) {
            sType = LowerCase(AdaptationSetItem.Attributes[&apos;mimeType&apos;]);
            if (Pos(&apos;video/&apos;, sType)==1) {
              if (VideoAdaptationSetItem==nil) VideoAdaptationSetItem = AdaptationSetItem;
            } else if (Pos(&apos;audio/&apos;, sType)==1) {
              if (AudioAdaptationSetItem==nil) AudioAdaptationSetItem = AdaptationSetItem;
            }
          }
        }
        if ((VideoAdaptationSetItem!=nil) &amp;&amp; (AudioAdaptationSetItem!=nil)) {
          sAudioLink = &apos;&apos;; n=0;
          for (i=0; i&lt;AudioAdaptationSetItem.Count; i++) {
            RepresentationItem = AudioAdaptationSetItem.Items[i];
            if (SameText(RepresentationItem.Name, &apos;Representation&apos;)) {
              n = StrToIntDef(RepresentationItem.Attributes[&apos;bandwidth&apos;], 0);
              if (n&gt;iMaxVal) {iMaxVal=n; sAudioLink=RepresentationItem.ChildValues[&apos;BaseURL&apos;];}
            }
          }
          if (sAudioLink!=&apos;&apos;) {
            for (i=0; i&lt;VideoAdaptationSetItem.Count; i++) {
              RepresentationItem = VideoAdaptationSetItem.Items[i];
              if (SameText(RepresentationItem.Name, &apos;Representation&apos;)) {
                sVideoLink = RepresentationItem.ChildValues[&apos;BaseURL&apos;];
                if (sVideoLink!=&apos;&apos;) {
                  bSuccess = true;
                  sLink = Format(&apos;-i "%s" -i "%s"&apos;, [sVideoLink, sAudioLink]);
                  iHeight = StrToIntDef(RepresentationItem.Attributes[&apos;height&apos;], 0);
                  if (mpPodcastMediaFormats!=&apos;&apos;) {
                    iPriority = HmsMediaFormatPriority(iHeight, mpPodcastMediaFormats);
                    if ((iPriority&gt;=0) &amp;&amp; (iPriority&lt;iMinPriority)) {
                      mpFilePath = sLink; iMinPriority = iPriority;
                    }
                  } else if ((iHeight &gt; iMaxHeight) &amp;&amp; (iHeight &lt;= iMaxQualHeight)) {
                    mpFilePath = sLink; iMaxHeight = iHeight;
                  }
                }
              }
            }
          }
        }
      }
    } finally { oXMLDoc.Free(); }
  // -------------------------------------------------------
  } else if (sProc==&apos;LoadSubtitles&apos;) {
    sFile = IncludeTrailingBackslash(HmsSubtitlesDirectory)+&apos;Youtube\\&apos; + CurrentMediaItem.ItemID + &apos;.&apos; + sSubtitlesLanguage + &apos;.srt&apos;;
    oXMLDoc = TXMLDocument.Create();
    try {
      oXMLDoc.LoadFromString(HmsDownloadUrl(sLink+&apos;&amp;type=list&amp;tlangs=1&amp;fmts=1&amp;asrs=1&apos;, sHeaders, true));
      for (i=0; i&lt;oXMLDoc.Root.Count; i++) {
        oXMLItem = oXMLDoc.Root.Items[i];
        if (SameText(oXMLItem.Name, &apos;track&apos;)) {
          sVal = oXMLItem.Attributes[&apos;lang_code&apos;];
          if (SameText(sVal, sSubtitlesLanguage)) {
            sSourceLangCode = sVal; bTranslate = false; break;
          } else if (SameText(oXMLItem.Attributes[&apos;cantran&apos;], &apos;true&apos;))
            if (SameText(sVal, &apos;en&apos;) || (sSourceLangCode==&apos;&apos;)) sSourceLangCode = sVal;
        } else if (SameText(oXMLItem.Name, &apos;target&apos;))
          if (SameText(oXMLItem.Attributes[&apos;lang_code&apos;], sSubtitlesLanguage)) bCanTranslate = true;
      }
      if (sSourceLangCode!=&apos;&apos;) {
        sLink += &apos;&amp;type=track&amp;kind=asr&amp;format=srt&amp;lang=&apos; + sSourceLangCode;
        if (bTranslate &amp;&amp; bCanTranslate &amp;&amp; bSubtitlesTranslate) sLink += &apos;&amp;tlang=&apos;+sSubtitlesLanguage;
      }
    } finally { oXMLDoc.Free(); }
    HmsDownloadURLToFile(sLink, sFile, sHeaders+&apos;Accept-Encoding: gzip, deflate&apos;);
    CurrentMediaItem[mpiSubtitleLanguage] = sFile;
  // -------------------------------------------------------
  } else if (sProc==&apos;YoutubeMaxHeight&apos;) {
    iHeight=0; itag = sLink;
    if      (IsWordPresent(itag, &apos;13,17&apos;,           &apos;,&apos;)) iHeight=144;
    else if (IsWordPresent(itag, &apos;5,83&apos;,            &apos;,&apos;)) iHeight=240;
    else if (IsWordPresent(itag, &apos;6&apos;,               &apos;,&apos;)) iHeight=270;
    else if (IsWordPresent(itag, &apos;18,34,43,82,100&apos;, &apos;,&apos;)) iHeight=360;
    else if (IsWordPresent(itag, &apos;35,44,101&apos;,       &apos;,&apos;)) iHeight=480;
    else if (IsWordPresent(itag, &apos;22,45,84,102&apos;,    &apos;,&apos;)) iHeight=720;
    else if (IsWordPresent(itag, &apos;37,46&apos;,           &apos;,&apos;)) iHeight=1080;
    else if (IsWordPresent(itag, &apos;38&apos;,              &apos;,&apos;)) iHeight=3072;
    return iHeight;
  // -------------------------------------------------------
  } else if (sProc==&apos;YoutubeDecrypt&apos;) {
    sig = sLink;
    sig = Copy(sig, 2+1, Length(sig));                      // YoutubeDecryptClone  (Result, 2 )
    n = (36-Trunc(36/Length(sig)))+1; Swap(sig[1], sig[n]); // YoutubeDecryptSwap   (Result, 36)
    sig = Copy(sig, 1+1, Length(sig));                      // YoutubeDecryptClone  (Result, 1 )
    s=&apos;&apos;; for(i=Length(sig); i&gt;0; i--) s+=sig[i]; sig = s;  // YoutubeDecryptReverse(Result)
    n = (18-Trunc(18/Length(sig)))+1; Swap(sig[1], sig[n]); // YoutubeDecryptSwap   (Result, 18)
    s=&apos;&apos;; for(i=Length(sig); i&gt;0; i--) s+=sig[i]; sig = s;  // YoutubeDecryptReverse(Result)
    n = (19-Trunc(19/Length(sig)))+1; Swap(sig[1], sig[n]); // YoutubeDecryptSwap   (Result, 19)
    s=&apos;&apos;; for(i=Length(sig); i&gt;0; i--) s+=sig[i]; sig = s;  // YoutubeDecryptReverse(Result)
    return sig;
  // -------------------------------------------------------
  } else if (sProc==&apos;CreateMobileVideoLinks&apos;) {
    sHeaders+= &apos;User-Agent: Mozilla/5.0 (iPad; CPU OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B329 Safari/8536.25&apos;;
    sData = HmsDownloadUrl(&apos;http://m.youtube.com/watch?ajax=1&amp;ipadtype=3&amp;sts=16100&amp;layout=tablet&amp;v=&apos;+sLink+&apos;&amp;has_verified=1&apos;, sHeaders, true);
    if (!HmsRegExMatch(&apos;({.*})&apos;, sData, sData)) return false;
    JSON = TJsonObject.Create();
    try {
      JSON.LoadFromString(sData); sLink = &apos;&apos;;
      FmtStreamMap = JSON.O[&apos;content\\video\\fmt_stream_map&apos;];
      if (FmtStreamMap==nil)
        FmtStreamMap = JSON.O[&apos;content\\player_data\\fmt_stream_map&apos;];
      if ((FmtStreamMap!=nil) &amp;&amp; (FmtStreamMap.DataType==jtArray)) {
        bSuccess = true;
        if (bSubtitles) {
          sData = JSON.S[&apos;content\\player_data\\desktop_get_video_info&apos;];
          if ((Pos(&apos;has_cc=True&apos;, sData) &gt; 0) &amp;&amp; HmsRegExMatch(&apos;ttsurl=(.*?)&amp;&apos;, sData, sLink))
            GetLink_Youtube2(sLink, &apos;LoadSubtitles&apos;);
        }
        for (i=0; i&lt;FmtStreamMap.AsArray.Length; i++) {
          StreamInfo   = FmtStreamMap.AsArray.O[i];
          sType        = StreamInfo.AsObject.S[&apos;type&apos;];
          itag         = StreamInfo.AsObject.S[&apos;itag&apos;];
          if (StreamInfo.AsObject.I[&apos;stered3d&apos;]==1) sVideo3D=&apos;[3D]&apos;;
          sLink        = StreamInfo.AsObject.S[&apos;url&apos;];
          if (sLink!=&apos;&apos;) {
            sLink = &apos; &apos;+Trim(sLink);
            sig = StreamInfo.AsObject.S[&apos;sig&apos;];
            if (sig!=&apos;&apos;) sLink += &apos;&amp;signature=&apos;+GetLink_Youtube2(sig, &apos;YoutubeDecrypt&apos;);
            if ((Pos(&apos;flv&apos;, sType)&gt;0) || (Pos(&apos;mp4&apos;, sType)&gt;0)) {
              iHeight = GetLink_Youtube2(itag, &apos;YoutubeMaxHeight&apos;);
              if (mpPodcastMediaFormats!=&apos;&apos;) {
                iPriority = HmsMediaFormatPriority(iHeight, mpPodcastMediaFormats);
                if ((iPriority&gt;=0) || (iPriority&lt;iMinPriority)) {
                  mpFilePath = sLink; iMinPriority = iPriority;
                }
              } else if ((iHeight&gt;iMaxHeight) &amp;&amp; (iHeight&lt;=iMaxQualHeight)) {
                mpFilePath = sLink; iMaxHeight = iHeight;
              }
            }
          }
        }
      } else {
        sHlsUrl = JSON.S[&apos;content\\player_data\\stream_url&apos;];
        if (sHlsUrl!=&apos;&apos;) GetLink_Youtube2(sHlsUrl, &apos;CreateHlsVideoLinks&apos;);
        else {
          s = Trim(ReplaceStr(ReplaceStr(ReplaceStr(JSON.S["errors"], &apos;"&apos;, &apos;&apos;), &apos;[&apos;, &apos;&apos;), &apos;]&apos;, &apos;&apos;));
          if (s!=&apos;&apos;) GetLink_Youtube2(s, &apos;ShowError&apos;);
        }
      }
    } finally { JSON.Free(); }
  // -------------------------------------------------------
  } else if (sProc==&apos;ShowError&apos;) {
    char sFileMP3 = HmsTempDirectory+&apos;\\sa.mp3&apos;;
    char sFileImg = HmsTempDirectory+&apos;\\youtubemsg_&apos;;
    sVal  = HmsHttpEncode(&apos;Youtube сообщает:&apos;);
    sData = HmsHttpEncode(ReplaceStr(sLink, &apos;\n&apos;, &apos;|&apos;));
    i = cfgTranscodingScreenHeight;
    n = cfgTranscodingScreenWidth;
    sLink = Format(&apos;http://wonky.lostcut.net/videomessage.php?h=%d&amp;w=%d&amp;captfont=AGFriquer_Bold&amp;captsize=%d&amp;fontsize=%d&amp;caption=%s&amp;msg=%s&apos;, [i, n, Round(i/6), Round(i/17), sVal, sData]);
    HmsDownloadURLToFile(sLink, sFileImg);
    for (i=1; i&lt;=7; i++) CopyFile(sFileImg, sFileImg+Format(&apos;%.3d.jpg&apos;, [i]), false);
    try {
      if (!FileExists(sFileMP3)) HmsDownloadURLToFile(&apos;http://wonky.lostcut.net/mp3/sa.mp3&apos;, sFileMP3);
      sFileMP3 = &apos;-i "&apos;+sFileMP3+&apos;" &apos;;
    } except { sFileMP3 = &apos;&apos;; }
    mpFilePath = Format(&apos;%s-f image2 -r 1 -i "%s" -c:v libx264 -pix_fmt yuv420p &apos;, [sFileMP3, sFileImg+&apos;%03d.jpg&apos;]);
  }
  return bSuccess;
}

// ----------------------------------------------------------------------------
{
  string sData;

  sData = HmsStringFromFile(mpFilePath);
  sData = ReplaceStr(sData, &apos;\n\r&apos;, &apos;\n&apos;);

  mpFilePath = ExtractWord(1, sData, &apos;\n&apos;);
  mpFileSize = ExtractWord(2, sData, &apos;\n&apos;);

  if (HmsRegExMatch(&apos;youtube.com/watch&apos;, mpFilePath, &apos;&apos;)) GetLink_YouTube2(mpFilePath);
  mpFilePath = Trim(mpFilePath);
  CurrentMediaItem[mpiInternetItem] = 1;
  if (mpFileSize!=&apos;&apos;) CurrentMediaItem[mpiFileSize] = mpFileSize;

  TranscodingParams = HmsTranscodingInputParams + HmsTranscodingVideoParams + HmsTranscodingMapParams(mpAudioStreamNo);
  TranscodingParams = ReplaceStr(TranscodingParams, &apos;&lt;INPUT FILE&gt;&apos;, mpFilePath);
  HmsLogMessage(1, mpTitle+&apos;: &apos;+TranscodingParams);
  
}</TranscodingParams>
      <TranscodingParamsSyntaxType>C++Script</TranscodingParamsSyntaxType>
      <TranscodingProfile>Фильмы (основной) Links</TranscodingProfile>
      <TranscodingProfileActive>-1</TranscodingProfileActive>
      <TranscodingProfilePriority>0</TranscodingProfilePriority>
      <TranscodingProfileUuid>4b1f8322-5386-4d31-9eaf-854efc252915</TranscodingProfileUuid>
    </Profile>
  </TranscodingProfileList>
</HmsTranscodingConfig>
