하나의 스트림에 6개 채널이 있는 MOV에서 4개의 빈 오디오 채널 삭제

하나의 스트림에 6개 채널이 있는 MOV에서 4개의 빈 오디오 채널 삭제

두 개의 채널만 두 개의 별도 마이크에서 나오는 모노 신호로 채워지는 일종의 5.1 설정으로 녹화된 비디오 파일로 작업해야 합니다. 내 생각은 ffmpeg를 사용하여 4개의 빈 채널을 삭제하는 것이지만 손실되었습니다.

모든 오디오 스트림을 삭제할 수 있었지만 몇 시간 동안 inf -map, -filter 등을 사용하여 시도하고 오류를 일으킨 후에도 오디오 스트림 내의 빈 채널을 삭제할 수 없었습니다. 채널 3과 4에는 별도의 모노 트랙으로 갖고 싶은 오디오가 포함되어 있습니다. 채널 1,2,5,6은 삭제하고 비디오 스트림만 복사하면 됩니다.

이것은 ffprobe의 출력입니다:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2.MOV':
  Metadata:
    major_brand     : qt
    minor_version   : 537199360
    compatible_brands: qt
    creation_time   : 2022-01-21T04:37:49.000000Z
    make            : Atomos
    make-eng        : Atomos
    encoder         : ShogunInferno - 9.11
    encoder-eng     : ShogunInferno - 9.11
    com.atomos.hdr.gamut: Rec709
    com.atomos.hdr.gamma: SLog2
    com.atomos.hdr.camera: Sony
    com.apple.proapps.image.{TIFF}.Make: Atomos
    com.apple.proapps.image.{TIFF}.Model: ShogunInferno
    com.apple.proapps.image.{TIFF}.Software: 9.11
    timecode        : 05:11:39:13
  Duration: 00:01:14.78, start: 0.000000, bitrate: 1064887 kb/s
  Stream #0:0[0x1](eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 6 channels, s32 (24 bit), 6912 kb/s (default)
    Metadata:
      creation_time   : 2022-01-21T04:37:49.000000Z
      vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](eng): Video: prores (Standard) (apcn / 0x6E637061), yuv422p10le(tv, bt709/bt709/unknown, progressive), 4096x2160, 1057968 kb/s, SAR 1:1 DAR 256:135, 50 fps, 50 tbr, 5k tbn (default)
    Metadata:
      creation_time   : 2022-01-21T04:37:49.000000Z
      vendor_id       : appl
      encoder         : Apple ProRes 422
  Stream #0:2[0x3](eng): Data: none (tmcd / 0x64636D74) (default)
    Metadata:
      creation_time   : 2022-01-21T04:37:49.000000Z
      timecode        : 05:11:39:13

도와 주셔서 감사합니다...

답변1

채널 레이아웃이 확실하지 않습니다. 다음 구문을 시도해 볼 수 있습니다.

ffmpeg -y -i six_channels.mp4 -filter_complex "[0:a]channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR];[FC][LFE]amix=inputs=2[a];[FL]anullsink;[FR]anullsink;[BL]anullsink;[BR]anullsink" -map 0:v -map "[a]" -vcodec copy -acodec aac -ar 48000 -ac 2 stereo.mov


  • [0:a]channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR]- 5.1 레이아웃을 [FL], [FR], [FC], [LFE], [BL], 임시 이름을 사용하여 6개의 오디오 채널로 분할합니다 [BR].
  • [FC][LFE]amix=inputs=2[a]- 채널을 임시 이름으로 [FC]병합 합니다 .[LFE][a]
  • [FL]anullsink;[FR]anullsink;[BL]anullsink;[BR]anullsink- 중복된 오디오 채널을 무시합니다.
  • -vcodec copy -acodec aac -ar 48000 -ac 2- 오디오 코덱, 샘플 속도 및 출력 채널 수를 선택합니다.

입력 생성 six_channels.mp4(테스트용):

ffmpeg -y -f lavfi -i testsrc=size=192x108:rate=1 -f lavfi -i sine=frequency=1000 -f lavfi -i sine=frequency=1000 -f lavfi -i sine=frequency=300 -f lavfi -i sine=frequency=400 -f lavfi -i sine=frequency=1000 -f lavfi -i sine=frequency=1000 -filter_complex "join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-LFE|4.0-BL|5.0-BR" -acodec aac -ar 48000 -ac 6 -t 10 six_channels.mp4


업데이트:

두 개의 별도 모노 트랙 및 PCM24 코덱:

명령줄 예:

ffmpeg -y -i six_channels.mp4 -filter_complex "[0:a]channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR];[FL]anullsink;[FR]anullsink;[BL]anullsink;[BR]anullsink" -map 0:v -map "[FC]" -map "[LFE]" -vcodec copy -acodec pcm_s24le -ar 48000 -ac 1 two_mono_tracks.mov

관련 정보