8

ffmpeg を使用して、さまざまなビデオ形式 (flv、mp4) からオーディオを抽出し、mp3 に変換しています。

%~dp0ffmpeg.exe -i %1 -ar 44100 -ac 2 -ab 128k "%~dpn1.mp3"

これはうまくいきます。しかし、私の入力ファイルでは、オーディオのビットレートが変化するため、それに応じて出力のビットレートを調整したいと考えています。Google で広範囲に検索しても、元のビットレートを維持する方法のヒントは見つかりませんでした。

私が必要とするのは次のようなものです:

-ab copy

もちろん、これは機能しません。

うまくいくものはありますか?

PS: 上記のフォーマットからわかるかもしれませんが、私は Windows バッチ ファイルを使用しています。%~dp0ffmpeg.exe -iを使用するハックがあり、grep でオーディオ ビットレートを取得し、コマンド ラインに挿入します。もっと簡単でエレガントな方法が必要と思います。

4

6 に答える 6

1

元のスレッドは何も grep せずに答えを探していましたが、nate のスクリプトが最も役立つ投稿のようです。ただし、いくつかの制限があります。たとえば、すべての出力が grep されたビットレートを提供するわけではなく、「デフォルト」の結果だけが得られる場合もあります。これがもう少し改良されたバージョンです。

#!/bin/env bash
ext=$1
for f in *.${ext}; do
    x=${f%.*} ;
    x=${x% - YouTube}; # I usually download some song covers from YouTube.
    x=$x".mp3";
    bit=`ffmpeg -i "${f}" 2>&1 | grep Audio | awk -F", " '{print $5}' | cut -d' ' -f1`
    if [ -n "$bit" ]; then
        ffmpeg -i "$f" -ab ${bit}k "$x"
    else
        ffmpeg -i "$f" "$x" # this is if we don't have an output from the grep line above, ffmpeg will keep the original quality, that is 192k for 192k
    fi        
done
于 2013-03-05T17:57:10.897 に答える
0

これは、ファイル拡張子を取得し、その拡張子を持つ任意のファイルからオーディオを抽出し、もちろんビットレートを維持するbashスクリプトです。このブログを書いている紳士にあるので、私はコードの重要な部分の信用を主張することはできません。

#!/bin/bash

ext=$1

for file in *.${ext}; do
    tmpfn=${file%.*} ; # get rid of file ext
    tmpfn=$tmpfn".mp3"; # add mp3 file ext
    # next line gets bitrate of audio from video using ffmpeg
    bit=`ffmpeg -i "${file}" 2>&1 | grep Audio | awk -F", " '{print $5}' | cut -d' ' -f1`
    # finally, convert to mp3 using proper bitrate
    ffmpeg -i "$file" -ab ${bit}k "$tmpfn"
done

次のようなファイルがあるディレクトリで実行するだけです。

$bash script.sh flv

ここで、flvはファイル拡張子です。それをハックして、希望どおりに実行するか、複数のファイルタイプを心ゆくまで処理します。

編集:Ubuntu / Debian/etcの誰にとっても簡単なメモ。追加のコーデックパッケージをインストールするようにしてください。そうしないと、機能しません。つまり、ffmpegと追加のlibavコーデックパッケージをインストールする必要があります。そうしないと、時間がかかります。これでうまくいくはずです:

sudo apt-get ffmpeg libavcodec-extra-53
于 2012-10-09T22:33:18.937 に答える
-1

ffmpeg の現在のバージョン (2.1.4 でテスト済み) では、品質を維持するために「-qscale 0」を使用することをお勧めします。これは、私の mpeg4 ビデオ テスト ファイルでうまくいきました。

于 2014-03-26T22:46:19.950 に答える
-1

このオプションを試してください:-codec copyまたは-acodec copy音声のみの場合。
この参照を確認してくださいhttp://ffmpeg.org/ffmpeg.html#Stream-specifiers-1

于 2020-03-17T10:20:49.813 に答える
-2

それ以外の

-ab copy

試す

-sameq


%~dp0ffmpeg.exe -i %1 -sameq "%~dpn1.mp3"
于 2012-06-26T06:35:41.223 に答える