저는 간단한 작업을 시도하고 있습니다. 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에 문자 가 있을 수 있습니다 . 명령줄에서는 a로 이스케이프 처리해야 합니다 \
. 이는 bash의 특수 문자이고 명령을 구분하기 때문입니다.
ffmpeg -i rtsp://host/path?param1=\¶m2= -t 30
. \&
앰퍼샌드가 아닌 경우 다른 특수 문자입니다.
아니면 URL을 큰따옴표로 묶어서 작업을 완료하세요.
ffmpeg -i "rtsp://host/path?param1=¶m2=" -t 30
이 오류가 발생하는 이유:
bash: -t command not found
URL 어딘가에 앰퍼샌드가 있다고 가정하면 bash는 (본질적으로) 두 개의 명령을 실행하려고 시도하기 때문입니다. 따라서 다음과 같은 경우(귀하의 URL을 합리적으로 추측하고 있습니다):
ffmpeg -i rtsp://example.com?x=0&y=0 -t 30
Bash는 다음을 실행하려고 합니다.
-
ffmpeg -i rtsp://example.com?x=0
-
y=0 -t 30
두 번째 명령은 "환경 변수를 설정한 다음 하나의 매개 변수로 명령을 실행합니다"로 구문 분석되며 y
실제 명령 0
이 아닙니다 . 따라서 오류가 발생합니다.-t
30
-t
내가 추측하기 때문에 귀하의 상황은 정확히 그렇지 않을 수도 있지만 그것이 일반적인 생각입니다.
bash의 동작에 대한 세부 사항은 이 답변의 범위를 벗어나며 일반적으로 간결성을 위해 건너뛰었습니다.
ffmpeg 문제입니까 아니면 Raspberry Pi 구성 문제입니까?
인수 길이 제한을 조사하려고 시도했지만 비어 있었습니다.
그런데 여기서 인수 길이 제한은 문제가 되지 않습니다. :) 그것은매우 큰. 또한 커널에 하드 코딩되어 있으므로 이에 대한 사용자 구성 옵션이 없습니다.