2017-11-22 24 views
1

우리는 AAC로 인코딩 된 오디오 용 컨테이너 인 m4a 오디오 파일을 가지고 있습니다 (컨테이너 스트림은 mpeg-4, 오디오 스트림은 AAC).조각이없는 경우 m4a/aac 오디오 파일을 재생하는 방법은 무엇입니까?

우리는 2 개의 시스템 사이에서이 파일을 조각으로 전송합니다 (크기 제한없이 무작위로 분리하여 전송합니다).

조각이 전송되지 않으면 어떻게 조각을 다시 구성하여 적어도 일부는 재생할 수 있습니까?

내가 지금까지 발견 한 것은 내가 파일을 해체하고 보내면 모든 곡 (물론)을 가지고 있다면 다시 구성 할 수 있지만, 곡을 남기면 오디오 도구로 인식 할 수 없다는 것입니다. 또는 그것을 재생할 수 있습니다.

올바른 방법은 무엇입니까? 모든 작품이 필요한 경우 m4a는 스트리밍 가능한 형식입니다.

편집 : 제한된 IoT 장치에 오디오를 녹음하고 나중에 재생할 수 있도록 클라우드에 녹음을 보내고 있음을 명확히하기 위해. 최대 업로드 크기는 128kb입니다. 원본 오디오를 원래 여러 개의 작은 m4a 파일에 저장하고 업로드 할 수는 있지만 각 파일의 모든 메타 데이터가 일부 손실되지는 않았습니까? 30 초의 오디오를 원하지만 30 초의 m4a 파일 대신 10, 3 초의 m4a 파일로 저장하십시오.

+0

UDP를 사용하고 있습니까? TCP를 사용하는 경우 왜 조각이 누락 되었습니까? –

+0

실제로 mqtt를 사용하지만 관련이 없습니다. 인터넷이 중단되어 다시 시도 정책이 실패 할 수 있습니다. LTE 연결 장치는 움직일 수 있습니다. 어쨌든, 조각이 누락 될 수 있습니다. 아니면 적어도 그 문제를 설명하고 싶습니다. – Fraggle

답변

1

MPEG-4 (m4a) 컨테이너에서 AAC 스트림을 추출하고 AAC를 ADTS (오디오 데이터 전송 스트림)에 넣을 수 있습니다. ADTS는 작은 프레임으로 구성되며 각 프레임에는 AAC 오디오 데이터 (MP3 스트림과 유사)가 오는 헤더가 있습니다. ADTS는 자동으로 동기화되며 패킷 손실을 위해 설계되었습니다 (예 : 항공 전송의 경우).

+0

그래, 우리가 클라이언트 쪽에서 할 수 있는지는 잘 모르겠다. 우리에게는 한계가 있습니다. 그러나 나는 조사 할 수있다. 누락 된 조각으로 m4a를 재구성하는 것에 대한 원래의 질문에 대한 대답은 "불가능합니다, 다른 인코딩/컨테이너 형식을 사용하거나 각 조각을 완전한 m4a 파일로 저장"하는 것입니다. – Fraggle

+1

AAC/M4A를 ADTS로 바꾸면 다시 인코딩 할 필요가 없습니다. –

+0

@Fraggle이 클라이언트 측에서 수행하지 않는 작업은 서버 측에서 수행합니다. ADTS 같은 것이 없으면 임의로 스트림을 재조합 할 수 없습니다. – Brad