Как загрузить IIS Smooth Streaming (ISM) как MKV или AVI? - PullRequest
5 голосов
/ 11 марта 2012

Имеется аудио + видео поток в формате IIS Smooth Streaming (ISM), доступный через HTTP.Файл .ism/manifest выглядит следующим образом:

<?xml version="1.0" encoding="utf-16"?>
<SmoothStreamingMedia MajorVersion="2" MinorVersion="1" Duration="26571612076">
  <StreamIndex Type="video" Name="video" Chunks="1329" QualityLevels="3"
               MaxWidth="848" MaxHeight="480" DisplayWidth="853" DisplayHeight="480"
               Url="QualityLevels({bitrate})/Fragments(video={start time})">
    <QualityLevel Index="0" Bitrate="900000" FourCC="H264"
                  MaxWidth="848" MaxHeight="480" CodecPrivateData="..." />
    <QualityLevel Index="1" Bitrate="735000" FourCC="H264"
                  MaxWidth="736" MaxHeight="416" CodecPrivateData="..." />
    <QualityLevel Index="2" Bitrate="600000" FourCC="H264"
                  MaxWidth="624" MaxHeight="352" CodecPrivateData="..." />
    <c d="20400971" /> <c d="20000000" /> ...
  </StreamIndex> 
  <StreamIndex Type="audio" Index="0" Name="audio" Chunks="1329" QualityLevels="1"
               Url="QualityLevels({bitrate})/Fragments(audio={start time})">
    <QualityLevel FourCC="AACL" Bitrate="256000" SamplingRate="44100" Channels="2"
                  BitsPerSample="16" PacketSize="4" AudioTag="255"
                  CodecPrivateData="1210" />
    <c d="20201360" /> <c d="19969161" /> ...
  </StreamIndex>
  <StreamIndex Type="text" Subtype="CHAP">
    <Content>
      <Marker Time="0" Value="Thumbnail" />
      <Marker Time="664290000" Value="Thumbnail" /> ...
    </Content>
  </StreamIndex>
</SmoothStreamingMedia>

Мне нужен инструмент командной строки (или библиотека) в Linux, который может загружать отдельные аудио и видео фрагменты этого потока и мультиплексировать его в AVIили MKV-файл.

На самом деле загрузка проста: используя значения Url= в файле манифеста, я могу создать URL-адреса чанка и использовать, например, wget или curl чтобы загрузить куски.Поэтому, если есть инструмент, который может преобразовывать фрагменты в файл AVI или MKV, мне этого вполне достаточно.

Я знаю о ISM Downloader и RTL Downloader того же автора.Это приложения .NET, а не с открытым исходным кодом.В идеале я ищу небольшой автономный инструмент с открытым исходным кодом, который не требует .NET или Java.Я бы предпочел C, C ++, Perl, Python, Ruby.

Ответы [ 4 ]

6 голосов
/ 10 июня 2014

VLC Media Player поддерживает IIS Smooth Streaming. Перейдите на вкладку «Медиа», «Преобразовать / сохранить», «Сеть», вставьте ссылку на файл манифеста, нажмите «Преобразовать / сохранить», выберите формат и нажмите «Пуск».

4 голосов
/ 07 апреля 2013

Вы также можете попробовать smoothget: https://github.com/pinglossy/smoothget, написано на C #

2 голосов
/ 23 марта 2012

Вы можете попробовать использовать smooth-dl: http://git.ao2.it/smooth-dl.git/, но у него ограниченные возможности, он просто подготавливает потоки для мультиплексирования, и вы можете сделать это с помощью ffmpeg (или VirtualDub на окнах?).Приветствуются патчи, чтобы сделать его более удобным.

Также есть libsmth: https://github.com/satufk/libsmth

1 голос
/ 10 апреля 2012

Вы можете попробовать smthplayer: http://sourceforge.net/projects/smthplayer/,, но вы должны сделать некоторые исправления в исходном коде, потому что:

  1. Это всего лишь проигрыватель, поэтому он генерирует видеофайл .264 или .vc1 и файл .aac или .wav, который необходимо преобразовать позже;

  2. Начиная с версии 0.4, автор добавил функцию, которая компрометирует видеофайл, чтобы избежать записи.

Изменяйте его только для личного использования (поэтому не публикуйте измененные версии), поскольку ограничения по юридическим причинам ...

...