본문 바로가기

IT/리눅스

다양한 포맷의 동영상 파일을 mpegts, udp multicast로 송출하기(mp4, mov, mpegts..)

반응형

멀티캐스트로 동영상 파일을 송출할 수 있는 프로그램에는 여러 가지가 있습니다. 이러한 프로그램은 대체로 네트워크를 통해 비디오 콘텐츠를 여러 수신자에게 동시에 전송하는 데 사용됩니다. 
다음은 멀티캐스트 송출을 지원하는 프로그램의 몇가지 예 입니다. (이외에도 많이 있지만..)

(1) VLC Media Player

VLC는 무료이며 오픈 소스 멀티미디어 플레이어이자 프레임워크로, 다양한 멀티미디어 파일 포맷, 디스크, 네트워크 스트리밍 프로토콜을 지원합니다. VLC를 사용하면 비디오 파일을 멀티캐스트로 송출할 수 있습니다.

(2) FFmpeg

FFmpeg는 오디오 및 비디오 레코딩, 변환 및 스트리밍을 위한 무료 소프트웨어입니다. 복잡한 커맨드 라인 도구이지만, 강력한 스트리밍 기능을 제공하며, 사용자가 멀티캐스트 스트리밍을 설정할 수 있습니다.

(3) GStreamer

GStreamer는 미디어 애플리케이션을 만들기 위한 강력한 프레임워크입니다. 다양한 미디어 처리 컴포넌트를 제공하며, 멀티캐스트 스트리밍을 설정할 수 있는 기능도 포함하고 있습니다.

여기서는 위 프로그램 중 미디어를 다루는데 가장 많이 사용되는 ffmpeg을 이용한 udp 멀티캐스트 송출을 소개 하겠습니다. 

 

1. FFmpeg을 이용한 멀티캐스트 스트리밍 

명령어

ffmpeg -re -i input.mp4 -c:v copy -c:a copy -f mpegts udp://239.0.0.1:1234?pkt_size=1316

 


-re 옵션은 파일을 원본 속도로 읽어 들여 실시간 스트리밍 효과를 내도록 합니다. 비디오를 빠르게 송출하지 않고 실제 재생 시간에 맞춰 스트리밍합니다.


-i input.mp4는 입력 파일로 input.mp4를 사용하겠다는 것을 의미합니다. 실제 경로에 있는 파일 이름으로 변경해야 합니다.


-c:v copy와 -c:a copy는 비디오와 오디오 코덱을 변환하지 않고 원본 데이터를 그대로 복사하겠다는 의미입니다. 이렇게 하면 변환에 따른 지연이나 품질 저하 없이 소스를 전송할 수 있습니다.
-f mpegts는 출력 포맷을 MPEG-TS (MPEG Transport Stream)로 지정합니다. 이 포맷은 네트워크를 통한 비디오 스트리밍에 적합합니다.


udp://239.0.0.1:1234?pkt_size=1316는 스트리밍할 멀티캐스트 주소와 포트를 지정합니다. 239.0.0.1은 예제 멀티캐스트 주소이며, 1234는 포트 번호입니다. pkt_size=1316은 네트워크 오버헤드를 최소화하기 위해 패킷 크기를 조정합니다.
이 커맨드는 FFmpeg를 사용하여 MP4 파일을 지정된 멀티캐스트 주소로 스트리밍합니다. 

 

2. FFmpeg를 사용하여 파일을 무한 반복 송출하기

시험을 위해서 파일을 계속 반복 해서 송출 하는 방법 입니다. 

 

ffmpeg -stream_loop -1 -i input.mp4 -c:v copy -c:a copy -f mpegts udp://239.0.0.1:1234?pkt_size=1316

-stream_loop -1는 입력 파일을 무한히 반복하여 송출하겠다는 것을 의미합니다. 
-1 대신 다른 정수를 사용하면 그 수만큼 반복한 후 중지합니다.

파일 송출이 반복되는 동안에는 비디오의 시작과 끝 부분에서 짧은 중단이나 끊김이 발생할 수 있습니다. 

 

 

3. VLC를 이용하여 스트림 수신 하기 

 

제대로 송출되는지 확인하기 위해서는 수신을 해봐야 합니다.

VLC를 이용하여 수신해보도록 하겠습니다. 

 

네트워크 스트림 열기를 선택하고 ffmpeg에서 지정한 주소를 입력합니다. 

VLC에서 주소 입력 규칙이 있으니 @도 잊지 마세요~

 

 

이후 재생을 하면 잘 나오는걸 확인 할 수 있습니다.

반응형