現在、VP8 と V4L2 を使用してビデオ ストリーミング ソフトウェアを開発していますが、フレーム レーティングの重要な概念に苦労しています。
フレームをループでフェッチし、エンコードしてRTP経由で送信する基本的な実装があります(可能な限り高速です)。しかし、ビデオのフレームレートを制御したり、サンプリングを調整したりする方法がわかりません。
基本的には次のように要約できます。
while (true) {
ioctl(fd, VIDIOC_DQBUF, buf); // Get the V4L buffer
vpx_codec_encode(...); // VP8 encode using pts and timebase
sendto(); // Send through RTP with the correct timestamp
}
特に、適切に設定する方法がわかりません:
- V4L2 キャプチャ ループ (定期的にフレームを取得するためにタイマーが必要ですか?)
- V4L2 からの FRAME INTERVAL 設定 (必須ですか?)
- libvpx タイムベース (1/fps ? 1001/30000 を使用する必要がありますか?)
- ポイント値 (フレーム数 * (1/fps) * 90000 である必要がありますか?)
- RTP タイムスタンプ (ここで pts を使用できますか?)
- 考慮できるその他の構成設定...