我有一个基本的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
之类的各种方法,但它们仅适用于音频文件。
最佳答案
我想您是说您获得了YouTube mp4文件的网址,并且您想要流式传输该内容,但只播放音频,而不是在服务器端提取音频轨道并仅传输音频。
您没有提到要使用的平台,但是对于Web或移动设备,最简单的方法可能是简单地使用常规视频播放器进行播放,而只是隐藏视频显示。
这很可能是低效的,具体取决于媒体播放器的智能程度-即,如果它足够聪明,以至于在知道视频实际上不可见时也不必费心解码和准备显示视频,那就可以了,但是我认为这是可以的对于大多数媒体播放器来说,这不是一个可能的功能。
如果只是偶尔使用,那么效率可能对您并不重要。
如果确实可以选择首先在某个地方处理服务器上的mp4,则可以使用ffmpeg从mp4中提取mp3音频文件-例如,请参见以下答案:https://stackoverflow.com/a/36324719/334402
值得注意的是,YouTube通常希望使用自己的播放器来播放视频,因此任何提取“原始” mp4网址的方法都可能会在没有通知的情况下停止工作。在此处查看“您不能”和“您可以”答案,以了解更多背景信息:Is there a Youtube API that gives only audio?
(如果问题被删除或链接的'TL; DR'版本破译,则是:这样做违反YouTube的条款,但仍然有解决方案的示例)。
关于java - 流式传输远程.mp4文件,但仅音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47475424/