首页 文章

仅从YouTube视频下载音频

提问于
浏览
15

我知道有一百万种方法可以从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 "input" out.mp3

ffmpeg -i "input" -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 回答

  • -4

    经过大量研究后我发现这是不可能的,开发人员可以采用另一种方法:

    • 下载mp4 Headers

    • 解析标头并获取音频字节的位置

    • 使用http范围请求和偏移下载音频字节

    • 汇编音频字节并将它们包装在一个简单的ADTS容器中以生成播放的m4a文件

    这样,仅使用音频字节的带宽 . 如果您找到更好的方法,请告诉我 .

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

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

  • 18

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

    尝试使用

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

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

  • 2

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

    它对我很有用 . 所有你需要把youtube id,就是这样 .

相关问题