FFMPEG:

FFMPEG:

나는 또한 Linux 솔루션을 찾고 있습니다.별도의 질문)

확장자가 .ts. 첫 번째 파일의 일부를 제거하고 두 번째 파일을 분할한 다음 첫 번째 파일을 두 번째 파일의 첫 번째(분할) 부분과 병합해야 합니다.

둘 다 동일한 특성을 가지고 있습니다.

Format                                   : MPEG-TS
File size                                : 3.16 GiB
Duration                                 : 1h 39mn
Overall bit rate mode                    : Variable
Overall bit rate                         : 4 527 Kbps

Video
ID                                       : 720 (0x2D0)
Menu ID                                  : 6181 (0x1825)
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L4
Format settings, CABAC                   : Yes
Format settings, ReFrames                : 4 frames
Codec ID                                 : 27
Duration                                 : 1h 39mn
Width                                    : 1 440 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate                               : 25.000 fps
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : MBAFF

또한 여러 오디오 트랙과 자막이 포함되어 있습니다.

파일을 트랜스코딩하지 않고 처리하고 싶습니다. 적어도 시작 부분 등은 제거할 수 있어야 합니다.

FFMPEG:

ffmpeg -i source.mts다음을 제공합니다:

Input #0, mpegts, from 'source1.mts':
      Duration: 01:40:00.76, start: 2995.511878, bitrate: 4526 kb/s
      Program 6181
        Stream #0:0[0x46](fra,fra): Subtitle: dvb_teletext ([6][0][0][0] / 0x0006)
        Stream #0:1[0x2d0]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 1440x1080 [SAR 4:3 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
        Stream #0:2[0x2da](fra): Audio: aac (HE-AAC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 73 kb/s
        Stream #0:3[0x2db](qaa): Audio: aac (HE-AAC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 67 kb/s
        Stream #0:4[0x2dc](deu): Audio: aac (HE-AAC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 49 kb/s
        Stream #0:5[0x2dd](qad): Audio: aac (HE-AAC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 57 kb/s

ffmpeg내가 찾은 명령으로 크로스 플랫폼이기도 한 를 사용하면 매우 잘 수행할 수 있다고 생각합니다.여기 한 파일의 일부를 제거합니다.

ffmpeg -i InputFile -vcodec copy -acodec copy -ss 00:12:34.567 -t 00:34:56.789 OutputFile

Stream #0:2[0x2da](fra)단, 입력에 4개의 오디오 트랙이 있어 첫 번째( ) 오디오만 사용된다는 점을 제외하면 작동합니다 . 내가 원하는 것은 모든 오디오이거나 세 번째( Stream #0:3[0x2db](qaa))입니다. 조정하는 방법?

ffmpeg따라서 다음을 수행해야 합니다.

1. 첫 번째 파일의 시작 부분을 잘라냅니다. (1시간 40분 파일 중 처음 2분 부분을 제거합니다.)

2. 두 번째(1시간) 파일을 두 부분으로 분할합니다(3분 05초 후).

3. 두 번째 파일을 분할하여 얻은 3분 05분 부분을 첫 번째 파일 끝에 결합(추가)합니다.


내가 시도한 것:

Openshot: 트랜스코딩 없이는 처리할 수 없습니다.

Avidemux(Linux): 저장하려고 하면 다음과 같이 표시됩니다."MPEG와 호환되지 않습니다. 복사 코덱을 사용할 수 없습니다."

Windows의 Avidemux: 오디오가 동기화되지 않았습니다.

답변1

ffmpeg모든 오디오 트랙을 유지하면서 를 사용하여 파일을 분할하고 결합하려면 어떻게 해야 합니까 ?

당신이 발견한 대로, 비트스트림 복사는 오직하나(오디오) 트랙에 따라스트림 사양 문서:

기본적으로 ffmpeg입력 파일에 있는 각 유형(비디오, 오디오, 자막)의 스트림 하나만 포함하고 이를 각 출력 파일에 추가합니다. 다음 기준에 따라 각각의 "최고"를 선택합니다. 비디오의 경우 해상도가 가장 높은 스트림이고, 오디오의 경우 채널이 가장 많은 스트림이며, 자막의 경우 첫 번째 자막 스트림입니다. 동일한 유형의 여러 스트림이 균등하게 전송되는 경우 인덱스가 가장 낮은 스트림이 선택됩니다.

선택하려면모두오디오 트랙:

ffmpeg -i InputFile.ts-c copy -ss 00:12:34.567 -t 00:34:56.789 -map 0:v -map 0:a FirstFile.ts

선택하려면제삼오디오 트랙:

ffmpeg -i InputFile.ts -c copy -ss 00:12:34.567 -t 00:34:56.789 -map 0:v -map 0:a:2 FirstFile.ts

스트림 선택에 대한 자세한 내용과 다른 예를 볼 수 있습니다.고급 옵션문서 섹션 ffmpeg.

또한 표현을 간결하게 하기 위해 -vcodec copy -acodec copy원래 명령을 위와 같이 결합하겠습니다 .-c copy

나뉘다:

따라서 나중에 다시 결합하기 위해 분할 측면에서 두 파일에서 달성하려는 것과 결합합니다.

ffmpeg -i InputOne.ts -ss 00:02:00.0 -c copy -map 0:v -map 0:a OutputOne.ts
ffmpeg -i InputTwo.ts -c copy -t 00:03:05.0 -map 0:v -map 0:a OutputTwo.ts

당신에게 줄 것입니다 :

  • OutputOne.ts, 이것이 전부입니다~ 후에첫 번째 입력 파일의 처음 2분
  • OutputTwo.ts, 이는첫 번째두 번째 입력 파일의 3분 5초

가입하다:

ffmpeg다시 인코딩하지 않고 파일 연결을 지원합니다.연결 문서에 광범위하게 설명되어 있습니다..

결합할 파일 목록을 만듭니다(예 join.txt: ).

file '/path/to/files/OutputOne.ts'
file '/path/to/files/OutputTwo.ts'

그러면 ffmpeg명령에서 다음을 사용할 수 있습니다 concat demuxer.

 ffmpeg -f concat -i join.txt -c copy FinalOutput.ts

mpeg전송 스트림( .ts) 에 대해 작업하고 있으므로~해야 한다concat을 사용할 수 있습니다규약또한:

ffmpeg -i "concat:OutputOne.ts|OutputTwo.ts" -c copy -bsf:a aac_adtstoasc output.mp4

위에 링크된 연결 페이지의 예에 따라. 실험은 여러분에게 맡기겠습니다.

답변2

주요 답변을 기반으로 한 간단한 답변은 다음과 같습니다.

시작 지점 이후(끝까지) 데이터를 유지하려면 다음을 수행하세요.

ffmpeg -i INPUT -c copy -ss START_TIME -map 0 OUTPUT

두 시점 사이의 데이터를 유지하려면 다음을 수행하십시오.

ffmpeg -i INPUT -c copy -ss START_TIME -to END_TIME -map 0 OUTPUT

특정 시점 이후 특정 기간 동안 데이터를 보관하려면 다음을 수행하세요.

ffmpeg -i INPUT -c copy -ss START_TIME -t DURATION_TIME -map 0 OUTPUT

시작 후 특정 기간 동안 데이터를 유지하려면 다음을 수행하십시오.

ffmpeg -i INPUT -c copy -t DURATION_TIME -map 0 OUTPUT

특정 시점까지 데이터를 시작부터 유지하려면 다음을 수행하세요.

ffmpeg -i INPUT -c copy -to TIME_POINT -map 0 OUTPUT

TIME은 초 단위 또는 hh:mm:ss[.xxx] 단위의 숫자일 수 있습니다.


join.txt파일을 결합하려면 콘텐츠가 포함된 파일을 생성하세요.

file 'path-to-INPUT1'
file 'path-to-INPUT2'
file...etc

그 다음에

 ffmpeg -f concat -i join.txt OUTPUT

또는:

mpeg 파일(전송 파일 포함)을 결합하려면

 ffmpeg -i "concat:INPUT-1|INPUT-2" -c copy -bsf:a aac_adtstoasc OUTPUT

GUI 솔루션으로 Avidemux를 시도했지만 결과가 좋지 않았습니다. Linux 솔루션을 검색할 때 이 댓글을 찾았습니다.여기가리키는Avidemux 야간:

"Avidemux를 사용해 볼 수 있지만 안정적인 버전은 아닙니다. "Wine"이 포함된 win32 버전(예, Windows용)을 사용해 보아야 합니다. 이 버전은 H.264를 지원하며 키프레임을 찾으려면 이중 화살표를 사용해야 합니다. not] 모든 곳에서 잘라내기("long gop" 때문에...) 그러나 이와 같은 모든 소프트웨어처럼 JUST CUTS를 수행할 수 있습니다. 그렇지 않으면 렌더링됩니다(전환, 효과 등의 경우). http://avidemux.org/nightly/win32/"

Linux/Wine에서 테스트했지만 Windows에서도 작동합니다.

여기에 이미지 설명을 입력하세요

파일을 결합하려면 다음을 사용하십시오.파일 열기첫 번째 파일을 추가한 다음파일 추가나머지를 위해.

저장하려면:파일 - 저장합니다.

관련 정보