6

現在、カメラからフレームを読み取り、変更し、ビデオ ファイルに保存するアプリケーションを作成しています。ffmpegでやろうと思っています。ffmpeg に関するドキュメントはめったにありません。方法が見つかりません。それを行う方法を知っていますか?

UNIX、および C または C++ で実行する必要があります。いくつかの指示を提供できますか?

ありがとう。

編集:

すみません、はっきり書いていません。フレームをビデオ ファイルに書き込む開発者向け API が必要です。カメラ ストリームを開き、すべてのフレームを取得してから、ffmpeg のパブリック API で利用可能な API を使用してビデオ ファイルに保存します。したがって、コマンドラインツールを使用しても実際には役に立ちません。そして、ffmpeg src フォルダーの下に output_example.c を見てきました。コードの一部を変更せずに直接コピーできることは非常に素晴らしいことです。そして、私はまだ簡単な方法を探しています。

また、アプリを iPhone に移植しようと考えていますが、私の知る限り、iPhone に移植されているのは ffmpeg だけです。GStreamer は glib に基づいており、すべて GNU のものです。iPhoneで動作するかどうかはわかりません。したがって、現時点では ffmpeg が依然として最良の選択です。

コメントをお待ちしております。

4

3 に答える 3

5

これはあなたが始めるのに役立つかもしれません-ドキュメントは利用可能ですが、新しい機能はffmpegのマニュアルページにドキュメント化される傾向があります。

フレームには順番に番号を付ける必要があります。

ffmpeg -f image2 -framerate 25 -i frame_%d.jpg -c:v libx264 -crf 22 video.mp4
  • -fフォーマットを定義します
  • -framerateフレームレートを定義します
  • -i入力ファイルを定義します...%d番号付きファイルを指定します..パディングを指定するために0を追加します(たとえば%05d、ゼロパディングされた5桁の数字の場合)。
  • -vcodecビデオコーデックを選択します
  • -crfx264ストリームのエンコード方法を定義するために使用されるレート制御方法を指定します
  • video.mp4出力ファイルです

詳細については、スライドショーガイドを参照してください。

于 2009-08-19T11:40:49.060 に答える
0

ライブラリを使用せずに必要なことを行うことができます.unixではRGBAデータをプログラムにパイプできるため、次のことができます。

あなたのプログラムでは:

char myimage[640*480*4];
// read data into myimage
fputs(myimage,1,640*480*4,stdout);

そして、プログラムを実行するスクリプトで:

./myprogram | \
mencoder /dev/stdin -demuxer rawvideo -rawvideo w=640:h=480:fps=30:format=rgba \
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=9000000 \
-oac copy -o output.avi

この方法で ffmpeg または x264 を使用することもできると思います。また、プログラム内からエンコーダーを開始し、パイプに書き込むこともできます (ライブラリーを使用している場合は、プロセス全体が単純になります)。

あなたが望むものとはまったく異なり、iPhone 開発には適していませんが、Unix がエンコードのために自動的に 2 番目のプロセッサを使用するという利点があります。

于 2012-03-22T08:22:31.600 に答える
0

ffmpeg 以外のソリューションが実行可能な場合は、GStreamerを確認することをお勧めします。私はそれがあなたのケースにちょうどいいと思います.そこにはかなりのドキュメントがあります.

于 2009-08-19T11:11:25.250 に答える