Опыт настройки HMS и Sony W5500 + несколько вопросов

Alexander Great
Posts: 99
Joined: Wed Mar 10, 2010 9:24 am

Re: Опыт настройки HMS и Sony W5500 + несколько вопросов

Post by Alexander Great »

Мне не удалось... Но могу подсказать, что лучше НЕ использовать в настройках 2 канала. Лучше оставить по умолчанию 0, хай сам разбирается сколько в исходнике каналов. Тогда звук меньше глючит.
peacekeeper
Posts: 10
Joined: Sat Dec 05, 2009 6:15 pm

Re: Опыт настройки HMS и Sony W5500 + несколько вопросов

Post by peacekeeper »

Alexander Great wrote: Вопрос третий (животрепещущий): может все же есть какая-то возможность надурить телевизор, чтобы смотреть HD с высотой кадра не 720 и не 1080 без перекодирования? Хотя ответ я на него и так знаю. ;)
Так какой же ответ?
Alexander Great
Posts: 99
Joined: Wed Mar 10, 2010 9:24 am

Re: Опыт настройки HMS и Sony W5500 + несколько вопросов

Post by Alexander Great »

Ответ такой: можно смотреть без перекодирования H264 с высотой кадра до 576, если его ширина не превышает 720, а если ширина кадра более 720, то тогда только стандартные размеры 1280х720 и 1920х1080.

Подозреваю, что тут какое-то искусственное ограничение в прошивке телевизора. Сам декодер (микросхема) таких ограничений не имеет.
prust

Re: Опыт настройки HMS и Sony W5500 + несколько вопросов

Post by prust »

телевизор Sony KDL 37W5500, после обновления на 16 версию сервера все настройки встали по умолчанию теперь не воспроизводятся файлы кт . имеют встроенную поддержку у телевизора (m2t,m2ts,mpeg,mpg,ts,vob), точнее некоторые файлы воспроизводятся но с тормозами картинки либо изображение рассыпается на квадратики. В 15-й версии это тоже было, но там вроде какой-то профиль поменял и все заработало, теперь не могу вспомнить что менял. Где и что поменять в настройках?
ad-da

Re: Опыт настройки HMS и Sony W5500 + несколько вопросов

Post by ad-da »

При выборе для mkv-файла H264 + AAC профиля "Фильмы - CoreAVC" тестовое транскодирование идет, получившийся mpg-файл телевизор играет, а при транскодировании на лету телевизор говорит "Невозможно воспроизвести". Для связки mkv H264+AC3 и H264+DCA профиль "Фильмы - CoreAVC" все играет нормально. Подскажите, куда рыть???
Alex Commandor
Posts: 21
Joined: Sat Mar 13, 2010 2:22 pm

Re: Опыт настройки HMS и Sony W5500 + несколько вопросов

Post by Alex Commandor »

Верну тему к жизни, потому как вопрос по аудиотрекам до сих пор актуален.
Alexander Great wrote:Пытаюсь добиться, чтобы можно было переключаться между звуковыми дорожками кнопкой "Audio" на пульте.

Переделал профиль "основной". Коряво, но вроде работает...

Code: Select all

IfThen(mpInternetItem, 
   HmsTranscodingProfileParams('Интернет-телевидение'),
   IfThen(mpSubItemsCount > 0,
      HmsTranscodingDvdParams,  
      IfThen(mpAudioStreams > 1,  
(      HmsTranscodingInputParams + HmsTranscodingVideoParams  
      +  HmsTranscodingMapParams(mpAudioStreamNo)
      +  ' "<OUTPUT FILE>"' 
      + ReplaceStr(HmsTranscodingMapParams(mpAudioStreamNo+1),'-map 0:0',''))
      + HmsTranscodingAudioCodecParams(cfgTranscodingAudioBitrate, False)
           + ' -newaudio',
      (HmsTranscodingInputParams + HmsTranscodingVideoParams
      +  HmsTranscodingMapParams(mpAudioStreamNo))
           
           ))  
      )
Может кто нибудь поможет сделать аналогичное для профиля "TsMuxer"?
Добавил я себе сразу после этого сообщения новый профиль "Фильмы (основной)+AUDIO" со скриптом, приведенным выше, и долгое время не мог нарадоваться - две дорожки аудио можно было менять на лету во время воспроизведения. Я забил на то, что дорог можно было использовать только две, благо, большинство фильмов в моей фильмотеке как раз с двумя дорожками (рус-англ). Но некоторая часть ХД-фильмов всё-таки валяется в mkv, и дорожек там часто больше двух! :( Сначала я эти фильмы запускал через папку "Транскодирование" с выбором нужного звука, но ... Я ж ленивый :D , да и программирование часто практикую для облегчения всяких рабочих моментов. Вот и тут я таки решил докопаться до сути и покурить скрипты под HMS.
:cry: Докурился :D Накурил такой профиль:

Code: Select all

var
  i, nAudio, nPos: Integer;
  sParams, sTransParamNew: string;
begin
  nAudio:=mpAudioStreams;
  if mpInternetItem then
    TranscodingParams := HmsTranscodingProfileParams('Интернет-телевидение')
  else if mpSubItemsCount > 0 then 
    TranscodingParams := HmsTranscodingDvdParams
  else begin
    if nAudio > 1 then begin
       nPos:=   mpAudioStreamNo ;
       sParams := HmsTranscodingInputParams + HmsTranscodingVideoParams
                  + HmsTranscodingMapParams(mpAudioStreamNo)
                  +  ' "<OUTPUT FILE>" ';
       for i:=0 to nAudio-1 do begin
         if i<>nPos then begin
           sTransParamNew:=ReplaceStr(HmsTranscodingMapParams(i),'-map 0:0','');
           sTransParamNew:=ReplaceStr(sTransParamNew,'-vstreamid 1',''); 
           sParams := sParams + sTransParamNew
           + HmsTranscodingAudioCodecParams(cfgTranscodingAudioBitrate, false)
           + ' -newaudio';
           end;
           sParams:=ReplaceStr(sParams,'-vstreamid 1','-map 0:0');
           for i:=2 to 99 do begin
             sParams := ReplaceStr(sParams, '-astreamid '+IntToStr(i), '-map 0:'+ IntToStr(i-1)); 
           end
         end
        end
    else begin
       sParams := HmsTranscodingInputParams + HmsTranscodingVideoParams
         +  HmsTranscodingMapParams(mpAudioStreamNo);
         end;
    TranscodingParams :=  sParams;
    end;
end.
Сразу же хочу объяснить, почему новый метод выбора треков (-vstreamid х, -astreamid х) я заменил на -map 0:х -- почему-то даже при указании правильного astreamid при тестовом транскодировании на все звуковые дороги мапилась ПОСЛЕДНЯЯ по счету :shock: Т.е. результирующий список дорог выглядел так:

Code: Select all

Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.6 -> #0.1
  Stream #0.6 -> #0.2
  Stream #0.6 -> #0.3
  Stream #0.6 -> #0.4
  Stream #0.6 -> #0.5
  Stream #0.6 -> #0.6
Замена на -map 0:х сработала правильно (ниже полный лог):

Code: Select all

"C:\Program Files (x86)\Home Media Server\hmsmpeg.exe" -probesize 7000000 -analyzeduration 5000000 -i "J:\VIDEO\Мультики
\Шрек\Шрек-2 -2004- 720p rus(5)+eng(1).mkv" -f dvd -vcodec mpeg2video -b 8000000  -aspect 16:9 -copyts -pix_fmt yuv420p
-s 1280x720 -threads 2 -acodec copy -map 0:0 -map 0:4 "J:\TEMP\HmsTemp\Test_4869a1a679694384a9862b3941e15d46.mpg"   -map
 0:1 -acodec ac3 -ab 448000 -ar 48000 -ac 6 -newaudio  -map 0:2 -acodec ac3 -ab 448000 -ar 48000 -ac 6 -newaudio  -map 0
:3 -acodec ac3 -ab 448000 -ar 48000 -ac 6 -newaudio  -map 0:5 -acodec ac3 -ab 448000 -ar 48000 -ac 6 -newaudio  -map 0:6
 -acodec ac3 -ab 448000 -ar 48000 -ac 6 -newaudio -v 1

FFmpeg version SVN-r25702, Copyright (c) 2000-2010 the FFmpeg developers
  built on Nov 24 2010 13:41:21 with gcc 4.5.0
[matroska,webm @ 0026ad60] max_analyze_duration reached
[matroska,webm @ 0026ad60] Estimating duration from bitrate, this may be inaccurate
Input #0, matroska,webm, from 'J:\VIDEO\╨Ь╤Г╨╗╤М╤В╨╕╨║╨╕\╨и╤А╨╡╨║\╨и╤А╨╡╨║-2 -2004- 720p rus(5)+eng(1).mkv':
  Duration: 01:32:23.94, start: 0.000000, bitrate: 2944 kb/s
    Stream #0.0(eng): Video: h264, yuv420p, 1280x720, PAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc
    Metadata:
      title           : Ripped by Outline, addon by SerGoLeOne
    Stream #0.1(rus): Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
    Metadata:
      title           : ╨Ф╤Г╨▒╨╗╤П╨╢ (AC3) 384kbps
    Stream #0.2(rus): Audio: dca, 48000 Hz, 5.1, s16, 768 kb/s
    Metadata:
      title           : ╨У╨░╨▓╤А╨╕╨╗╨╛╨▓, ╨╛╨┤╨╜╨╛╨│╨╛╨╗╨╛╤Б╤Л╨╣ (DTS) 768kbps
    Stream #0.3(rus): Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
    Metadata:
      title           : ╨У╨╛╨▒╨╗╨╕╨╜, ╨╛╨┤╨╜╨╛╨│╨╛╨╗╨╛╤Б╤Л╨╣ [╨┐╤А╨░╨▓╨╕╨╗╤М╨╜╨░╤П ╨▓╨╡╤А╤Б╨╕╤П] (AC3)1 448kbps
    Stream #0.4(rus): Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
    Metadata:
      title           : ╨У╨╛╨▒╨╗╨╕╨╜, ╨╛╨┤╨╜╨╛╨│╨╛╨╗╨╛╤Б╤Л╨╣ [╤Б╨╝╨╡╤И╨╜╨╛╨╣ ╨┐╨╡╤А╨╡╨▓╨╛╨┤] (AC3) 448kbps
    Stream #0.5(rus): Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
    Metadata:
      title           : ╨Ь╨╜╨╛╨│╨╛╨│╨╛╨╗╨╛╤Б╤Л╨╣ (AC3) 448kbps
    Stream #0.6(eng): Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
    Metadata:
      title           : ╨Р╨╜╨│╨╗╨╕╨╣╤Б╨║╨╕╨╣ (AC3) 384kbps
    Stream #0.7(rus): Subtitle: [0][0][0][0] / 0x0000
    Metadata:
      title           : ╨У╨╛╨▒╨╗╨╕╨╜
[buffer @ 022a1a10] w:1280 h:720 pixfmt:yuv420p
[dvd @ 022bdfd0] VBV buffer size not set, muxing may fail
Output #0, dvd, to 'J:\TEMP\HmsTemp\Test_4869a1a679694384a9862b3941e15d46.mpg':
  Metadata:
    encoder         : Lavf52.84.0
    Stream #0.0(eng): Video: mpeg2video, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], q=2-31, 8000 kb/s, 90k tbn, 23.98 tbc
    Metadata:
      title           : Ripped by Outline, addon by SerGoLeOne
    Stream #0.1(rus): Audio: ac3, 48000 Hz, 5.1, 448 kb/s
    Metadata:
      title           : ╨У╨╛╨▒╨╗╨╕╨╜, ╨╛╨┤╨╜╨╛╨│╨╛╨╗╨╛╤Б╤Л╨╣ [╤Б╨╝╨╡╤И╨╜╨╛╨╣ ╨┐╨╡╤А╨╡╨▓╨╛╨┤] (AC3) 448kbps
    Stream #0.2(rus): Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
    Metadata:
      title           : ╨Ф╤Г╨▒╨╗╤П╨╢ (AC3) 384kbps
    Stream #0.3(rus): Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
    Metadata:
      title           : ╨У╨░╨▓╤А╨╕╨╗╨╛╨▓, ╨╛╨┤╨╜╨╛╨│╨╛╨╗╨╛╤Б╤Л╨╣ (DTS) 768kbps
    Stream #0.4(rus): Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
    Metadata:
      title           : ╨У╨╛╨▒╨╗╨╕╨╜, ╨╛╨┤╨╜╨╛╨│╨╛╨╗╨╛╤Б╤Л╨╣ [╨┐╤А╨░╨▓╨╕╨╗╤М╨╜╨░╤П ╨▓╨╡╤А╤Б╨╕╤П] (AC3)1 448kbps
    Stream #0.5(rus): Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
    Metadata:
      title           : ╨Ь╨╜╨╛╨│╨╛╨│╨╛╨╗╨╛╤Б╤Л╨╣ (AC3) 448kbps
    Stream #0.6(eng): Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
    Metadata:
      title           : ╨Р╨╜╨│╨╗╨╕╨╣╤Б╨║╨╕╨╣ (AC3) 384kbps
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.4 -> #0.1
  Stream #0.1 -> #0.2
  Stream #0.2 -> #0.3
  Stream #0.3 -> #0.4
  Stream #0.5 -> #0.5
  Stream #0.6 -> #0.6
Press [q] to stop encoding
frame= 1092 fps= 62 q=2.0 size=   28550kB time=45.50 bitrate=5139.8kbits/s
Но!!! Это всё было классно, пока я тестировал скрипт на компе. Первые же тесты на телике повергли меня в шок: аудиодорожек как было, так и осталось ДВЕ :cry: При этом видно, что чем больше у исходного файла дорог, тем дольше он запускается на воспроизведение, т.е. транскодинг идет нормально! И маппинг правильный, т.е. первый звук - это дефолтная дорожка, второй звук - первая недефолтная по списку из файла. Но остальных телик не понимает!!! Я перерыл туеву хучу инфы в инете, и так и не смог выяснить - это ограничение самого телевизора (две озвучки) или же всё-таки что-то не то с транскодингом??? Кто-нибудь может подсказать?
З.Ы. Телик 32W5500, HMS 1.17rc1
HMS 1.21.2 + Sony KDL32W5500, Win7 x64 Ultimate, Core2Duo E8500 3.16GHz, 8GB RAM, ATI Radeon 4870HD 512MB + NVIDIA GeForce GT 440 1GB (hybrid PhysX)
Alexander Great
Posts: 99
Joined: Wed Mar 10, 2010 9:24 am

Re: Опыт настройки HMS и Sony W5500 + несколько вопросов

Post by Alexander Great »

Это очень круто, я попробую как только у меня будет время. Спасибо.

Хотелось бы все же что-то аналогичное, типа "Фильмы - TsMuxer+AUDIO", для mkv со стандартными разрешениями.

По поводу ограничения телека. У меня была ДВД-ишка на которой 3 дорожки: АС3 Стерео, АС3 5.1 и LPCM. Кнопкой Audio переключались все 3. Если я не ошибаюсь. Эту инфу нужно перепроверить.

>>Но некоторая часть ХД-фильмов всё-таки валяется в mkv, и дорожек там часто больше двух!

В принципе, у меня таких почти нету, по той простой причине, что после скачки фильма, я сразу выкидываю ненужные дорожки программой mkvtoolnix, заодно экономлю место на винте. Все равно ваш скрипт пригодится. :-)

Еще раз спасибо.

Да, и еще хотел добавить. Очень хочется добиться, чтобы звуковые дорожки в любом формате, конвертились в LPCM стерео. Телек точно его играет, по крайней мере с DVD. А то очень напрягает, что звук с потерями (AC3, DTS и AAC) еще раз перекодируется в формат с потерями (lossy). Слава Богу, хоть нормально заработала галка "Оригинальная звуковая дорожка, если сжатие одно и то же" начиная с 16 версии ХМС.
Alex Commandor
Posts: 21
Joined: Sat Mar 13, 2010 2:22 pm

Re: Опыт настройки HMS и Sony W5500 + несколько вопросов

Post by Alex Commandor »

Alexander Great wrote:...Это очень круто...
:D Не издевайтесь - это моя первая проба в транскодировании
Alexander Great wrote:...Хотелось бы все же что-то аналогичное, типа "Фильмы - TsMuxer+AUDIO", для mkv со стандартными разрешениями...
Попробуйте вот это: (это клон "Фильмы - TsMuxer" с попыткой добавить все аудио - "Фильмы - TsMuxer+AUDIO")
(все нюансы смотрите после кода, внизу)

Code: Select all

const
  csAC3TranscodingParams = '-i "%s" -acodec %s -ar 48000 -ab %d -map 0:%d -y -f %s "%s"';
  
function GetAudioBitrate(const aAudioCodec: string; aAudioBitrate: Integer): Integer;
begin
  if MatchText(aAudioCodec, ['MP2', 'MP3']) and (aAudioBitrate > 320000) then
    Result := 320000
  else
    Result := aAudioBitrate
end;
  
function GetAudioCodec(const aAudioCodec: string): string;
begin
  if (aAudioCodec = '') or SameText(aAudioCodec, 'AC3') then
    Result := 'ac3'
  else if SameText(aAudioCodec, 'AAC') then
    Result := 'libfaac'
  else if SameText(aAudioCodec, 'MP3') then
    Result := 'libmp3lame'
  else if SameText(aAudioCodec, 'MP2') then
    Result := 'mp2'
  else if SameText(aAudioCodec, 'WMA') then
    Result := 'wmav2'
  else
    Result := aAudioCodec
end;

function GetTsMuxerAudioCodec(const aAudioCodec: string): string;
begin
  if (aAudioCodec = '') or SameText(aAudioCodec, 'AC3') then
    Result := 'A_AC3'
  else if SameText(aAudioCodec, 'AAC') then
    Result := 'A_AAC'
  else if SameText(aAudioCodec, 'MP3') then
    Result := 'A_MP3'
  else if SameText(aAudioCodec, 'MP2') then
    Result := 'A_MP3'
  else
    Result := ''  
end;

function GetAudioFormat(const aAudioCodec: string): string;
begin
  if (aAudioCodec = '') or SameText(aAudioCodec, 'AC3') then
    Result := 'ac3'
  else if SameText(aAudioCodec, 'AAC') then
    Result := 'adts'
  else if SameText(aAudioCodec, 'MP3') then
    Result := 'mp3'
  else if SameText(aAudioCodec, 'MP2') then
    Result := 'mp2'
  else
    Result := aAudioCodec
end;

function SameAudioCodec(const aAudioCodec: string; aCodecID: Integer): Boolean;
begin
  if (aAudioCodec = '') or SameText(aAudioCodec, 'AC3') then
    Result := aCodecID = CODEC_ID_AC3
  else if SameText(aAudioCodec, 'AAC') then
    Result := aCodecID = CODEC_ID_AAC
  else if SameText(aAudioCodec, 'MP3') then
    Result := aCodecID = CODEC_ID_MP3
  else if SameText(aAudioCodec, 'MP2') then
    Result := aCodecID = CODEC_ID_MP2
  else if SameText(aAudioCodec, 'WMA') then
    Result := aCodecID = CODEC_ID_WMAV2
  else
    Result := False
end;

var
  i, iAudioStreamNo, iAudioCodecID, iVideoCodecID, 
  iAudioStreamID, iVideoStreamID: Integer;
  MetaFileLines: TStringList;
  sAudioInfo, sVideoInfo, sMetaFileName, 
  sInputVideoFileName, sInputAudioFileName, 
  sAC3TranscodingParams, sAC3ReadPipeName, sAC3WritePipeName, sTimeShift: string; 
begin

    MetaFileLines := TStringList.Create;
    try
      sTimeShift := HmsGetVideoSettings(vstAudioDelay);
      if sTimeShift <> '' then
        sTimeShift := Format(', timeshift=%ss', [sTimeShift]);
      sInputVideoFileName := mpFilePath;
      sInputAudioFileName := mpFilePath;
      MetaFileLines.Add('MUXOPT --no-pcr-on-video-pid --vbr --vbv-len=500');

      iVideoCodecID := HmsGetStreamCodecID(stVideo, 0);
      if iVideoCodecID > 0 then begin   
        if (iVideoCodecID = CODEC_ID_H264) or SameText(mpVideoCodec, 'H264') then 
          sVideoInfo := 'V_MPEG4/ISO/AVC, "%s", insertSEI, contSPS'
        else if (iVideoCodecID = CODEC_ID_MPEG2VIDEO) or SameText(mpVideoCodec, 'MPEG2VIDEO') then
          sVideoInfo := 'V_MPEG-2, "%s"'
        else if (iVideoCodecID = CODEC_ID_VC1) or SameText(mpVideoCodec, 'VC1') then
          sVideoInfo := 'V_MS/VFW/WVC1, "%s"'
        else   
          sVideoInfo := '';
         end;          

        if sVideoInfo <> '' then begin
          if SameText(ExtractFileExt(mpFilePath), '.mkv') then begin
            iVideoStreamID := HmsGetStreamIndex(stVideo, 0) + 1;
          end else begin  
            iVideoStreamID := HmsGetStreamID(stVideo, 0);  
            if SameText(ExtractFileExt(mpFilePath), '.vob') then begin
              iVideoStreamID := iVideoStreamID and 255;
            end;
          end;

          sVideoInfo := sVideoInfo + ', track=%d';
          MetaFileLines.Add(Format(sVideoInfo, [sInputVideoFileName, iVideoStreamID]));
       end;    

      for i := 0 to mpAudioStreams-1 do begin
        iAudioStreamNo := i;
        sInputAudioFileName := mpFilePath;
      iAudioCodecID := HmsGetStreamCodecID(stAudio, iAudioStreamNo);
        if iAudioCodecID = CODEC_ID_AC3 then  
          sAudioInfo := 'A_AC3'
        else if iAudioCodecID = CODEC_ID_DTS then
          sAudioInfo := 'A_DTS'
        else if iAudioCodecID = CODEC_ID_MP3 then
          sAudioInfo := 'A_MP3'
        else if iAudioCodecID = CODEC_ID_AAC then
          sAudioInfo := 'A_AAC'
        else
          sAudioInfo := '';
        if sAudioInfo <> '' then begin
          if SameText(ExtractFileExt(mpFilePath), '.mkv') then begin
            iAudioStreamID := HmsGetStreamIndex(stAudio, iAudioStreamNo) + 1;
          end else begin  
            iAudioStreamID := HmsGetStreamID(stAudio, iAudioStreamNo);
            if SameText(ExtractFileExt(mpFilePath), '.vob') then begin
              iAudioStreamID := iAudioStreamID and 255;
            end
          end;    
          if not SameAudioCodec(cfgTranscodingAudioCodec, iAudioCodecID) then begin
            if HmsCreateDualPipe(sAC3ReadPipeName, sAC3WritePipeName) then begin
              sAC3TranscodingParams := Format(csAC3TranscodingParams, 
                  [mpFilePath, GetAudioCodec(cfgTranscodingAudioCodec ), 
                   GetAudioBitrate(cfgTranscodingAudioCodec, cfgTranscodingAudioBitrate),  
                   HmsGetStreamIndex(stAudio, iAudioStreamNo), 
                   GetAudioFormat(cfgTranscodingAudioCodec), sAC3WritePipeName]);
              if HmsTranscodingExecute('HMSMPEG', sAC3TranscodingParams, False) then begin     
                sInputAudioFileName := sAC3ReadPipeName;
                sAudioInfo := GetTsMuxerAudioCodec(cfgTranscodingAudioCodec);
              end  
            end   
          end;
          sAudioInfo := sAudioInfo + ', "%s", ' + 'track=%d' + sTimeShift;
          MetaFileLines.Add(Format(sAudioInfo, [sInputAudioFileName, iAudioStreamID]));
        end;
        end;
          sMetaFileName := ChangeFileExt(OutputFileName, '.meta');
          MetaFileLines.SaveToFile(sMetaFileName);
          OutputFileName := ChangeFileExt(OutputFileName, '.m2ts');
          TranscodingResult := HmsTranscodingExecute('TSMUXER', '"' + sMetaFileName + '" "' + OutputFileName + '"', True);
    finally
      MetaFileLines.Free
  end  
end.
Нюансы:
1. Тестовое транскодирование (и файл .meta) показывают, что дорожек в выходном файле столько, сколько и во входном.
2. У меня на телевизоре и с этим профилем по-прежнему переключаются только ДВЕ дорожки :cry: Боюсь, что виноват таки телевизор :cry:
3. Дорожек на телике хоть и две, но они нормально переключаются с этим профилем, т.е. есть большАя вероятность, что на нормальных теликах заработает.
4. Я не совсем понял, почему Вы хотите "для mkv со стандартными разрешениями". Этот профиль (если он у Вас заработает) Вас разве не устроит???

Жду предложений и замечаний. ;)
HMS 1.21.2 + Sony KDL32W5500, Win7 x64 Ultimate, Core2Duo E8500 3.16GHz, 8GB RAM, ATI Radeon 4870HD 512MB + NVIDIA GeForce GT 440 1GB (hybrid PhysX)
Alexander Great
Posts: 99
Joined: Wed Mar 10, 2010 9:24 am

Re: Опыт настройки HMS и Sony W5500 + несколько вопросов

Post by Alexander Great »

2 Alex Commandor
Вчера попробовал ваш профиль. Работает. То что нужно! Одна фигня, при перемотке часто происходит разсинхронизация видео и аудио. Но думаю, что профиль в этом не виноват.
Alex Commandor wrote: Попробуйте вот это: (это клон "Фильмы - TsMuxer" с попыткой добавить все аудио - "Фильмы - TsMuxer+AUDIO")
Попробую. Спасибо!
Alex Commandor wrote: 4. Я не совсем понял, почему Вы хотите "для mkv со стандартными разрешениями". Этот профиль (если он у Вас заработает) Вас разве не устроит???
Я имел в виду, что "Фильмы - TsMuxer" можно использовать только для mkv 1280x720 и 1920х1080, то есть стандартных разрешений. Конечно меня устроит то, что вы сделали. Я именно этого и хотел. Мне не удавалось переписать профиль "Фильмы - TsMuxer" так, чтобы он заработал даже для 2-х дорожек. ;)

Колупался с LPCM. Выяснилось, что на всех HD фильмах из моей коллекции, где есть звук LPCM, он 24-битный. На ДВД-ишках же напротив, 16-ти битный. Телевизор спокойно кушает 16-бит LPCM, но не кушает 24. Гад! :(

Буду думать, как так сделать, чтобы любое аудио преобразовывалось в LPCM стерео 16-бит. Или может это вообще ограничение контейнера? В смысле что телек хавает mpg файлы только со звуком AC3?
Alex Commandor
Posts: 21
Joined: Sat Mar 13, 2010 2:22 pm

Re: Опыт настройки HMS и Sony W5500 + несколько вопросов

Post by Alex Commandor »

Alexander Great wrote:2 Alex Commandor
Вчера попробовал ваш профиль. Работает. То что нужно! Одна фигня, при перемотке часто происходит разсинхронизация видео и аудио. Но думаю, что профиль в этом не виноват.
Отлично! :) Только я не совсем понял - это Вы пробовали профиль "Фильмы (основной)+AUDIO", или же все-таки "Фильмы - TsMuxer+AUDIO"? Потому как дальше Вы написали:
Alexander Great wrote:
Alex Commandor wrote: Попробуйте вот это: (это клон "Фильмы - TsMuxer" с попыткой добавить все аудио - "Фильмы - TsMuxer+AUDIO")
Попробую. Спасибо!
Т.е. вроде как попробовали Вы первый профиль, а второй еще нет? :?:

З.Ы. Если у Вас рассинхрон при перемотке все-таки с профилем "Фильмы - TsMuxer+AUDIO", то есть вопрос. Рассинхрон НА ВСЕХ звуковых дорожках, или только на ДТС? Там же AC3 берется напрямую из mkv, а вот ДТС перекодируется на лету в AC3 через pipe от hmsmpeg; возможно, из-за этого при перемотке звук не попадает, куда надо?
HMS 1.21.2 + Sony KDL32W5500, Win7 x64 Ultimate, Core2Duo E8500 3.16GHz, 8GB RAM, ATI Radeon 4870HD 512MB + NVIDIA GeForce GT 440 1GB (hybrid PhysX)
Post Reply