Wireshark를 사용하여 .pcap 파일에 비디오 호출을 저장 했으므로 RTP 패킷에서 비디오를 가져 오려고합니다. RTP 패킷 페이로드 유형이 vp8인데 C++에서 libpcap 라이브러리를 사용하여 vp8 RTP 패킷을 찾을 수있었습니다. 그런 다음 모든 RTP vp8 패킷의 내용을 파일에 저장했습니다. 그러나 나는 ffmpeg를 사용하여이 원시 vp8 데이터를 .mp4로 변환 할 수 없습니다. ffmpeg는 변환 중 오류를 발생시킵니다. 는 FFmpeg 변환 오류 : 잘못된 데이터가 발견RTP vp8 페이로드 패킷을 .webm 파일에 저장
VP8의 RTP 패킷으로부터 .MP4 또는 .webm 비디오 파일을 얻는 단계는 무엇 입력을 처리 할 때?
편집 : VP8 페이로드 설명자, 페이로드 헤더 및 키 프레임 헤더를 제외한 원시 VP8 데이터를 얻을 수있었습니다. 그럼 난 IVF 문서에 따르면, 각 VP8 원시 프레임 IVF 헤더와 프레임 헤더를 추가 IVF Document
하지만 FFmpeg에
는 FFmpeg -i를 사용하여 output1.mp4 내 IVF 파일 (출력 1)을 변환 할 때 출력 1 -c : V VP8의 output1.mp4
나는 오류가
"그렇다면 모든 RTP vp8 패킷의 내용을 파일에 저장했습니다." - 패킷 경계를 유지 했습니까? 나는. 그것은 단지 바이너리 연결된 가비지 아니면 각 패킷 여전히 유효한 타임 스탬프 등 개별 VP8 프레임입니까? –
VP8을 포함한 모든 RTP 패킷을 얻습니다. 그런 다음이 패킷에서 RTP 헤더를 추출하고 RTP 페이로드 데이터를 저장했습니다. 내가 저장 한 데이터는 연결 된 RTP 페이로드입니다. 아마도 원시 데이터에서 비디오를 얻고 싶을 것입니다. 아마, 먼저 각 프레임의 경계를 찾아서 각 프레임에 헤더를 추가하여 vp8 형식으로 재생할 수 있어야합니다. S 비트와 부품 ID를 사용하여 vp8 페이로드 헤더를 추출 할 수있었습니다. 그래서 각 프레임의 경계를 올바르게 찾을 수 있다고 생각합니다. – Ibrahim