web-dev-qa-db-ja.com

ビデオからオーディオを抽出するためのffmpeg

私はビデオからオーディオを抽出するために次のコマンドを試しました:
ffmpeg -i Sample.avi -vn -ar 44100 -ac 2 -ab 192k -f mp3 Sample.mp3

しかし、私は出力を得る

libavutil     50.15. 1 / 50.15. 1
libavcodec    52.72. 2 / 52.72. 2
libavformat   52.64. 2 / 52.64. 2
libavdevice   52. 2. 0 / 52. 2. 0
libavfilter    1.19. 0 /  1.19. 0
libswscale     0.11. 0 /  0.11. 0
libpostproc   51. 2. 0 / 51. 2. 0
SamplE.avi: Invalid data found when processing input

誰か助けてください。

170
user1269669

再エンコードせずにオーディオストリームを抽出するには

ffmpeg -i input-video.avi -vn -acodec copy output-audio.aac
  • -vnはビデオではありません。
  • -acodec copyは、すでにそこにあるのと同じオーディオストリームを使うと言います。

正しいコーデック拡張子を設定するために、それがどんなコーデックであるかを見るために出力を読んでください。

320
Paul Irish

AVIから高品質のMP3をエンコードするには、 - q:aの可変ビットレートを使用します。

ffmpeg -i sample.avi -q:a 0 -map a sample.mp3

あなたがビデオからオーディオの一部を抽出したい場合は、 - ssを使用してください。 - )開始タイムスタンプを指定するオプションと、 - tオプションを指定してエンコード時間を指定します(例:3分5秒から45秒まで)。

ffmpeg -i sample.avi -ss 00:03:05 -t 00:00:45.0 -q:a 0 -map a sample.mp3
  • タイムスタンプは、HH:MM:SS.xxx形式または秒単位である必要があります。

  • - tオプションを指定しないと、最後に進みます。

90
Jeremy Thompson

ffmpeg -i sample.aviはあなたのファイルのためのオーディオ/ビデオフォーマット情報をあなたに与えるでしょう。入力ストリームを解析するように適切なライブラリが構成されていることを確認してください。また、ファイルが破損していないことを確認してください。

12
smp

コマンドラインは正しく、有効なビデオファイルで機能します。私はあなたがmp3で動作するように正しいライブラリをインストールしたことを確認するでしょう、他のオーディオコーデックでlame oプローブをインストールします。

通常

ffmpeg -formats

または

ffmpeg -codecs

あなたがもっと知るために十分な情報を与えるでしょう。

12
Álvaro

Mp3オーディオをエンコードするには ffmpeg.org は次の例を示します。

ffmpeg -i input.wav -codec:a libmp3lame -qscale:a 2 output.mp3

input.wavをビデオのファイル名に置き換えるだけで、ビデオからオーディオを抽出しました。 2は190 kb/secを意味します。あなたは上記の私のリンクで他の品質レベルを見ることができます。

6
Suragch

ただ推測:

-ab 192

あるべき

-ab 192k

そのように思えるかもしれませんが、ffmpegはそれを修正するのに十分賢いです。

2
Chaotic

Aviにラップされたオーディオが最初はmp3フォーマットではない場合、追加パラメータとして-acodec mp3を指定する必要があるかもしれません。またはあなたのmp3コーデックがなんであれ(Linuxシステムではおそらく-acodec libmp3lame)。 ffmpegのすべてのバージョンがまだそのスイッチをサポートしているわけではありませんが、代わりに-f mp3を指定してフォーマットをmp3に「強制」しても、プラットフォームに依存しない同じ効果が得られます。あなたのマイレージは異なる場合があります。

2
Xheralt

変換せずに抽出するには、Linuxのファイルマネージャーカスタムアクションとしてコンテキストメニューエントリを使用して、次を実行します(ビデオに含まれるオーディオタイプを確認した後、oggオーディオを含むビデオの例):

bash -c 'ffmpeg -i "$0" -map 0:a -c:a copy "${0%%.*}".ogg' %f 

これは、ffmpegコマンドffmpeg -i INPUT -map 0:a -c:a copy OUTPUTに基づいています。

私は問題なく-map 0:1を使用しましたが、@ LordNeckbeardのコメントで述べられているように、「ストリーム0:1は常にオーディオであるとは限りません。代わりに-map 0:a of -map 0:1はあいまいさを回避します。 "

2
user4098390

-b:aは現在古くなっているため、-abの代わりに-abを使用してください。入力ファイルのパスが正しいことを確認してください。

ビデオからオーディオを抽出するために、以下のコマンドとその正常な動作を使用しました。

String[] complexCommand = {"-y", "-i", inputFileAbsolutePath, "-vn", "-ar", "44100", "-ac", "2", "-b:a", "256k", "-f", "mp3", outputFileAbsolutePath};

ここに、

-y

尋ねずに出力ファイルを上書きします。

-私

ffmpegは、-iオプションで指定された任意の数の入力「ファイル」から読み取ります。

-vn

ビデオ録画を無効にする

-ar

エンコードされている場合、オーディオストリームのサンプリングレートを設定します

-交流

音声チャンネル数を設定します。

-b:a

オーディオのビットレートを設定する

-f

フォーマット

Githubの私の完全なサンプルffmpeg Androidプロジェクトのために this をチェックしてください。

1

これが私が今使ったものです:

ffmpeg -i input.mkv -ss 01:06:57 -to 01:21:07 -c:v copy -c:a copy output.mp4

参照: https://www.arj.no/2018/05/18/trimvideo/

0
alper

これが私が今使ったものです:

ffmpeg -i my.mkv -map 0:3 -vn -b:a 320k my.mp3

オプションの説明

  • my.mkvはソースビデオファイルです。他の形式も使用できます。
  • -map 0:3は、ビデオファイルから3番目のストリームが欲しいことを意味します。そこにあなたのNを置く - ビデオファイルはしばしば複数のオーディオストリームを持っています。省略するか、-map 0:aを使用してデフォルトのオーディオストリームを取得できます。 ffprobe my.mkvを実行してビデオファイルのストリームを確認します。
  • my.mp3はターゲットのオーディオファイル名で、ffmpegはその拡張子の中からMP3が欲しいと考えています。私の場合、ソースオーディオストリームはac3 DTSで、コピーするだけでは望みどおりではありませんでした。
  • 320kは望ましい目標ビットレートです
  • -vnは、ターゲットファイルにビデオが欲しくないことを意味します
0
Artem Vasiliev