web-dev-qa-db-ja.com

YouTubeビデオからオーディオのみをダウンロード

YouTubeからビデオをダウンロードしてオーディオに変換したり、さらに処理したりするには、100万通りの方法があることを知っています。しかし最近、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“ input” -vn -ac 2 -ar 44100 -ab 320k -f mp3 output.mp3

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

残念ながら、これらのコマンドのどれも、使用する帯域幅が少ないようです。彼らはすべてビデオ全体をダウンロードします。ビデオを入手したので、オーディオストリームのみをダウンロードして帯域幅の使用量を下げるコマンドが実際にあるかどうかを確認できますか?ありがとう!

15
Feras

多くの調査の結果、これは不可能であることがわかり、別のアプローチを開発しました。

  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

19
Feras

FFmpegは、入力としてURLを受け入れることができます。 URLがシーク可能な場合、FFmpegは理論的にはすべてのビデオフレームをスキップできるため、オーディオストリームのデータのみをダウンロードする必要があります。

使ってみてください

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

必要な帯域幅が少ないかどうかを確認します。

2
sashoalm