如何将IIS平滑流(ISM)下载为MKV或AVI?

pts*_*pts 5 linux download stream smooth-streaming

通过HTTP可以获得IIS平滑流(ISM)格式的音频+视频流.该.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>
Run Code Online (Sandbox Code Playgroud)

我需要Linux上的命令行工具(或库),它可以下载此流的各个音频和视频块,并将其多路复用到AVI或MKV文件.

实际上,下载很简单:使用Url=清单文件中的值我可以构建块的URL,我可以使用例如wgetcurl来下载块.因此,如果有一个工具可以将块复制到AVI或MKV文件,那对我来说已经足够了.

我知道同一作者的ISM Downloader和RTL Downloader.它们是.NET应用程序而不是开源.理想情况下,我正在寻找一个不需要.NET或Java的小型,独立的开源工具.我更喜欢C,C++,Perl,Python,Ruby程序.

小智 6

VLC Media Player支持IIS Smooth Streaming.转到媒体,转换/保存,网络选项卡,将链接粘贴到清单文件,单击转换/保存,选择一种格式,然后按开始.


小智 5

您也可以尝试 smoothget:https : //github.com/pinglossy/smoothget,它是用 C# 编写的