Raspberry Pi で ffmpeg を使用して RTSP からビデオを取得する: 「-t コマンドが見つかりません」

Raspberry Pi で ffmpeg を使用して RTSP からビデオを取得する: 「-t コマンドが見つかりません」

私は、Raspberry Pi ffmpeg を使用して RTSP ストリームから 30 秒のビデオを取得するという、単純なことを試しています。コマンドは次のようになります。

ffmpeg -i <rtsp:...> -t 30 <output>

RTSP 文字列が長くなります (70 ~ 80 文字程度)。常に次のエラーで失敗します:

[1] 5436
bash: -t command not found

これは ffmpeg の問題ですか、それとも Raspberry Pi の設定の問題ですか?

引数の長さの制限について調べてみましたが、何も見つかりませんでした。

答え1

ストリーム URL に文字が含まれている可能性があります。これは bash の特殊文字であり、コマンドを区切るため、&コマンド ラインでは でエスケープする必要があります。\

ffmpeg -i rtsp://host/path?param1=\&param2= -t 30 

.に注意してください\&。アンパサンドでない場合は、他の特殊文字になります。

または、URL を二重引用符で囲んで完了します。

ffmpeg -i "rtsp://host/path?param1=&param2=" -t 30 

このエラーが発生する理由:

bash: -t command not found

なぜなら、URL のどこかにアンパサンドがあると仮定すると、bash は (基本的に) 2 つのコマンドを実行しようとするからです。つまり、次のような場合です (URL から妥当な推測をしています)。

ffmpeg -i rtsp://example.com?x=0&y=0 -t 30

Bash は実行を試みます:

  1.  ffmpeg -i rtsp://example.com?x=0
    
  2.  y=0 -t 30
    

2 番目は「環境変数を設定してy、1 つのパラメータで0コマンドを実行する」と解析され、実際のコマンドではありません。そのため、エラーが発生します。-t30-t

私の推測なので、あなたの状況はまさにそれではないかもしれませんが、それが一般的な考え方です。

bash の動作の詳細はこの回答の範囲外であり、簡潔にするために省略されています。


これは ffmpeg の問題ですか、それとも Raspberry Pi の設定の問題ですか?

引数の長さの制限について調べてみましたが、何も見つかりませんでした。

ちなみに、引数の長さの制限はここでは問題ではありません。:)非常に大きいまた、カーネルにハードコードされているため、ユーザーが設定できるオプションはありません。

関連情報