2012-08-17 2 views
1

이미 압축 된 (h264) 이미지 데이터를 MPEG-4 비디오 파일에 쓰려고합니다. 이 코드는 임베디드 플랫폼에서 실행되도록 최적화되어야하므로 코드는 가능한 단순해야합니다. 최고 헤더 정보 (높이 너비 형식 fourcc 등)와 파일 이름 및 압축 된 데이터를 제공하고이를 데이터 청크로 변환하고 해당 파일에 기록해야합니다. 압축 된 프레임을 mpeg4 chuncks에 쓰십시오. C++


  • 이 메인 헤더가 있습니까 (여기서 정확히 어떤 일이 일어나는지)

    • MPEG-4 헤더 정보 또는 각 데이터는
    • 을 chunck만을위한 헤더가 있습니다 :

      는 그래서 난이 중 하나를 필요

    • 단일 비디오 스트림에 필요한 헤더 정보 (직사각형)
    • 오디오 추가에 필요한 헤더 정보
  • 압축 자체를 할 필요가 없으며 오디오 프레임을 추가 할 수있는 간단한 MPEG-4 파일 작성기입니다. (c/C++)
+0

FFMPEG 라이브러리를 사용하여 비디오 파일을 작성하는 방법을 보여주는이 링크를 확인하십시오. https://stackoverflow.com/a/43464269/6180077 –

답변

1

.MP4 파일 형식은 MPEG-4 Part 14 사양에 설명되어 있습니다. 주요 헤더 및 부제목 일뿐만 아니라 특정 계층 구조와 소위 상자가 있습니다. 미디어 재단을 통해 윈도우에서 GDCL MP4 Multiplexer 또는 다수의 상업 유사한 제품

  • -related Q 및 DirectShow를 API를 통해 윈도우에서
  • related code link을 -

    • FFmpeg (위해 libavcodec, libavformat) : 당신의 선택 중 일부는 .MP4 파일에 데이터를 기록하는 API - MPEG-4 File Sink
  • +0

    @ Roman R. ffmpeg를 작동 시키려고 많은 시간을 낭비한 후에 GDCL의 muxer를 살펴보기 시작했습니다. 컴파일 할 DLL을 얻었으므로 디버깅 할 수 있어야하지만 어디서부터 시작해야할지 모르겠습니다. 아마도이 멀티플렉서를 사용하기 위해 몇 가지 예제 코드를 보내 주시겠습니까? GDCL 사이트를 사용해 보았지만 링크 된 사이트를 제외하고는 아래에있는 것 같습니다. –

    +0

    http://www.gdcl.co.uk/mpeg4/이 (가) 다시 살아납니다. 이 MP4 멀티플렉서를 사용하려면,이 컴포넌트와 다른 컴포넌트로 그래프를 생성하고 실행해야하기 때문에 처음부터 DirectShow를 시작하는 것이 그리 쉽지 않을 수 있습니다. 그래프에 자신의 덩어리를 삽입하려면이 데이터를 전달하는 사용자 정의 필터가 필요합니다. 로켓 과학은 아니지만 API에 대한 특정 이해를 전제로합니다. 나는 그것이 임베디드 시스템에 권장 될지 모르지만 ffmpeg 스트로크를 남겨둔다. –

    +0

    기본적으로 H.264 청크를 보내려면 사용자 지정 원본 필터를 만듭니다. 그런 다음 표준 파일 라이터 구성 요소에 연결된 MP4 멀티플렉서에 연결해야합니다. 모두 함께 시작되면 .MP4 파일에 데이터가 기록됩니다. 오디오를 추가하려면 오디오 용 다른 소스 필터 (일반적으로 AAC)가 필요하며 멀티플렉서는이 모든 것을 결과 싱글 mp4에 넣기 위해 또 다른 입력을가집니다. –