如何在我的应用程序上仅流式传输来自 youtube 视频的音频数据?

Posted

技术标签:

【中文标题】如何在我的应用程序上仅流式传输来自 youtube 视频的音频数据?【英文标题】:How to stream only audio data from youtube video on my application? 【发布时间】:2012-03-04 01:47:59 【问题描述】:

我想开发一个应用程序来显示来自YouTube 的视频列表,当用户点击Youtube 视频时,我的应用程序将开始播放其音频。我遇到了一个解决方案,首先下载YouTube 视频并提取音频,但为了加快进程,我想将音频位直接传输到应用程序的音频播放器而不是视频。 换句话说,我想在我的应用程序中流式传输YouTube 音频而不是视频。

【问题讨论】:

我不相信 YouTube 提供纯音频下载/流。如果您可以控制视频的播放方式,那么您可以简单地隐藏(并且可能通过不解码来节省 CPU 功率)视频,但我怀疑这是您能做的最好的事情。另外,这是什么平台/语言?这可能很重要。 【参考方案1】:

请尝试使用以下代码从视频流中提取音频:

// the video URL is the following
    String url = "http://137.110.92.231/~chenyu/BBC.mp4"; 

    MediaPlayer mediaPlayer = new MediaPlayer();
    mediaPlayer.setAudiostreamType(AudioManager.STREAM_MUSIC);
    try 
        mediaPlayer.setDataSource(url);
     catch (IOException e) 
        e.printStackTrace();
    
    try 
        mediaPlayer.prepare(); // might take long! (for buffering, etc)
     catch (IOException e) 
        e.printStackTrace();
    
    mediaPlayer.start();

【讨论】:

MediaPlayer 类在哪里?任何外部库?请添加更多解释。【参考方案2】:

听起来您已经完成了大部分工作。您的应用程序可以列出视频并下载选定的视频。您只需要一个直接从视频文件播放音频的基础设施。

YouTube 视频可以是 FLV 或 MP4 文件。这些文件中可以是 MP3 或 AAC 音频(其他一些音频编解码器也是可能的,但您不会在 YouTube 上遇到这些)。这意味着您的应用需要知道如何直接拆分 FLV 和 MP4 文件,以及如何将 MP3 和 AAC 音频直接解码为 PCM。有一些库可以帮助完成这些任务,具体取决于您的语言和平台。

【讨论】:

以上是关于如何在我的应用程序上仅流式传输来自 youtube 视频的音频数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的 Android 应用程序中播放 YouTube 视频?

如何在我的 ios 应用程序中嵌入 youtube 或 facebook 直播?

当我们使用 WebView 流式传输视频时如何获得对 MoviePlayer 的控制

如何从本机 ios 应用程序实时流式传输到 youtube 帐户

如何确保 YouTube API 仅返回可在 iPhone 上流式传输的视频?

如何从 Python 中的 Youtube URL 流式传输音频(无需下载)?