FFmpeg / LibAV에서 RTSP / UDP 버퍼 크기 설정

세르지오 바 수르 코

참고 : ffmpeg와 libav는 서로 다른 라이브러리 라는 것을 알고 있습니다. 이것은 둘 다에 공통적 인 문제입니다.

면책 조항 : 답변 된 것으로 표시된 SO 질문의 중복은 실제로 적절한 솔루션을 제공하지 않았습니다.


UDP 버퍼 크기가 충분하지 않으면 여러 고해상도 비디오 스트림에 대해 끊어진 스트림이 발생합니다. LibAV / FFMPEG에서는 일부 옵션 (buffer_size)추가하여 udp URL (udp : // ...)에 대한 udp 버퍼 크기를 설정할 수 있습니다.

그러나 RTSP URL의 경우 지원되지 않습니다 .

내가 찾은 유일한 해결책은 다음과 같습니다.

  • udp.c 소스 파일 에서 UDP_MAX_PKT_SIZE를 변경하여 ffmpeg / libav를 다시 빌드 합니다.
  • 불쾌한 해킹사용하여 일부 개인 구조체를 캐스팅하여 필요한 값을 찾고 수정합니다.
  • 다른 디코딩 라이브러리 사용 (앞서 언급 한 관련 SO 질문에 대한 솔루션 제안 ).

이들 중 어느 것도 실제로 해결책이 아닙니다. 내가 찾은 것에서 API를 사용 AVOptions하여이 값을 찾고 설정할 수 있어야합니다 . 또는 AVDictionary .

libav 또는 ffmpeg 문서 전체에서이를 설정하는 방법을 찾는 것은 매우 어렵습니다.

최신 정보:

Libav 개발자 @lu_zero 덕분에 다음 패치가이 주제를 다루고있는 Libav에 제출되었습니다 .

이를 구현하는 방법에 대한 힌트를 제공해야하지만 아직 공식 안정적인 API를 통해 사용할 수 없습니다.

lu_zero

이후 커밋 통과하기에 충분 buffer_size옵션으로 그리고이 전달됩니다 udp관통 프로토콜 rtp프로토콜입니다.

테스트했고 의도 한대로 작동합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

수신 버퍼의 Linux UDP 최대 크기

Linux에서 런타임시 UDP 수신 버퍼 크기 지정

Java DatagramPacket (UDP) 최대 전송 / 수신 버퍼 크기

golang은 udp 소켓 버퍼 크기를 얻습니다.

ffmpeg에서 오버레이 이미지 크기를 조정하는 방법

파이썬에서 소켓에 대한 전송 버퍼 크기를 설정하는 방법

AWS RDS에서 호스팅되는 Postgresql에서 공유 버퍼 크기 조정

힙에 할당 된 버퍼의 크기 결정

FFMPEG로 RTSP 스트림에서 저장된 비디오의 시작 시간을 설정하는 방법

Vulkan에서 정점 버퍼 동기화?

Neovim / Vim : 버퍼 유형에 따라 창 크기 조정

c에서 버퍼 할당을위한 파일 크기 결정

rpc 호출의 버퍼 크기 설정

GZipStream에서 버퍼 크기 설정

GZipStream에서 버퍼 크기 설정

Node.js에서 최대 버퍼 크기를 설정하는 방법은 무엇입니까?

PHP에서 수정 된 Torrent 편집 기용 UDP 스크래퍼

GStreamer-Java : RTSP- 소스에서 UDP- 싱크로

FFmpeg에서 크기 조정

HttpWebRequest GetResponseStream에서 버퍼 크기 선택 정보

ShadowPlay와 같은 ffmpeg에서 오디오 버퍼의 크기 제한

gnu 정렬-기본 버퍼 크기

FFmpeg RTSP 충돌

rtsp 스트리밍에서 동기화를 위해 병렬로 ffmpeg 실행

Linux에서 파일 읽기를위한 최적의 버퍼 크기 결정

muxing 문서 예제를 사용하는 FFMPEG RTSP 서버

ALSA에서 기간 및 버퍼 크기를 설정하는 방법은 무엇입니까?

ffmpeg 코드를 사용하는 RTSP 서버에 잘못된 ffmpeg 버전이 있습니까?

mPDF에서 writeHTML() 버퍼 재설정

TOP 리스트

뜨겁다태그

보관