5

今私の方法は次のとおりです。

libvlc_video_set_callbacks //set the lock,unlock,display callback functions
libvlc_media_player_set_position //goto the snap time
libvlc_media_player_play  //start playing

次に、ロック解除コールバック関数で呼び出し'libvlc_media_player_stop'て再生を停止し、表示コールバック関数によってプロバイダーのデータを保存します。

この方法は何度か成功しましたが、プログラム全体がクラッシュする回数が増えました。libvlc少しばかげているように見えますが、インクルード ファイルにフレームごとの制御関数が見つかりません。

4

1 に答える 1

5

実際、libvlcストリームを処理する方法ではないため、フレームごとの処理は非常に貧弱です。したがって、フレーム単位のフレーム (フレームがある場合) は非常にハックであり、かなり醜い場合があります。多くの場合、1 つのフレームを前後に移動するには、2 つのフレーム間の長さを計算し、対応する日時にジャンプします。

ライブラリ内の唯一のフレーム関連の関数は、libvlc_media_player_next_frame条件付きでサポートされているようであり、後でサポートするためにいくつかの開発が行われているlibvlc_media_player_previous_frameようです.

したがって、あなたの方法はおそらく他の方法と同じくらい優れています。別の方法は、時間を必要なミリ秒に設定できるようにする場合libvlc_media_player_set_positionに置き換えることです。libvlc_media_player_set_timeさらに別の方法は、スナップする前に再生を遅くすることです。ただし、これらの方法はどれも実際には効率的ではありませんが、そうするためのよりクリーンな方法はないようです。

于 2013-04-26T07:19:05.477 に答える