16

YouTubeから動画をダウンロードして音声に変換したり、さらに処理したりする方法は無数にあることを私は知っています。しかし最近、MacでYoutubeToMp3というアプリが実際に「SkippingX mb of video」を表示し、おそらくビデオからオーディオをダウンロードするだけで、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

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

4

2 に答える 2

24

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

  1. mp4ヘッダーをダウンロードする
  2. ヘッダーを解析し、オーディオバイトの場所を取得します
  3. http範囲のリクエストとオフセットを含むオーディオバイトをダウンロードします
  4. オーディオバイトをアセンブルし、単純なADTSコンテナにラップして、再生中のm4aファイルを作成します

このように、オーディオバイトの帯域幅のみが使用されます。あなたがそれをするより良いアプローチを見つけたら、私に知らせてください。

サンプルのAndroidAPPと実装については、以下を確認してください。

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

于 2014-05-03T21:35:18.763 に答える
2

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

使ってみてください

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

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

于 2013-03-06T07:44:20.510 に答える