オーディオとビデオをトランスコードして Web で表示する最良の方法は何ですか?
私はプログラムでそれを行う必要があります。YouTube や Google Video のように、ユーザーが好きなフォーマットをアップロードして、それを flv、mp3、および/または mp4 にエンコードできるようにしたいと考えています。私たちのサーバーでそれを行うこともできますが、EC2 インスタンスまたは Web サービスを使用したいと考えています。Windows 2008 サーバーがあります。
どれだけ使いたいかによります。これがまったく新しい(そしてほとんど資金がない)アイデアである場合は、ffmpegのルートに進みますが、スケーリングして品質を向上させるために、自動化できるより専門的なエンコーディングツールの1つを検討してください(Rhozet、Inlet、DigitalRapidsは3つのオプション)。
ffmpeg を強くお勧めします。Windows では、このサイトが優れたバイナリをホストしていることがわかりました。
Flv (おそらく Web には最適) にトランスコードする場合は、次の行を使用します。
ffmpeg -hq -y -i $directory/$file -r 20 -s 300x200 -deinterlace -ar 22050 $directory/$file.flv 1>/dev/null 2>/dev/null
もちろん、Linuxの下では非常にうまく機能します:-)。
GPL 化されたものを探している場合:
オーディオをいじるには、sox を試してください。 とてもパワフルな!それはたくさんあります!ほとんどの Linux ディストリビューションに含まれています。
mp3 [オーディオ] エンコーディング用の有名なLAMEもあります。
ビデオでは、mencoderが印象的です。これはmplayerパッケージの一部です。ほとんどのビデオ形式からの変換を処理します。私が今まで夢見ていたよりもはるかに多くが存在していました。(ドキュメントについては、第 9 章 MEncoder の基本的な使用法および第 10 章 MEncoder によるエンコードを参照してください。)
作成できるものについては、多少制限があります。ただし、 mpeg4、mpeg2、dvd-mpeg、flvなどをサポートしています。(私自身はflvを試したことはありませんが、Google は他の人々がそれを使用していることを示しています。)
私は jpeg + サウンド -> mpeg4 ムービーのようなことをしました:
nice +20 $MENCODER mf://${JPEGFILE} -mf w=720:h=480:fps=1/${SOUNDLENGTH}:type=jpeg -audiofile ${SOUNDFILE} -ovc lavc -oac lavc -lavcopts vcodec=mpeg4 -ofps 30000/1001 -o ${MENU_MPG}
または、任意にフォーマットされたビデオを DVD 互換の mpeg にトランスコードします。
nice +20 $MENCODER -edl ${EDL} -ovc lavc -oac lavc -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=${VBITRATE}:keyint=18:acodec=ac3:abitrate=192:aspect=4/3:trell:mbd=2:dia=4:cmp=3:precmp=3:ildctcmp=3:subcmp=3:mbcmp=3:cbp:mv0:dc=10 -of mpeg -mpegopts format=dvd -vf scale=720:480,harddup -srate 48000 -af lavcresample=48000 -ofps 30000/1001 -o ./${INFILE}.reformatted ${FILEPATH}
-edl/-edlout [決定リストの編集] を使用して、必要なビデオ セクションだけを切り取ります。
通常、DVD-mpeg-video の ${VBITRATE} は 5000 です。しかし、少し手を加えれば、より多くのビデオを DVD に収めることができます。アーティファクトを許容できると仮定します。
scale=720:480,harddup -- 私の dvdplayer ではスケールが間違っているという小さな問題と、私の「el Cheapo」プレーヤーでのサウンドとビデオの非同期化の問題を解決するための harddup。
(4x3 ビデオを処理しないワイドスクリーン プレーヤーで再生するには、"aspect=16/9"、"-vf scale=560:480,expand=720:480,harddup"などの残虐行為を使用しました。しかし、一般的にはブラックバーをエンコードするビットを無駄にしたくありません。)
これは、 mencoder にとって最も効率的なオプション セットではありません。実行に時間がかかる場合があります。しかし、私には別の目標がありました...
libavcodec を使用するコマンドライン ツールである ffmpeg で実行できます。ほとんどのビデオ形式の変換を処理できます。必要に応じて、そのライセンスは LPGL です。プログラムで別のプロセスとして利用することもできますし、ハードコアだと感じている場合は、libavcodec ライブラリを自分で使用して直接エンコードすることもできます。
ffmpeg の特定の部分は GPL の下にあることに注意してください。libpostproc モジュールはそうだと思います。記憶が正しければ、これはトランスコーディングで使用されます。このライセンスがあなたがしていることと互換性があることを確認してください。
Main Concept の Reference SDK を見てみましょう。
トランスコーディング用に構築されており、ライセンスされた SDK であるため、ffmpeg/libavcodec に関する法的な問題はありません。
Rhozet Carbon Coderは幅広い形式を処理でき、プラグインを使用してビデオを変更できます (透かしの追加など)。