2015-01-13 5 views
5

ffmpeg의 UDP 프로토콜은 무엇입니까? 여기ffmpeg의 UDP 프로토콜은 무엇입니까?

는 RTP와 UDP 비슷한 프로토콜 또는 UDP 패킷이 나는 -f segement 옵션을 사용하여 생성 할 수 있습니다 동일한 파일을 포함하는 스트림 또 다른 question

ffmpeg -i udp://localhost:1234 -vcodec copy output.mp4 
Or try: 

ffmpeg -i rtp://localhost:1234 -vcodec copy output.mp4 

에서 예입니다?

답변

0

사용자 데이터 그램 프로토콜.

UDP URL에 필요한 구문은 다음과 같습니다

udp://hostname:port[?options] 

옵션의 형식은 키 = 발의 & 단락 지어진 옵션의 목록이 포함되어 있습니다.

시스템에서 스레딩이 활성화 된 경우 순환 버퍼가 들어오는 데이터를 저장하는 데 사용되므로 UDP 소켓 버퍼 오버런으로 인한 데이터 손실을 줄일 수 있습니다. fifo_size 및 overrun_nonfatal 옵션은이 버퍼와 관련이 있습니다.

지원되는 옵션 목록은 다음과 같습니다.

ffmpeg -i input -f mpegts udp://hostname:port?pkt_size=188&buffer_size=65535 

: 큰 입력 버퍼를 이용하여, 188 개 크기의 UDP 패킷을 사용하여 UDP 위에 MPEGTS 형식으로 스트리밍

ffmpeg -i input -f format udp://hostname:port 

사용 FFmpeg은 : 원격 엔드 포인트에 UDP를 통해 스트리밍

용도는 FFmpeg ffmpeg를 사용하여 원격 끝점에서 UDP를 통해 수신 :

ffmpeg -i udp://[multicast-address]:port ... 

남자 지휘관의 팁!

+2

https://www.ffmpeg.org/ffmpeg-protocols.html#udp와 매우 흡사합니다. 요청하기 전에 읽었습니다. 그것은 프로토콜과 내부 내용을 설명하지 않습니다. – Artem

2

ffmpeg는 UDP 포트를 수신하고 해당 포트에서 데이터를 수신 할 수 있습니다. UDP로 캡슐화 된 RTP 패킷을 보내는 카메라의 데이터 일 수 있습니다. 그래서 카메라를 보낸 사람으로 상상해보십시오. 포트에있는 패킷과 패킷을 동일한 포트에서 수신하고 처리하는 ffmpeg로 패킷을 보냅니다. 그들은 단지 데이터 입력이며 - F 옵션은 입력이 UDP 포트 또는 당신을 위해 영화에서이다 상관없이 당신이

ffmpeg -i movie.mp4 -c copy -f flv a.flv

을하거나는 FFmpeg의 DNT의 문제에 관해서는,

ffmpeg -i udp://localhost:1234 -c copy -f flv a.flv 

을 할 수있는 동일, 다만이다 입력

+1

실제로 UDP와 같은 예제를 발견했습니다. 하지만 프로토콜을 설명하는 참조를 찾을 수 없습니다. – Artem

+0

예, ffmpeg 용으로 특별히 제작 된 것이 아닙니다. UDP는 Windows 운영 체제에서도 사용되는 프로토콜로 linux, max os 등의 유틸리티는이 프로토콜을 사용하여 데이터를 전송합니다. –

3

분명히 그것은 RTSP입니다. 소스에 libavformat/rtsp.clibavformat/udp.c을 참조하십시오.

1

udp : //는 ffmpeg에서 중간 프로토콜없이 UDP 네트워크 패킷으로 직접/비디오 콘텐츠 (예 : H.264)를 스트리밍/파싱한다는 것을 의미합니다.

rtp : // 반면에 비디오/오디오 콘텐츠가 RTP 패킷으로 캡슐화되고 RTP 패킷이 차례로 UDP 패킷으로 캡슐화되는 캡슐화 수준을 추가합니다.

RTP는 타임 스탬프 및 시퀀싱 정보를 포함하므로 미디어 스트리밍에 훨씬 적합합니다. 원시 UDP 패킷에는 정보가 부족하여 순서가 틀리거나 패킷이 끊어지기 쉽기 때문에 비디오/오디오 아티팩트가 발생합니다.

관련 문제