Zettelkasten

스트림 복사는 디코딩·재인코딩을 수행하지 않고 입력 컨테이너에서 읽은 압축된 패킷을 출력 컨테이너에 그대로 기록하는 동작

·수정 2

요약

  • 핵심 아이디어 한 줄 요약
  • “이 노트는 왜 중요한가?” → 맥락 설명

본문

  • 디멀티플렉서가 입력 컨테이너에서 추출한 부호화 패킷(encoded packet)을 디코더·인코더 파이프라인을 거치지 않고 멀티플렉서로 직접 전달해 출력 컨테이너에 기록하는 연산. FFmpeg에서는 -c copy, -c:v copy, -c:a copy 등으로 지정 [출처: FFmpeg Documentation, "ffmpeg — Main options", https://ffmpeg.org/ffmpeg.html].

처리 경로 비교

특성

  • 무손실: 압축된 비트스트림 페이로드가 변형되지 않음. 비트 단위 동일성 유지 [출처: FFmpeg Wiki, "Stream copy" 섹션, https://trac.ffmpeg.org/wiki/Seeking].
  • 고속: 디코딩·인코딩 비용이 없고 I/O와 컨테이너 파싱·작성 비용만 발생. 실행 시간은 대체로 디스크 대역폭에 의존 [출처: FFmpeg Documentation, 상동].
  • 코덱·해상도·비트레이트 불변: 오직 컨테이너·메타데이터·타임스탬프만 재작성됨 [출처: ISO/IEC 14496-12, ISO Base Media File Format].

제약

  • 컨테이너 호환성: 대상 컨테이너가 해당 코덱을 지원해야 함 (예: Opus는 MKV·WebM·CAF 지원, 전통적 MP4 명세 밖에 있었음) [출처: RFC 7845, "Ogg Encapsulation for the Opus Audio Codec"; ISO/IEC 14496-14].
  • 키프레임 경계 절단: 비디오는 IDR/키프레임 이후 위치에서만 정확히 자를 수 있음. 비키프레임 지점 절단 시 첫 GOP 디코딩 실패 [출처: FFmpeg Wiki, "Seeking", https://trac.ffmpeg.org/wiki/Seeking].
  • 비트스트림 필터 요구: 예컨대 H.264를 MP4↔MPEG-TS로 옮길 때 h264_mp4toannexb로 AVCC(length-prefixed)와 Annex B(시작 코드 0x000001) 간 변환 필요 [출처: FFmpeg Bitstream Filters Documentation, https://ffmpeg.org/ffmpeg-bitstream-filters.html].

참고