안녕하세요
코덱쪽은 전혀 처음이라 고생하고 있는 와중에 이 곳 게시판을 발견하고 질문을 드려봅니다..
지금 안드로이드 앱 중에 카메라 preview 를 RTP/H264(FU-A) 로 전송해주는 spydroid 라는 앱으로부터 그 스트림을 받아 재생하는 플레이어를 만들고 있습니다..
제가 지금까지 찾아보고 이해한바로는 앞의 RTP 헤더 12바이트를 떼어내고 그뒤에 FU Header 의 S bit 와 E bit 를 이용해서 FU-A 로 쪼개지기 전의 NAL 로 조립을 하여 복구한 각각의 single nal 들을, 앞에 00 00 00 01 이라는 스타트 비트를 붙여 파일로 저장하면 vlc 등의 플레이어로 재생이 된다는 것인데 저는 vlc 나 기타 코덱 분석기에서 지원하지 않는 코덱이라고만 나옵니다.
FU Indicator 와 FU Header 는 S bit 가 1인 패킷 (한개의 single nal 을 이루는 패킷들의 제일 처음 패킷) 만 유지시켜주고 뒤에 따라오는 패킷들을게서는 다 떼어내야한다고 알고있는데.. 재생이 안되고 있구요 일괄적으로 모두 남기거나 제거해도 마찬가지로 안되네요..
스트림을 만들어내는 spydroid 라는 앱은 sdp 파일을 사용하는데 혹시 sps, pps 라는 설정관련 정보들이 빠져있는걸까요??
sdp 파일의 파라메터들을 해석해서 임의로 sps, pps 패킷을 만들어서 파일 맨앞에 스타트 비트 바로 뒤에 붙여주면 될까요??
현재 패킷을 조립하고 앞에 스타트 비트를 붙이는 과정의 로그는 다음과 같습니다
0~3바이트는 스타트비트이고, 4 와 5바이트가 각각 FU indicator 와 header 입니다..
들어오는대로 뒤에 붙이기때문에 sum up 되기 전까지 모아지고 있는 nal 의 앞부분은 똑같게 나오고 있습니다..
========= the new NAL is as 1400
[0]0/0 [1]0/0 [2]0/0 [3]1/1 [4]7C/1111100 [5]85/10000101 [6]B8/10111000 [7]40/1000000 ...
========= adding the next NAL as 1400
[0]0/0 [1]0/0 [2]0/0 [3]1/1 [4]7C/1111100 [5]85/10000101 [6]B8/10111000 [7]40/1000000 ...
========= adding the next NAL as 1400
[0]0/0 [1]0/0 [2]0/0 [3]1/1 [4]7C/1111100 [5]85/10000101 [6]B8/10111000 [7]40/1000000 ...
========= adding the next NAL as 716
[0]0/0 [1]0/0 [2]0/0 [3]1/1 [4]7C/1111100 [5]85/10000101 [6]B8/10111000 [7]40/1000000 ...
========= a NAL is summed up as 4866
========= the new NAL is as 1400
[0]0/0 [1]0/0 [2]0/0 [3]1/1 [4]5C/1011100 [5]81/10000001 [6]E2/11100010 [7]20/100000 ...
========= adding the next NAL as 1400
[0]0/0 [1]0/0 [2]0/0 [3]1/1 [4]5C/1011100 [5]81/10000001 [6]E2/11100010 [7]20/100000 ...
========= adding the next NAL as 1400
[0]0/0 [1]0/0 [2]0/0 [3]1/1 [4]5C/1011100 [5]81/10000001 [6]E2/11100010 [7]20/100000 ...
========= adding the next NAL as 1400
[0]0/0 [1]0/0 [2]0/0 [3]1/1 [4]5C/1011100 [5]81/10000001 [6]E2/11100010 [7]20/100000 ...
========= adding the next NAL as 1400
[0]0/0 [1]0/0 [2]0/0 [3]1/1 [4]5C/1011100 [5]81/10000001 [6]E2/11100010 [7]20/100000 ...
========= adding the next NAL as 139
[0]0/0 [1]0/0 [2]0/0 [3]1/1 [4]5C/1011100 [5]81/10000001 [6]E2/11100010 [7]20/100000 ...
========= a NAL is summed up as 7061
========= the new NAL is as 1377
[0]0/0 [1]0/0 [2]0/0 [3]1/1 [4]41/1000001 [5]E4/11100100 [6]40/1000000 [7]1A/11010 ...
========= a NAL is summed up as 1369
========= the new NAL is as 1400
[0]0/0 [1]0/0 [2]0/0 [3]1/1 [4]5C/1011100 [5]81/10000001 [6]E6/11100110 [7]60/1100000 ...
========= adding the next NAL as 94
[0]0/0 [1]0/0 [2]0/0 [3]1/1 [4]5C/1011100 [5]81/10000001 [6]E6/11100110 [7]60/1100000 ...
========= a NAL is summed up as 1472
========= the new NAL is as 447
[0]0/0 [1]0/0 [2]0/0 [3]1/1 [4]41/1000001 [5]E8/11101000 [6]80/10000000 [7]16/10110 ...
========= a NAL is summed up as 439
========= the new NAL is as 1400
[0]0/0 [1]0/0 [2]0/0 [3]1/1 [4]5C/1011100 [5]81/10000001 [6]EA/11101010 [7]A0/10100000 ...
========= adding the next NAL as 1174
[0]0/0 [1]0/0 [2]0/0 [3]1/1 [4]5C/1011100 [5]81/10000001 [6]EA/11101010 [7]A0/10100000 ...
========= a NAL is summed up as 2552
========= the new NAL is as 1400
[0]0/0 [1]0/0 [2]0/0 [3]1/1 [4]5C/1011100 [5]81/10000001 [6]EC/11101100 [7]C0/11000000 ...
========= adding the next NAL as 1364
[0]0/0 [1]0/0 [2]0/0 [3]1/1 [4]5C/1011100 [5]81/10000001 [6]EC/11101100 [7]C0/11000000 ...
========= a NAL is summed up as 2742
========= the new NAL is as 1400
...
비슷한 기존 질문/답변으로 힌트를 얻어보려고 노력하고있는데 힘들어서 직접 글을 올려봅니다.
조언 좀 부탁드립니다.
감사합니다 좋은하루되세요.