web-dev-qa-db-ja.com

FFMPEG:元の再生速度でファイルをストリーミング

元のフレームレートで ffmpeg を使用してファイルをネットワークにストリーミングしたい。そのため、生成されたUDPストリームを [〜#〜] vlc [〜#〜] などのレシーバークライアントを使用して再生できます。私はこのコマンドを使用しました:

ffmpeg -i "myfile.mpg" -sameq -re -f mpegts "udp://127.0.0.1:2000"

このコマンドを使用すると、ffmpegは非常に高速でファイルのストリーミングを開始します。約30分の長さのファイルのストリーミングが約40秒後に終了するように。元のレートでファイルを見たいのですが。また、ビデオの速度を制御して、再生速度を速くしたり遅くしたりしたいと思います。これを行うためのオプションはありますか?ありがとうございました。

4
sajad

-reは入力オプションとして使用する必要があります。そうしないと、おそらく無視されます。基本的な構文の一般化は次のとおりです。

ffmpeg [input options] -i input [output options] output

使用禁止 -sameq。詳細な説明については、 sameqは「同じ品質」を意味するものではありません を参照してください。

再エンコードするのではなく、単にストリームをコピーしてみましたか?追加 -map 0 -codec copy出力オプションとして。

ビデオ速度の変更については、setptsマルチメディアフィルターを試すことができます。このフィルターを使用するには、再エンコードする必要があることに注意してください。ドキュメントからの例:

Apply fast motion effect: -filter:v setpts=0.5*PTS
Apply slow motion effect: -filter:v setpts=2.0*PTS

オーディオについては、asetptsまたはatempoフィルターを参照してください。

4
llogan

答えは、オプション-reを使用することです。入力オプション(-iの前)とともに配置する必要があります。

-re(入力)

ネイティブフレームレートで入力を読み取ります。主にグラブデバイスまたはライブ入力ストリームをシミュレートするために使用されます(ファイルから読み取る場合など)。実際のグラブデバイスまたはライブ入力ストリーム(パケット損失を引き起こす可能性がある場合)では使用しないでください。デフォルトでは、ffmpegは入力をできるだけ速く読み取ろうとします。このオプションは、入力の読み取りを遅くして、入力のネイティブフレームレートにします。リアルタイム出力(ライブストリーミングなど)に役立ちます。

3