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


119

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

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


질문을 참조하십시오 .
Binarylife

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

로 수년에 걸쳐 나는이 매우 유용 발견했습니다 Chromecast지원 H.264AAC또는 MP3MP4컨테이너입니다. 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.