2017-05-03 13 views
0

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

나는 오류가

+0

"그렇다면 모든 RTP vp8 패킷의 내용을 파일에 저장했습니다." - 패킷 경계를 유지 했습니까? 나는. 그것은 단지 바이너리 연결된 가비지 아니면 각 패킷 여전히 유효한 타임 스탬프 등 개별 VP8 프레임입니까? –

+0

VP8을 포함한 모든 RTP 패킷을 얻습니다. 그런 다음이 패킷에서 RTP 헤더를 추출하고 RTP 페이로드 데이터를 저장했습니다. 내가 저장 한 데이터는 연결 된 RTP 페이로드입니다. 아마도 원시 데이터에서 비디오를 얻고 싶을 것입니다. 아마, 먼저 각 프레임의 경계를 찾아서 각 프레임에 헤더를 추가하여 vp8 형식으로 재생할 수 있어야합니다. S 비트와 부품 ID를 사용하여 vp8 페이로드 헤더를 추출 할 수있었습니다. 그래서 각 프레임의 경계를 올바르게 찾을 수 있다고 생각합니다. – Ibrahim

답변

1

JanusGateway

convertion error RTP를 변환하는 기능을 가지고있다 취득 (VP8/VP9/H264/작품) ~ (webm/mp4). RTP를 해당 컨테이너 (webm/mp4/opus)로 인코딩하므로 트랜스 코더가 포함되지 않습니다.

ffmpeg을 사용하면 다른 형식으로 코드 변환 할 수 있습니다.

요약하면 janus는 각 패킷에 접두사 헤더를 추가하여 파일에 store RTP 패킷을 만듭니다. 그런 다음 포스트 프로세서를 사용하여 vp8 RTP 패킷을 webm으로 변환 할 수 있습니다.

https://github.com/meetecho/janus-gateway/blob/master/postprocessing/pp-webm.c

당신은 라이브 demo & Documentation을 볼 수 있습니다.

+0

.VP8 페이로드 설명자, 헤더 및 키 프레임 헤더를 제외하고 원시 VP8 데이터를 얻을 수있었습니다. 그런 다음 ivf 문서에 따라 각 vp8 원시 프레임에 대해 ivf 헤더 및 프레임 헤더를 추가했습니다. https://wiki.multimedia.cx/index.php/IVF 하지만 는 FFmpeg을 FFmpeg를 사용하여 output1.mp4 내 IVF 파일 (출력 1)을 변환 할 때 -i 출력 1 -c : V VP8 출력 1. mp4 오류가 발생합니다. 잘못된 동기 코드 48c11d.스트림 0에서 코덱 vp8에 대한 태그를 찾을 수 없습니다. 현재 컨테이너에서 지원되지 않는 코덱입니다. 출력 파일 # 0에 대한 헤더를 쓸 수 없습니다 (잘못된 코덱 매개 변수 – Ibrahim

+0

) 각 vp8에 추가해야하는 접두어 헤더의 세부 정보에 대해 누구나 정보를 제공 할 수 있습니다 프레임? – Ibrahim

+0

wireshark pcap에서 RTP (VP8 패킷)을 webm으로 변환 할 수 있습니까? JanusGatway는 IVF 헤더를 사용합니까? –