audio - 仅从 youtube 视频下载音频

标签 audio video youtube ffmpeg

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

编辑: 经过一些测试后,这里有一些关于该主题的附加信息。我试图从中获取音频的视频只是来自互联网的示例 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 “输入” -vn -ac 2 -ar 44100 -ab 320k -f mp3 输出.mp3

ffmpeg -i “输入” -vn -acodec 复制输出.mp3

不幸的是,这些命令似乎都没有使用更少的带宽。他们都下载了整个视频。现在你有了视频,你能确认是否真的有一个命令只从它下载音频流并降低带宽使用吗?谢谢!

最佳答案

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

  1. 下载 mp4 文件头
  2. 解析头部并获取音频字节的位置
  3. 使用 http 范围请求和偏移量下载音频字节
  4. 组装音频字节并将它们包装在一个简单的 ADTS 容器中以生成可播放的 m4a 文件

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

有关示例 Android 应用程序和实现,请查看:

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

关于audio - 仅从 youtube 视频下载音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15241076/

相关文章:

macos - 如何使用AUMatrixMixer

html - HTML/JavaScript-onMouseover更改图像并播放声音,onMouseout将图像重置回正常

java - Java获取视频高宽

iphone - 停止旋转 youtubevideo player ios sdk

html - youtube 弹出窗口的自定义关闭按钮

c# - 使用NAudio在Unity中创建AudioClip,在读取数据时卡住1-2秒

javascript - HTML5 Web Audio 可以像 DAW 一样高质量吗?

facebook - CakePHP 1.3:视频插件

css - Chrome v52 html5 视频变长了吗?

video - 文件上传问题