技術共有

FFmpeg を使用して Android でカメラビデオを録画し、ローカル MP4 ファイルに保存します

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

モバイル アプリケーション開発では、デバイスのカメラを使用してビデオを録画する必要がある場合があり、録画プロセス中にビデオの品質、形式、長さを正確に制御できるようにしたいと考えます。 FFmpeg は強力なマルチメディア処理ツールとして、そのようなニーズの実現に役立つ幅広い機能とオプションを提供します。

依存関係を追加する

Android プラットフォームでは、次のことができます。 com.arthenica:mobile-ffmpeg-full この目標を達成するためのライブラリ。

implementation 'com.arthenica:mobile-ffmpeg-full:4.4'
  • 1

倉庫の住所:https://github.com/tanersener/mobile-ffmpeg

ffmpeg のその他の使用法については、上記のアドレス文書の例を参照してください。

FFmpegを使用してビデオを録画するコマンド

FFmpeg.execute("-f android_camera -video_size 1280x720 -i 0:0 -r 25 -b:v 1.5M -pixel_format yuv420p -t 00:01:00 /sdcard/recorded_video.mp4");
  • 1

パラメータの意味と機能:

  • -f android_camera: 入力形式を android_camera として指定し、Android デバイスのカメラからビデオ ストリームを取得するように FFmpeg に指示します。

  • -video_size 1280x720 : ビデオ入力解像度を 1280x720 ピクセルに設定します。必要に応じて、カメラがサポートする解像度によって異なります。

  • -i 0:0 : 入力ファイルまたはデバイスを指定します。ここで、0:0 は、FFmpeg が Android システムのデフォルトのカメラからビデオ入力を取得することを意味します。 0 はデバイス番号 (通常はカメラ) を表し、0 は入力ストリーム インデックス (通常はビデオ ストリーム) を表します。

  • -r 25 : 出力ビデオのフレーム レートを 25 フレーム/秒 (fps) に設定します。ビデオが 1 秒あたりに表示されるフレーム数を決定します。

  • -b:v 1.5M : ビデオのビデオ ビットレートを 1.5 Mbps (1.5 メガビット/秒) に設定します。ビットレートはビデオの品質とファイル サイズを決定します。一般に、ビットレートが高いほどビデオ品質が高く、ファイル サイズが大きくなります。

  • -pixel_format yuv420p :ピクセルフォーマットをYUV420Pに設定します。 YUV420P はビデオのエンコードと送信に広く使用されているピクセル形式で、Y は輝度成分 (Luma) を表し、U と V はクロマ成分 (Chroma) を表します。

  • -t 00:01:00 : 録画されるビデオの長さを 1 分 (00:01:00) に設定します。 FFmpeg は、指定された時間が経過すると記録を停止します。

  • /sdcard/recorded_video.mp4 : 出力ファイルのパスとファイル名を指定します。ここでは、ビデオは MP4 形式のファイルとして保存され、パスは /sdcard/recorded_video.mp4 です。必要に応じて実際のパスを記述するだけです。読み取りと書き込みの権限があることを確認してください。

知らせ

FFmpeg のパラメータの順序を自由に変更しないでください。変更しないと、パラメータ設定が無効になり、次のようなデフォルトのパラメータが使用されます。 -video_size 1280x720 置かれた場合-i 0:0それより遅いと機能しないので覚えておいてください!

-t 00:01:00 1 分間記録し、時間が経過すると自動的に終了します。もちろん、記録を続けたい場合は、このパラメータを削除して、終了したいときに呼び出します。FFmpeg.cancelそれでおしまい

-b:v 1.5M 必要に応じて柔軟に設定できます。値が大きいほど、適切な値を見つけてください。

🆗,就这些雷,我替大家踩了,下班。