ffmpeg으로 시험환경을 구성하면서 udp 송출은 간단하게 구현이 되기 때문에 rtsp도 똑 같이 실행해보려고 했습니다.
아래는 udp 송출 예시 입니다.
https://yongeekd01.tistory.com/164
비슷한 방법으로 아래와 같이 명령어를 주고 수행을 했더니 에러가 발생합니다.
ffmpeg -stream_loop -1 -re -i "data/test.ts" -c:v copy -c:a copy -f rtsp rtsp://localhost:8554/test_stream
Connection to tcp://localhost:8554?timeout=0 failed: Connection refused
Could not write header for output file #0 (incorrect codec parameters ?): Connection refused
ffmpeg으로 rtsp를 송출하는데 있어서는 ffmpeg 자체 기능만 가지고는 안되고 rtsp 서버가 필요합니다.
1. RTSPSimpleServer
RTSPSimpleServer는 RTSP (Real-Time Streaming Protocol) 서버 소프트웨어로, RTSP 스트림을 간단하게 설정하고 관리할 수 있도록 설계된 도구입니다. 이 서버는 주로 실시간 비디오 및 오디오 스트리밍 애플리케이션에서 사용됩니다.
* 주요 특징
(1) RTSPSimpleServer는 매우 간단하게 설치하고 설정할 수 있습니다.
기본 설정 파일을 제공하며, 복잡한 설정 없이 바로 사용할 수 있습니다.
(2) 다양한 포맷의 비디오 및 오디오 스트림을 지원하여 RTSP 클라이언트와의 호환성이 뛰어나며, 여러 스트림을 동시에 처리할 수 있습니다.
(3) 시스템 리소스를 적게 사용하여 효율적으로 동작합니다. 이는 고성능 스트리밍 서버가 필요한 경우에도 적합합니다.
(4) GitHub에서 소스 코드를 제공하며, 커뮤니티의 기여와 피드백을 통해 지속적으로 개선되고 있습니다.
https://github.com/bluenviron/mediamtx
2. RTSPSimplerServer 설치 및 실행
다음 페이지에서 다운로드 버전을 확인합니다.
https://github.com/bluenviron/mediamtx/releases
저는 아래 버전을 사용했습니다.
mediamtx_v1.8.4_linux_amd64.tar.gz
파일을 다운로드 받고 압축을 풀어주세요
wget https://github.com/bluenviron/mediamtx/releases/download/v1.8.4/mediamtx_v1.8.4_linux_amd64.tar.gz
tar xvzf mediamtx_v1.8.4_linux_amd64.tar.gz
서버를 실행합니다.
./mediamtx
3. ffmpeg 으로 rtsp 스트리밍 하기
다시 명령어를 수행해 보겠습니다.
ffmpeg -stream_loop -1 -re -i "data/test.ts" -c:v copy -c:a copy -f rtsp rtsp://localhost:8554/test_stream
어? 에러가 나는군요
Could not write header for output file #0 (incorrect codec parameters ?): Server returned 400 Bad Request
서버쪽에서 찍힌 에러를 보니 SDP 파일에 문제가 있다고 나옵니다.
2024/07/12 14:49:19 INF [RTSP] [conn 127.0.0.1:48808] closed: invalid SDP: media 2 is invalid: clock rate not found
2024/07/12 14:49:19 INF [RTSP] [session 85894030] destroyed: not in use
ffmpeg에서 SDP 오류는 코덱을 명시적으로 지정하지 않는 경우에 발생할 수 있습니다.
비디오 오디오 코덱을 지정하고 다시 실행해 보겠습니다.
ffmpeg -stream_loop -1 -re -i "data/test.ts" -c:v libx264 -c:a aac -f rtsp rtsp://localhost:8554/test_stream
정상적으로 실행이 되었습니다.
4. 클라이언트에서 확인하기
vlc 로 접속 해서 확인해 볼까요?? 네트워크 스트림 열기로 ffmpeg 을 실행한 주소를 접속합니다. rtsp://192.168.10.219:8554/test_stream
정상 적으로 rtsp 스트림이 송출되고 있는 것을 확인할 수 있습니다.
다음은 참고
https://yongeekd01.tistory.com/199
'IT > 리눅스' 카테고리의 다른 글
wget 명령어의 모든것(HTTP, HTTPS, FTP 지원, 복수파일, 폴더전체, 이어받기 등등) (0) | 2024.07.24 |
---|---|
ffmpeg 송출 에러 av_interleaved_write_frame(): Broken pipe 해결 (0) | 2024.07.12 |
Ubuntu에서 방화벽 설정하기(우분투 ufw, IP범위, 포트범위) (0) | 2024.06.05 |
파일 시스템이란? NTFS와 exFAT 특징과 차이점 (0) | 2024.04.17 |
rocky linux docker 시간 설정 변경(timezone, timedatectl) (0) | 2024.04.03 |