.mkv 파일을 .mp4 파일로 무손실로 변환하는 방법?


119

Matroska 컨테이너의 비디오 파일을 mp4 컨테이너로 변환해야합니다. Matroska 파일에는 하나의 h.264 비디오 트랙과 하나의 AC3 사운드 트랙이 포함되어 있습니다. 이 작업을 무손실로 수행 할 수 있어야하지만 기본 우분투 도구를 사용하여 수행하는 방법은 무엇입니까?

트랜스 코딩은 옵션이 아닙니다.


이 질문을 참조하십시오 .
— Binarylife

2
이것은 특히 삼성 TV에서 재생되지 않는 Matroska 파일을 호환되는 파일로 변환하기위한 솔루션입니다
— knocte

로 수년에 걸쳐 나는이 매우 유용 발견했습니다 Chromecast지원 H.264과 AAC또는 MP3에 MP4컨테이너입니다. ChromecastGoogle Cast 확장 프로그램을 사용하는 Chrome을 사용하는 경우 컴퓨터에서 동영상을 스트리밍하는 것이 매우 쉽습니다 . MP4올바른 스트림 인코딩을 사용하여를 브라우저 창으로 끌어다 놓기 만하면 스트리밍이 시작됩니다.
— Seppo Erviälä 2016 년

답변:


164

아마도 가장 쉬운 도구 는 패키지 ffmpeg또는 패키지입니다. Libav는 FFmpeg의 포크이며 우분투는 우분투 15.04까지 몇 년 동안 전환했습니다. 다른 답변에서 언급 한 많은 GUI 도구의 백엔드 중 하나입니다.avconvlibav-tools

컨텐츠를 다시 인코딩하지 않고 컨테이너를 변경하는 것은 더 간단 할 수 없습니다.

ffmpeg -i input.mkv -codec copy output.mp4
  • 입력 / 출력 파일 이름을 기반으로 Matroska에서 MP4 컨테이너로의 변환을 자동 감지합니다.

  • -codec copystream은 다시 인코딩하지 않고 입력에서 출력으로 스트림을 복사하거나 "다시 mux"합니다. 그것을 복사하여 붙여 넣기처럼 생각하십시오.

  • 기본 스트림 선택 동작은 스트림 유형 당 하나의 스트림 만 선택하는 것입니다. 예를 들어, 입력에 2 개의 비디오 스트림과 1 개의 오디오 스트림이있는 경우 가장 큰 프레임 크기의 비디오 스트림 만 선택됩니다. -map 0입력에서 모든 스트림을 선택하려면 추가하십시오 .

  • 일부 컨테이너는 일부 형식을 지원하지 않을 수 있습니다. 그래서 선택한 경우 확인 컨테이너 , 형식 수를 mkv, mp4또는 avi모두에 대한 지원이 컨텐츠 파일 (비디오, 오디오, 자막, 데이터 등)에 있습니다. 예를 들어 mp4SubRip 자막 ( .srt파일)을 지원하지 않습니다 .


6
AVC로 비디오를 떠나, AAC에 오디오 트랜스 코딩하려면 : avconv -i input.mkv -c:v copy -c:a libfaac output.mp4(내가 avconv 여기에 같은 명령 줄 인수를 가지고 가정,는 FFmpeg을 사용)
— camh

@ camh : 당신이 말한 것은 작동하지만 2 가지를주의하십시오 : 1) 비디오가 AVC이든 다른 것이 든 상관없이 비디오를 그대로 둡니다. 2) 오디오를 AAC로 변환 할뿐만 아니라 컨테이너 형식을 mkv에서 mp4로 변환합니다
— MestreLion

1
@AquariusPower : OP는 스트림을 다시 매핑하고 싶지 않다는 것을 알고 있어야합니다. 컨테이너 만 변환하고 모든 스트림을 유지하려고합니다.
— MestreLion

2
@AquariusPower : -map 0두 오디오 스트림을 모두 얻기 위해 간단하게 시도 했습니까? 대답에서 말했듯이 "기본 스트림 선택 동작은 스트림 유형 당 하나의 스트림 만 선택하는 것입니다"
— MestreLion

1
-c:s mov_text예를 들어 유지해야 할 경우 옵션을 사용하십시오 . srt자막 트랙.
— Seppo Erviälä

25

필요한 소프트웨어 얻기

sudo apt-get install gpac mkvtoolnix

matroska 파일에서 비디오 및 오디오 추출

먼저 matroska 파일에 포함 된 트랙을 확인해야합니다.

mkvmerge --identify video.mkv

File 'video.mkv': container: Matroska
Track ID 1: video (V_MPEG4/ISO/AVC)
Track ID 2: audio (A_AC3)

그런 다음 다음을 사용하여 트랙에 따라 비디오 및 오디오를 추출하십시오.

mkvextract tracks video.mkv 1:video.h264 2:audio.ac3

Extracting track 1 with the CodecID 'V_MPEG4/ISO/AVC' to the file 'video.h264'. Container format: AVC/h.264 elementary stream
Extracting track 2 with the CodecID 'A_AC3' to the file 'audio.ac3'. Container format: Dolby Digital (AC3)
Progress: 100%

MP4 포함 장치로 Mux 오디오 및 비디오

MP4Box -fps 24 -add video.h264 -add audio.ac3 video.mp4

AVC-H264 import - frame size 1280 x 720 at 24.000 FPS
Import results: 31671 samples - Slices: 5672 I 125048 P 122648 B - 32288 SEI - 4936 IDR
AC3 import - sample rate 48000 - 6 channels
Saving to video.mp4: 0.500 secs Interleaving

비디오 fps를 올바르게 감지하지 못했기 -fps 24때문에 옵션 을 추가 MP4Box해야했습니다. 사용법에 따라 AC3오디오 트랙을 멀티플렉싱하기 전에 다른 것으로 다시 인코딩해야합니다.

이제 품질을 잃지 않고 matroska 컨테이너에서 mp4 컨테이너로 스트림을 리 먹싱했습니다.

편집 : MP4는 공식적으로 AC3 오디오를 지원하지 않으므로 VLC 이외의 파일로 파일을 재생할 수있게하려면 오디오 트랙을 지원되는 형식 (예 : AAC, MP3)으로 변환해야합니다.


1
자막 트랙에서도 작동합니까?
— CyberSkull

11

Avidemux를 사용할 수 있습니다

GUI 인터페이스가 좋습니다.

mkv에서 mp4로 변환 할 때는 다시 인코딩되지 않습니다.

변환은 1 분 이내에 수행됩니다 (60 분 비디오).

  1. sudo apt-get install avidemux

  2. avidemux에서 mkv 파일을 엽니 다.

  3. 메시지가 표시되면 안전 모드를 선택하십시오.

  4. 비디오를 사본으로 남겨 두십시오.

  5. File-> Properties를 선택하십시오. 오디오 코덱이인지 확인하십시오 aac.

    1. 오디오 코덱이 aac가 아닌 경우을 선택하십시오 aac(faac).
    2. 그렇지 않으면으로 두십시오 copy. (이 옵션을 사용하면 오디오가 동기화되지 않거나 왜곡 될 수 있으므로 aac(faac)대신 선택하십시오 .)
  6. mp4형식을 선택하십시오 .

  7. 저장을 선택하고 위치를 선택한 .mp4다음 확장자를 가진 파일 이름을 입력하십시오 .

참고 : 때때로 (~ 10 % 확률) 실패 할 수 있습니다. 그런 다음을 사용하십시오 handbrake(re-encode).

참고 2 : 두 가지 링크가 있습니다.

http://www.ubuntugeek.com/avidemux-free-video-editor-designed-for-simple-cutting-filtering-and-encoding-tasks.html

http://www.ubuntugeek.com/how-to-convert-mkv-file-into-mp4-file-using-avidemux.html


매력처럼 일했다. 수락 된 답변에 따라 동기화 문제가 있었지만이 답변에는 문제가 없었습니다.
— moraes

잘 작동
— psychok7


-2

MPEG Part 14는 트랜스 코딩없이 h.264 및 AC3을 기본적으로 지원하므로 파일 이름을 단순히 .mp4확장명 대신 확장명으로 바꿀 수 있습니다 .mkv.


3
내부 코덱을 지원할 수 있지만 Matroska를 이해하지 못하는 응용 프로그램에서 작동한다는 의미는 아닙니다. 응용 프로그램이 Matroska를 지원하고 내선 번호 대신 마법 번호를 보는 경우에만 작동합니다.
— Arda Xi

파일 이름을 바꾸면 컨테이너 형식이 변환되지 않으며 응용 프로그램 (및 사용자)을 혼동 할 수 있습니다. @ArdaXi가 말했듯이 응용 프로그램은 여전히 ​​Matroska를 지원해야 재생할 수 있습니다.
— MestreLion

-2

이 코드를 터미널에 입력하여 PPA를 추가하여 HANDBRAKE 를 시도 할 수 있습니다 .

sudo add-apt-repository ppa:stebbins/handbrake-releases

이것은 비디오 트랜스 코더 인 것 같습니다. 이미 h.264 형식이므로 비디오 트랙을 다시 압축하고 싶지 않습니다.
— Seppo Erviälä

1
핸드 브레이크는 훌륭한 트랜스 코더이지만 파일 형식 변환에는 사용하지 않습니다.
— CyberSkull

1
나는 Handbreak를 절대적으로 좋아하지만 불행히도 오디오 (및 자막)에서만 손실없이 작동합니다. 비디오를 트랜스 코딩하지 않고 비디오를 복사하는 방법을 찾을 수 없었으며 OP는 특히 무손실 형식 변환을 요청했습니다.
— MestreLion
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.