【问题标题】:Download ONLY audio from a youtube video仅从 youtube 视频下载音频
【发布时间】:2013-03-06 07:06:55
【问题描述】:

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

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

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

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

【问题讨论】:

  • 下载时服务器可能允许你搜索。 IE。如果下载链接是可搜索的,那为什么不呢。
  • 这个 YoutubeToMp3 应用程序是否使用 FFmpeg 作为后端?尝试捕获并查看它传递给 FFmpeg 的命令行参数。
  • 如果您使用 JDownloader 打开一个 YouTube URL,它会建议您下载多个文件,每个分辨率一个 FLV 文件、图片和 MP3 ;)

标签: audio video youtube ffmpeg


【解决方案1】:

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

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

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

查看示例 Android APP 和实现:

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

【讨论】:

  • 有人知道 youtube-dl 或任何其他工具现在是否可以正常执行此操作?
【解决方案2】:

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

尝试使用

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

看看它是否占用更少的带宽。

【讨论】:

  • 开始工作并冻结在:libavutil 51. 73.101 / 51. 73.101 libavcodec 54. 59.100 / 54. 59.100 libavformat 54. 29.104 / 54. 29.104 libavdevice 54. 2.101 / 534. 1 avfilter 2.101 libav / 3. 17.100 libswscale 2. 1.101 / 2. 1.101 libswresample 0. 15.100 / 0. 15.100 libpostproc 52. 0.100 / 52. 0.100
  • 嗯,这至少是使用 FFmpeg 的方法。您问如何仅转换音频。这就是如何。它应该可以工作,但当然可能存在错误。尝试在他们的邮件列表中提交错误或自行调试。
  • 这将永远无法与 YouTube 一起使用。 FFmpeg 需要一个实际文件作为输入,而不是 YouTube URL。这不是它要解析的内容。如果链接指向有效的视频流或文件,那么它应该可以工作,但是 YouTube 将视频嵌入为 Flash,因此 FFmpeg 无法解析它,除非他们添加了对 YouTube 的明确支持。 youtube-dl 等工具在这方面做得更好。
  • 他当然需要解析 HTML 以获取实际的内容 URL,但是有很多免费和开源工具可以做到这一点 - 例如 youtube-dl.py。他可以重写它们,只打印出内容 URL 而不是下载它。此外,这与他的问题无关,他问是否可以通过仅下载大视频文件的音频流来节省带宽,他仅以 YouTubeToMp3 作为工具的示例。
猜你喜欢
  • 2015-02-12
  • 2014-04-29
  • 2017-04-20
  • 2013-02-24
  • 2010-11-08
  • 2017-02-14
  • 2020-08-03
  • 2014-05-25
相关资源
最近更新 更多