流式传输远程.mp4文件,但仅限音频

时间:2017-11-24 14:36:36

标签: java audio video streaming

我有这个基本的Java程序,可以将YouTube视频链接转换为直接的.mp4链接:

YouTubeParser parser = new YouTubeParser();
URL source = parser.extract(parser.info(new URL("https://www.youtube.com/watch?v=afhdlaksfh")), new AtomicBoolean(false), null).get(0).getSource();

现在我想玩source。我不想添加GUI,所以我不需要视频部分。

我已经尝试了各种方法,例如javax.media.Player,但它们仅适用于仅音频文件。

1 个答案:

答案 0 :(得分:0)

我认为你说你获得了YouTube mp4文件的Url,你想要流式播放但只播放音频,而不是在服务器端提取音频轨道,只是流式传输音频。

您没有提到您正在使用的平台,但对于网络或移动设备,最简单的方法可能是简单地使用普通视频播放器播放它并隐藏视频显示。

这很可能是效率低下的,取决于媒体播放器的聪明程度 - 即如果它足够聪明,当它知道视频实际上不可见时,不打扰解码并准备显示视频那么它会没问题,但我认为这对大多数媒体播放器来说不是一个可能的功能。

如果只是偶尔使用,那么效率对您来说无关紧要。

如果您确实可以选择首先在某个服务器上处理mp4,那么您可以使用ffmpeg从mp4中提取mp3音频文件 - 请参阅此答案,例如:https://stackoverflow.com/a/36324719/334402

值得注意的是,YouTube通常希望自己的播放器用于播放其视频,因此任何提取“原始”mp4网址的方法都可能会停止工作,恕不另行通知。在这里查看“你不能”和“是的你可以”的答案,看看更多背景:Is there a Youtube API that gives only audio?

(如果该问题被删除或链接中断'TL; DR'版本是:它违反了YouTube的条款和条件来做这样的事情,但仍然有解决方案的例子)。