仅从YouTube视频下载音频

时间:2013-03-06 07:06:56

标签: audio video youtube ffmpeg

我知道有一百万种方法可以从youtube下载视频,然后将其转换为音频或对其进行进一步处理。但最近我很惊讶地看到一个名为YoutubeToMp3的应用程序在Mac上实际显示“跳过X mb视频”,并且据说只从视频中下载音频,而无需使用bandwith下载整个视频然后转换它。我想知道这是否真的是正确的,因为我无法找到任何办法。你有什么想法吗?

编辑: 经过一些测试后,这里有一些关于该主题的其他信息。我试图从中获取音频的视频只是来自互联网的mp4文件样本:

http://download.wavetlan.com/SVV/Media/HTTP/MP4/ConvertedFiles/MediaCoder/MediaCoder_test6_1m9s_XVID_VBR_306kbps_320x240_25fps_MPEG1Layer3_CBR_320kbps_Stereo_44100Hz.mp4

我试过

ffmpeg -i“输入”out.mp3

ffmpeg -i“输入”-vn out.mp3

ffmpeg -i“input”-vn -ac 2 -ar 44100 -ab 320k -f mp3 output.mp3

ffmpeg -i“input”-vn -acodec copy output.mp3

不幸的是,没有这些命令似乎使用较少的带宽。他们都下载了整个视频。既然你有视频,你可以确认是否有一个命令只从中下载音频流并降低带宽的使用?谢谢!

3 个答案:

答案 0 :(得分:19)

经过大量研究,我发现这是不可能的,并开发了另一种方法:

  1. 下载mp4标题
  2. 解析标头并获取音频字节的位置
  3. 使用http范围请求和偏移下载音频字节
  4. 汇总音频字节并将它们包装在一个简单的ADTS容器中以生成播放m4a文件
  5. 这样只使用音频字节的带宽。如果您找到更好的方法,请告诉我。

    有关Android APP的示例和实施,请查看:

    https://github.com/feribg/audiogetter/blob/master/audiogetter/src/main/java/com/github/feribg/audiogetter/tasks/download/VideoTask.java

答案 1 :(得分:2)

FFmpeg能够接受URL作为输入。如果URL是可搜索的,那么FFmpeg理论上可以跳过所有视频帧,因此它只需要下载音频流的数据。

尝试使用

ffmpeg -i http://myvideo.avi out.mp3

并查看是否需要更少的带宽。

答案 2 :(得分:-5)

嗯,现在可以只下载youtube视频的音频,为此我使用它 youtube 2 mp3 api

对我来说效果很好。只需要输入youtube id就可以了。