ハードウェアアクセラレーションによるh264エンコーディングは可能ですか?


11

Raspberry Piは、カメラボードからビデオを記録するときに、ハードウェアアクセラレーションによるh264エンコーディングを行います。ソース画像がカメラから直接来ていない場合、どうすれば(ハードウェアアクセラレーションを使用して)h264をエンコードできますか?

これをサポートするコマンドラインツールはありますか?

いいえの場合、これを可能にするためにどのAPIを検討する必要がありますか?


何をエンコードしていて、現在はどのようにエンコードしていますか?-ビデオファイルを変換したり、画像や音声からレンダリングしたりしていますか
Wilf

@Wilf私はこれに一般的に興味がありますが、現在のアプリケーションがあります:タイムラプスを直接ビデオにエンコードします。1/5〜2 fpsの低いフレームレートが必要なため、raspividを使用できません。また、raspivid自動露出は、私の照明条件(低照度)で振動します。だから私はraspistillを使用したいのですが、ビデオに直接エンコードするので、結果は(JPEGのように)スペースを取りすぎません。第二のアプリケーションとして、私は(多くのCPU時間がかかります)Mathematicaを使用して、リアルタイムで各フレームを処理掲示し、したいその後、 H264にエンコードするためにそれらを送ります。
Szabolcs 2014

1
@Wilf私は仕事をすることが可能であるはずだと思う部分的な解決策を持っています:アイデアはraspiyuv -o - | rpi-encode-yuv(大体)rpi-encode-yuvツールがここからどこにあるかのようなものです フレームサイズはこのツールでハードコードされているため、Cファイルの先頭で変更して再コンパイルする必要があります。残念ながらraspiyuv、フレームサイズを出力にエンコードしていないように見えるので、適切に調整された出力をまだ取得できていません。最終的にはゴミになる、徐々に変化する画像が表示されます。まだそれに取り組んでいます。
Szabolcs 2014

回答:


8

GStreamerはRaspbianに含まれており、そのOpenMAXプラグインでは、Raspberry Piのハードウェアエンコーディング機能を使用します。

探していることを行うためのチュートリアルについては、このリンクを参照してください:https : //www.raspberrypi.org/forums/viewtopic.php?t=72435

トランスコーディングに興味がある場合は、興味があるかもしれない別の質問への回答を投稿しまし た。ハードウェアH264エンコーディングからどのくらいの速度が期待できますか?


ありがとう!現在、これをテストすることはできませんが、チュートリアルに基づいて事前に受け入れます。
Szabolcs

1

ffmpegを自分でコンパイルすると、RPi3B +で次のようになります。

1920 X 1080 JPEG画像シーケンスからの高複雑度30 FPSビデオのエンコード–重要な動きとフレーム内詳細–高品質設定:

ソフトウェアベースのH.264エンコーディング(CPU):2.6 FPS(リアルタイムより11.5倍遅い)

ハードウェアベースのH.264エンコーディング(GPU):6.3 FPS(リアルタイムより4.8倍遅い)

640 X 480 JPEG画像シーケンスから高複雑度30 FPSビデオをエンコード–重要な動きとフレーム内の詳細–高品質設定:

ソフトウェアベースのH.264エンコーディング(CPU):18 FPS(リアルタイムより1.7倍遅い)

ハードウェアベースのH.264エンコーディング(GPU):38 FPS(リアルタイムより1.3倍高速)

これらすべてを実現するためのスクリプトは、フォーラムスレッドにあります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.