我知道有一百万种方法可以从youtube下载视频,然后将其转换为音频或对其进行进一步处理 . 但最近我很惊讶地看到一个名为YoutubeToMp3的应用程序在Mac上实际显示“跳过X mb视频”,并且据说只能从视频中下载音频,而无需使用bandwith下载整个视频然后转换它 . 我想知道这是否真的是正确的,因为我无法找到任何办法 . 你有什么想法 ?
编辑:经过一些测试后,这里有一些关于该主题的其他信息 . 我试图从中获取音频的视频只是来自互联网的示例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 回答
经过大量研究后我发现这是不可能的,开发人员可以采用另一种方法:
下载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
FFmpeg能够接受URL作为输入 . 如果URL是可搜索的,那么FFmpeg理论上可以跳过所有视频帧,因此它只需要下载音频流的数据 .
尝试使用
并查看是否需要更少的带宽 .
那么,现在它可以只下载youtube视频的音频,为此我使用youtube 2 mp3 api
它对我很有用 . 所有你需要把youtube id,就是这样 .