パッケージ化されていないビデオの再生中にffplayオーバーレイ現在のタイムスタンプ


0

生のH.265ビデオを再生しながら現在のタイムスタンプのオーバーレイを作成しようとしています。 ffplay 使う drawtext フィルタ。

現在のフレーム番号のオーバーレイは次のようにしてうまく機能します。

ffplay -vf "drawtext=fontfile=/Library/Fonts/Microsoft/Arial.ttf: text='%{n}':box=1:x=(w-tw)/2:y=h-(2*lh)" video.265

で説明されているように現在のタイムスタンプを表示できません この郵便受け 使う text='%{pts\:hms}'。このレンダリングされた出力を使用すると、次のようになります。

screenshot

生のH.265ファイルにはタイミング情報がないことを私は理解しているので、これがおそらく私が使用できない理由です。 pts\:hms

私の質問は、のように現在のフレーム番号を使用することは可能ですか? text='%{n}' しかしそれを次のようなフレームレートで割る text='%{n/24}'?残念ながら text='%{n/24}' 許可されていない text='%{n}/24' また動作しません:

screenshot2

情報だけ。生のビデオをmp4ファイルにパッケージ化しました ffmpeg -i video.265 -c:v copy video.mp4 それから上記の投稿からのコマンドはちょうどうまくいきます。しかし、drawtextフィルタの内部で何らかの計算を行うことが可能かどうかは私はまだ興味がありません。

回答:


1

あなたが使用する必要があります eif 関数

ffplay -vf \
       "drawtext=fontfile=/Library/Fonts/Microsoft/Arial.ttf: \
        text='%{eif\:trunc(n/3600/24)\:d\:2}\:%{eif\:trunc(n/60/24)\:d\:2}\:%{eif\:trunc(mod(n*24\,60))\:d\:2}: \
        box=1:x=(w-tw)/2:y=h-(2*lh)" \
video.265

これはHH:MM:SS出力を生成し、24 fpsのビデオストリームを期待します。


うまくいく n の代わりに t。使う t 次のようなエラーがあります。exprテキスト展開関数の式 'trunc(t / 60)'が無効です
incBrain

生ストリームの場合、 t 割り当ても計算もされていません。コマンドを更新しました。
Gyan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.