如何将 asf/asx/mms 音频文件保存到磁盘(以前的建议不起作用)

如何将 asf/asx/mms 音频文件保存到磁盘(以前的建议不起作用)

我一直在尝试保存嵌入在http://www.1242.com/ondemand/sugawara/130106sugawara.asx。ASF 文件是 mms://copper.jolf.jp/1242/sugawara/130106sugawara.asf。我使用的是 Windows 7 和 10 以及几种不同的浏览器。

在 VLC 中,如果我先打开网络流,然后转换,它会显示“流式传输”大约一分钟,但什么也不做,然后显示“无法打开您的输入...请查看日志了解详细信息。”日志显示“access_mms 错误:未收到数据”。我尝试过转储原始输入,但同样失败了。

如果我将 mms...asf 链接粘贴到 IE 中,音频文件就会在 Windows Media Player 中播放,但文件菜单中的另存为选项会变灰。如果 VLC 是浏览器的默认插件,则无法播放文件。

我发现了一些建议如何翻录 asx 流 - 最好是免费的但它们都不起作用。Orbit Downloader 和 SDP 都不起作用。

可能无关紧要:在 Windows Media Player 中,我可以查看其中一个音频文件的属性,并且“媒体使用权限”选项卡显示“此文件不受保护”。

编辑并添加:

我还是想找到这个问题的答案。同时经过两个月的时间,我自己也取得了一些进步。

我猜想该网站可能使用 RTSP,因此我尝试使用开放RTSP在 Linux 中。以下命令有效,因为它将文件保存到我的磁盘。此文件 (myFile) 为 26MB,所以我猜它可能是完整的 26 分钟音频文件。但我无法确定文件的格式,也无法在 VLC 中播放它。

openRTSP -a -S 0 -K -n -t rtsp://copper.jolf.jp/1242/sugawara/130106sugawara.asf > myFile

有人可以帮忙吗?

顺便说一句,使用 openRTSP 时,必须使用 -K 选项来保持连接有效(请参阅这里),要使此选项起作用,必须手动安装最新版本的 openRTSP(请参阅这里)。Ubuntu 中使用 apt-get 提供的版本不好用。

答案1

最后,我终于搞清楚了如何使用ffmpeg。流程如下:在文本编辑器中打开 http...asx 文件,复制 mms...asf URL,并将 mms 替换为 rtsp。然后将 URL 传递给 ffmpeg:

ffmpeg -rtsp_transport tcp \
-i rtsp://copper.jolf.jp/1242/sugawara/130106sugawara.asf myFile.mp3

这将下载并转换为 mp3。它适用于使用 ffmpeg 版本 2.8.11-0ubuntu0.16.04.1 的 Ubuntu 16.04。其他平台和版本可能也适用。

缓慢

文件/流的每一秒都需要一秒钟的下载,因此非常慢。

接近尾声时,ffmpeg 暂停了几分钟,然后继续并正常完成。对于上面的文件/流,下载时间总是比文件持续时间长 4 分 12 秒。(有人能解释一下这个问题或如何避免吗?)

我以为可以使用-stimeout 10000(“设置套接字 TCP I/O 超时(以微秒为单位)”)来避免暂停,但这没什么区别。您可以执行-t -27:00(“在持续时间达到持续时间后停止写入输出”),但这并不能解决问题。

这是一种无需流式传输文件即可找到文件持续时间的方法:

ffprobe -rtsp_transport tcp \
rtsp://copper.jolf.jp/1242/sugawara/130106sugawara.asf

其他说明

至于为什么-rtsp_transport tcp有必要,请参阅这里

我建议使用-hide_banner来使 ffmpeg 输出更短。

如果您只想保存文件而不进行转换,请使用-codec copy

有时候我执行了以下命令:

sudo add-apt-repository ppa:mc3man/gstffmpeg-keep 
sudo apt-get update 
sudo apt-get install gstreamer0.10-ffmpeg

但我不知道这是否有必要。我遵循的建议是这里; 也可以看看这里

我试过,它与 ffmpeg 类似,并且具有许多相同的选项。但它使用起来比较困难,并且无法与上述选项配合使用。

为什么其他解决方案不起作用?

首先需要找到 mms URL 并用 rtsp 替换 mms。

我认为 VLC 和其他应用程序无法运行的原因是文件/流使用了这些应用程序中没有的专有 Windows Media Audio 编解码器。

当您在 Windows Media Player 中播放时,属性显示音频编解码器是 Windows Media Audio V8,但当您使用 ffmpeg 时,它显示正在使用 wmav2 编解码器。似乎 ffmpeg 开发人员对版本 2 进行了逆向工程,而不是版本 8,但这两个版本是兼容的。

相关内容