it-swarm.dev

mp4 비디오 파일에서 오디오 트랙을 제거하는 방법?

여러 개의 오디오 트랙이있는 mp4 비디오 파일이 있습니다. 나머지 트랙을 제거하고 하나만 유지하고 싶습니다. 어떻게해야합니까?

107
tshepang

먼저 ffmpeg -i file.mp4 파일에 어떤 스트림이 있는지 확인하십시오. 다음과 같이 보일 것입니다 :

Stream #0.0: Video: mpeg4, yuv420p, 720x304 [PAR 1:1 DAR 45:19], 23.98 tbr, 23.98 tbn, 23.98 tbc
Stream #0.1: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
Stream #0.2: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s

그런 다음 ffmpeg -i file.mp4 -map 0:0 -map 0:2 -acodec copy -vcodec copy new_file.mp4 비디오 스트림 및 두 번째 오디오 스트림을 new_file.mp4.

122
gelraen

관련 문제 — 제거 모두 mp4 파일의 오디오 트랙은 다음과 같이 수행 할 수 있습니다.

ffmpeg -i input_file.mp4 -vcodec copy -an output_file.mp4
106
Greg Marks

스트림 번호를 식별하십시오.

$ ffmpeg -i in.mp4
   ...
   Stream #0:0: Video: ...
   Stream #0:1: Audio: ...
   Stream #0:2: Audio: ...

-map _file_:_stream_를 사용하여 처리 및 출력 할 스트림을 선택하십시오.

$ ffmpeg -i in.mp4 -map 0:0 -map 0:2 -vcodec copy -acodec copy out.mp4

참조 : https://ffmpeg.org/ffmpeg.html#Advanced-options

8
jgr

avidemux 하나의 오디오 파일 만 내부적으로 처리하므로 하나의 특정 트랙을 선택해야합니다. .mp4로 시도한 적이 없지만 다른 형식과 작동합니다.

4
wag

Avidemux (GUI)를 여러 번 사용했으며 ffmpeg (콘솔)을 사용했습니다.

Avidemux에서는 메인 메뉴에서 "오디오"-> "트랙 선택"을 선택합니다. 그런 다음 비디오를 새 파일로 저장하십시오.

흥미롭게도 일부 경우 Avidemux는 ffmpeg보다 "더 나은"출력을 생성했습니다.

avidemux와 ffmpeg는 표준 Fedora Linux 저장소에 있습니다. (다른 Linux에서도 표준이라고 확신합니다.)

3
Maxim

-vn 또는 -an는 모든 비디오 또는 오디오 트랙을 제거합니다. -vn -acodec copy를 입력하면 비디오가 제거됩니다. -an -vcodec copy는 모든 오디오를 제거합니다.

-vcodec copy는 ffmpeg가 기존 비디오 트랙을 직선으로 복사하고 처리/인코딩하지 않도록 지정합니다. 지정하지 않으면 여전히 작동하지만 ffmpeg는 기존 비디오 트랙을 다시 인코딩 할 수 있으며 작업에 더 많은 CPU가 사용되며 상당히 오래 걸릴 수 있습니다.

1
lots of crisps

ffmpeg 프로그램이 avconv로 대체되었습니다. avconvffmpeg의 사용법은 매우 유사하므로이 게시물의 모든 명령은 다음과 같습니다.

avconv <old ffpmeg command line options>

우분투에 있다면 이 링크 에 따라 avconv를 설치하십시오.

0
SmallChess

명령 행에서 avidemux 사용.

Avidemux GUI에서 https://unix.stackexchange.com/a/85834/4319에 설명 된대로 단순히 오디오 트랙을 선택/선택 해제하고 파일을 저장하면됩니다. 새로운 AVI에.))

내 작업을 위해 어떤 종류의 프로젝트가 SpiderMonkey 또는 TinyPy projetcs로 저장되는지 살펴 봤는데 SpiderMonkey (JavaScript) 프로젝트에는 필요한 오디오 트랙 선택 작업이 부족하지만 TinyPy (Python) 프로젝트에는 그들.

관련없는 항목 (수십 개의 불필요한 줄)을 모두 제거했는데 이것이 내 some_series.py :

#PY  <- Needed to identify #
#--automatically built--

adm = Avidemux()

adm.audioClearTracks()
adm.audioAddTrack(1)

트랙 1을 떠나지 만 트랙 0을 떨어 뜨립니다.

그런 다음 다음과 같은 명령으로 많은 파일의 일괄 변환을 실행했습니다.

for f in *.avi; do avidemux3_cli --nogui --load "$f" --run ../some_series.py --save ../some_series/"${f%%.rus.eng.avi}".eng.avi --quit; done

모든 것을 복사하지만 필요한 오디오 트랙을 제외하고 모두 삭제합니다.

커맨드 라인에서 avidemux를 실행하는 방법은 https://www.avidemux.org/admWiki/doku.php?id=tutorial:batch_processing 에서 배웠습니다. Python 스크립트, JS 스크립트 만 (저에게 효과가 없었습니다)).