2016-12-19 1 views
0

안녕하세요 제 문제는 2 개의 .w64 파일 (확장 wav 형식)입니다. 각 파일에는 16 개의 모노 오디오 채널이 있습니다. 각 .w64 파일에서 특정 오디오 채널을 추출하여 별도의 단일 채널 모노 오디오 스트림으로 .mxf 파일에 삽입하고 이러한 오디오 스트림에 태그 정보를 추가로 설정할 수 있기를 원합니다. -map 등을 사용해 보았지만 .w64 파일에서 모든 채널을 가져 와서 16 채널의 단일 오디오 스트림을 삽입하는 것처럼 보입니다. 사전에 사과드립니다. ffmpeg에 매우 익숙하며 사전에 조언을 해주셔서 감사드립니다. 이것은 모두 윈도우의 명령 줄 사용법에만 해당됩니다. 모든 최고의FFMpeg wav/.w64에서 개별 오디오 채널을 추출하고 트랙 태그가있는 .mxf에 삽입하는 방법

는 FFmpeg -i "D : \ 미디어 \ AUDIO_0.W64"0 : 0 -map 0 : 0 : -map 0 복사 -c "\ 미디어 \ NO_AUDIO.mxf D"-i : 1 -map 0 : 0 : 2 -acodec pcm_s24le -map 1 : 0 "D : \ out.mxf 미디어 \"

ffmpeg version N-67838-g4388e78 Copyright (c) 2000-2014 the FFmpeg developers 
    built on Nov 19 2014 22:02:08 with gcc 4.9.2 (GCC) 
    configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av 
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab 
le-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca -- 
enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-lib 
modplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrw 
b --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinge 
r --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --en 
able-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis 
--enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable- 
libx265 --enable-libxavs --enable-libxvid --enable-zlib 
    libavutil  54. 14.100/54. 14.100 
    libavcodec  56. 12.101/56. 12.101 
    libavformat 56. 14.100/56. 14.100 
    libavdevice 56. 3.100/56. 3.100 
    libavfilter  5. 2.103/5. 2.103 
    libswscale  3. 1.101/3. 1.101 
    libswresample 1. 1.100/1. 1.100 
    libpostproc 53. 3.100/53. 3.100 
[w64 @ 0481c580] Estimating duration from bitrate, this may be inaccurate 
Input #0, w64, from 'D:\Media\AUDIO_0.W64': 
    Duration: 00:01:02.56, bitrate: 18432 kb/s 
    Stream #0:0: Audio: pcm_s24le ([1][0][0][0]/0x0001), 48000 Hz, 16 channels 
, s32 (24 bit), 18432 kb/s 
[mxf @ 048890e0] index entry 1564 + TemporalOffset 1 = 1565, which is out of bou 
nds 
Input #1, mxf, from 'D:\media\NO_AUDIO.mxf': 
    Metadata: 
    uid    : adab4424-2f25-4dc7-92ff-29bd000c0000 
    generation_uid : adab4424-2f25-4dc7-92ff-29bd000c0001 
    company_name : FFmpeg 
    product_name : OP1a Muxer 
    product_version : 57.56.100 
    product_uid  : adab4424-2f25-4dc7-92ff-29bd000c0002 
    modification_date: 0000-01-01 00:00:00 
    timecode  : 00:00:00:00 
    Duration: 00:01:02.60, start: 0.000000, bitrate: 2404 kb/s 
    Stream #1:0: Video: mpeg2video (4:2:2), yuv422p(tv), 1920x1080 [SAR 1:1 DAR16:9], max. 50000 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc 
File 'D:\media\out.mxf' already exists. Overwrite ? [y/N] y 

[mxf @ 04891c60] there must be exactly one video stream and it must be the first 
one 
Output #0, mxf, to 'D:\media\out.mxf': 
    Metadata: 
    encoder   : Lavf56.14.100 
    Stream #0:0: Audio: pcm_s24le, 48000 Hz, 16 channels, s32 (24 bit), 18432 kb/s 
    Metadata: 
     encoder   : Lavc56.12.101 pcm_s24le 
    Stream #0:1: Audio: pcm_s24le, 48000 Hz, 16 channels, s32 (24 bit), 18432 kb/s 
    Metadata: 
     encoder   : Lavc56.12.101 pcm_s24le 
    Stream #0:2: Audio: pcm_s24le, 48000 Hz, 16 channels, s32 (24 bit), 18432 kb/s 
    Metadata: 
     encoder   : Lavc56.12.101 pcm_s24le 
    Stream #0:3: Video: mpeg2video, yuv422p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, max. 50000 kb/s, 25 fps, 25 tbn, 25 tbc 
Stream mapping: 
    Stream #0:0 -> #0:0 (pcm_s24le (native) -> pcm_s24le (native)) 
    Stream #0:0 -> #0:1 (pcm_s24le (native) -> pcm_s24le (native)) 
    Stream #0:0 -> #0:2 (pcm_s24le (native) -> pcm_s24le (native)) 
    Stream #1:0 -> #0:3 (copy) 

Could not write header for output file #0 (incorrect codec parameters ?): Error 
number -1 occurred 
+0

실행 한 명령과 전체 콘솔 출력을 표시하십시오. – Mulvya

+0

'ffmpeg'이 (가) 오래되었습니다. 업데이트해야합니다. 빌드에 대한 링크는 [다운로드] (http://ffmpeg.org/download.html) 페이지를 참조하십시오. – LordNeckbeard

답변

1

당신의 매핑이

오류 메시지 상태가

을 엉망, "정확히 하나의 비디오 스트림이 있어야하며 첫 번째 비디오 스트림이어야합니다." MXF는 까다롭기 때문에 매핑 순서에 따라 스트림 순서가 결정되므로 먼저 비디오를 매핑해야합니다.

두 번째로 오디오 채널 선택에 -map을 사용하려고하지만이 경우에는 작동하지 않습니다 : -map_channel 또는 팬 오디오 필터를 추가해야합니다.

-map_channel

ffmpeg -i "D:\Media\AUDIO_0.W64" -i "D:\media\NO_AUDIO.mxf" -map 1:v -map 0:a -map 0:a -map 0:a -map_channel 0.0.0:0.1 -map_channel 0.0.1:0.2 -map_channel 0.0.2:0.3 -c:v copy -c:a pcm_s24le -shortest "D:\media\out.mxf" 

팬 필터

아니면 pan audio filter 대신 -map_channel로 사용할 수 있습니다

ffmpeg -i "D:\Media\AUDIO_0.W64" -i "D:\media\NO_AUDIO.mxf" -filter_complex "[0:a]pan=mono|c0=c0[a0];[0:a]pan=mono|c0=c1[a1];[0:a]pan=mono|c0=c2[a2]" -map 1:v -map "[a0]" -map "[a1]" -map "[a2]" -c:v copy -c:a pcm_s24le -shortest "D:\media\out.mxf" 

내가 사용을 선호하는 팬. 일단 팬의 응답을 얻으면 더 많은 유연성이 있으며 -map_channel은 팬을 사용하고 있습니다.

메타 데이터

당신은 그냥 일반적인 예를주지 않도록 각 스트림에 추가 할 원하는 것을 메타 데이터를 지정하지 않았습니다. 세 번째 오디오 스트림에 이름 값으로 명명 된 메타 데이터 필드 를 추가하려면 : 나는 MXF 지원 모르겠어요

-metadata:s:a:2 key=value 

, 또는 MXF의 먹서가 지원하는, 당신은 할 수 있습니다 있도록 실험.

+0

와우 환상적입니다, 대단히 감사합니다. 결코 혼자서는 해결하지 못했을 것입니다. 메타 데이터는 mxf 파일의 오디오 스트림에 대한 언어 태그뿐입니다. "ENG", "GER"등. – Vince

+0

호기심에서 오디오 파일의 오디오 채널을 모두 가져 와서 .mxf?의 개별 오디오 스트림으로 추가 할 수 있습니다. – Vince

+0

@Vince 내가 아는 것은 아닙니다. '-map_channel' 또는 팬 또는 채널 분할 필터를 사용해야합니다. – LordNeckbeard

관련 문제