ffmpeg를 사용하여 mkv를 mp4로 변환


14

ffmpeg를 사용하여 mkv를 mp4로 변환하려고하면 다음 오류가 발생합니다.

version 0.8.3-4:0.8.3-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers   built on Jun 12 2012 16:52:09 with gcc 4.6.3  
 *** THIS PROGRAM IS DEPRECATED ***   This program is only provided for compatibility and will be removed in a future release. Please use
 avconv instead.   [matroska,webm @ 0x1e939c0] max_analyze_duration
 reached   [matroska,webm @ 0x1e939c0] Estimating duration from
 bitrate, this may be inaccurate   Input #0, matroska,webm, from
 'input.mkv':     Duration: 00:01:00.76, start: 0.000000, bitrate: 384
 kb/s  
     Stream #0.0(eng): Video: h264 (High), yuv420p, 1280x544, PAR 1:1 DAR 40:17, 25 fps, 25 tbr, 1k tbn, 50 tbc (default)  
     Stream #0.1(eng): Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s (default)  
     Stream #0.2(eng): Subtitle: [0][0][0][0] / 0x0000   Output #0, ipod, to 'output.m4v':     Metadata:  
     encoder         : Lavf53.21.0  
     Stream #0.0(eng): Video: libx264, yuv420p, 1280x544 [PAR 1:1 DAR 40:17], q=2-31, 25 tbn, 25 tbc (default)  
     Stream #0.1(eng): Audio: ac3, 48000 Hz, 5.1, 384 kb/s (default)   Stream mapping:     Stream #0.0 -> #0.0     Stream #0.1 -> #0.1  
 Press ctrl-c to stop encoding   [ipod @ 0x1e9b740] Application
 provided invalid, non monotonically increasing dts to muxer in stream
 0: -2 >= -2 av_interleaved_write_frame(): Invalid argument

이 명령을 사용하여 파일을 변환했습니다.

ffmpeg -i input.mkv -vcodec copy -acodec copy -absf aac_adtstoasc output.m4v

입력 파일은 다음과 같은 특징이 있습니다.

mediainfo input.mkv 


>General
>
>Unique ID                                : 200459305952356554213392832683163418790 (0x96CF0ED8DB5914CBB9E18163689280A6)  
>Complete name                            : input.mkv  
>Format                                   : Matroska  
>Format version                           : Version 2  
>File size                                : 1.46 GiB  
>Duration                                 : 1h 5mn  
>Overall bit rate                         : 3 168 Kbps  
>Encoded date                             : UTC 2010-09-26 21:44:02  
>Writing application                      : mkvmerge v2.9.5 ('Tu es le seul') built on >Jun 17 2009 16:28:30  
>Writing library                          : libebml v0.7.8 + libmatroska v0.8.1  
>
>Video
>ID                                       : 1  
>Format                                   : AVC  
>Format/Info                              : Advanced Video Codec  
>Format profile                           : High@L3.1  
>Format settings, CABAC                   : Yes  
>Format settings, ReFrames                : 4 frames  
>Codec ID                                 : V_MPEG4/ISO/AVC  
>Duration                                 : 1h 5mn  
>Bit rate                                 : 2 910 Kbps  
>Width                                    : 1 280 pixels  
>Height                                   : 720 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                                : Progressive  
>Bits/(Pixel*Frame)                       : 0.126  
>Stream size                              : 1.31 GiB (90%)  
>Writing library                          : x264 core 105 r1724 b02df7b  
>Encoding settings                        : cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=6 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=0 / chroma_qp_offset=-2 / threads=18 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=0 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc=2pass / mbtree=0 / bitrate=2910 / ratetol=1.0 / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / ip_ratio=1.40 / pb_ratio=1.30 / aq=1:1.00  
>
>Default                                  : Yes  
>Forced                                   : No  
>
>Audio
>ID                                       : 2  
>Format                                   : AC-3  
>Format/Info                              : Audio Coding 3  
>Mode extension                           : CM (complete main)  
>Codec ID                                 : A_AC3  
>Duration                                 : 1h 5mn  
>Bit rate mode                            : Constant  
>Bit rate                                 : 256 Kbps  
>Channel(s)                               : 2 channels  
>Channel positions                        : Front: L R  
>Sampling rate                            : 48.0 KHz  
>Bit depth                                : 16 bits  
>Compression mode                         : Lossy  
Stream size                              : 121 MiB (8%)  
Language                                 : English  
Default                                  : Yes  
Forced                                   : No  

ffmpeg를 처음 사용했기 때문에 오류의 의미 또는 수정 방법을 잘 모르겠습니다.

감사!


ffmpeg 명령의 결과 인 완전한 ffmpeg 콘솔 출력도 포함하십시오.
llogan

코드 형식이 잘못되었습니다. 인용은 내가 편집하기 어렵게 만들었습니다 ...
nanofarad

답변:


22

내가 한 것처럼 이미 여기에 서면 , 나는 당신이 당신의 명령 줄에서 몇 가지 세부 사항을 변경 제안 :

  • 당신이 15.04 이전의 우분투 버전을 사용하는 경우, 교체 ffmpeg를 위해 avconv이 몇 년 동안 우분투에서 사용되는 포크되면서 (주석 참조)
  • 정말로 필요 -absf aac_adtstoasc합니까? 현재 우분투의 ffmpeg에서 수정되지 않은 일부 문제 가 있었습니다 . 먼저 시도하지 말 것을 권합니다.
  • -vcodec copy -acodec copy-codec copy또는 로 단순화 할 수 있습니다 -c copy. 또한 자막과 같이 비디오 및 오디오 이외의 다른 스트림을 변조하는 것을 방지합니다.

승자는 ...

ffmpeg -i input.mkv -c copy output.m4v

그래도 작동하지 않으면 모든 터미널 출력을 게시하십시오.


-1. 제공 한 명령 줄과 동일한 오류가 발생합니다. 당신이 여기에 단지 장난처럼 보인다.
ixtmixilix

@ixtmixilix : 터미널 출력을 게시해야합니까? 당신 avconv은 내 버전과 다를 수 있습니다.
MestreLion

@ixtmixilix : 또한 왜 pedantic입니까? 나는 그에게 대안, 제안할만한 가치를 제공하고 피드백을 기다렸다. 이것 다른 답변을 내려 놓을만한 근거는 없습니다 (OP의 질문을 완벽하게 해결했습니다)
MestreLion

이제 avconv:-) 우분투에서 더 이상 유지되지 않습니다
치로 틸리新疆改造中心法轮功六四事件

@CiroSantilli 巴拿馬 文件 六四 事件 法轮功와, 정말? 우리 다시 돌아 왔니 ffmpeg? 변경 사항에 대한 출처 나 참조 자료가 있습니까?
MestreLion

3

나는 매우 오래된 스레드를 알고 있지만 ffmpeg를 성공적으로 실행하는 솔루션을 찾았습니다. 사용하지 마십시오 -vcodec copy -acodec copy, 그냥 사용하는 ffmpeg -i input.mkv output.m4v대신. 실행을 시작합니다.

그러나 제 경우에는 .mkv를 .mp4로 변환하면 결과 출력은 휴지통입니다. 프레임 정확도가 떨어집니다.


5
copy코덱을 사용하지 않으면 재 인코딩되고 품질이 떨어집니다.
nyuszika7 시간

2

폴더의 모든 파일을 MKV에서 MP4로 자동 변환하려면 별명을 작성할 수 있습니다.

alias mkv2mp4="for f in ./**/*.mkv; do ffmpeg -n -i \"\$f\" -c copy \"\${f%.mkv}.mp4\" && rm \"\$f\"; done"

이 명령은 다음 단계를 수행합니다.

  • .mkv 파일을 찾기 위해 현재 디렉토리를 반복적으로 반복합니다.
  • 기존 파일을 덮어 쓰지 않고 각 파일을 .mp4로 변환
  • 변환이 성공했을 때 소스 파일을 제거합니다

단계별로 명령을 조금 더 잘 설명하십시오.
derHugo

당신이 알고 싶은 것이? 바로 아래에 명령이 수행하는 작업에 대한 요약이 있습니다.
귀도 보 우먼

0

.mkv 파일을 .mp4 파일로 무손실로 변환하는 방법 은 이미이 질문에 대한 답변이 있습니까?

기본 개념은 MKV와 MP4가 모두 컨테이너이며 컨테이너 일 뿐이므로 기본적으로 오디오와 비디오 트랙의 압축을 풀고 다시 포장해야합니다.


나는 그것을 읽었지만 다른 도구 대신 ffmpeg 로 수행하는 방법을 배우려고 합니다. 나는 항상 핸드 브레이크를 사용하지만 ffmpeg에서 핸드 브레이크를 수행하는 방법을 이해하는 데 도움이되지 않습니다. 새로운 것을 배우려고 노력하고 있습니다.
JohnS

@JohnS ffmpeg는 항상 모든 것을 다시 인코딩하려고 시도하기 때문에 최선의 선택이 아닙니다. 어쨌든 forum.doom9.org/showthread.php?t=164683 이것은 아마도 좋은 출발점이 될 수 있습니다. 당신을 위해.
user827992

3
@ user827992 잘못되었습니다. ffmpeg가 항상 모든 것을 다시 인코딩하려고하지는 않습니다. 질문의 세부 사항을 읽었습니까? 문제의 예는 스트림을 다시 인코딩하지 않고 분명히 복사하려고합니다.
llogan

2
@ user827992 : ffmpeg와 avconv는 컨텐츠를 다시 인코딩하지 않고 컨테이너에서 다른 컨테이너로 손실없이 다시 포장 할 수 있습니다.
MestreLion

0

DVDStyler를 사용하여 MP4 DVD를 구우려고 할 때 Xubuntu 14.04에서 이것을 얻었습니다. Bombono는 동일한 오류를 생성합니다. ffmpeg # 1154 는이 문제가 해결 ffmpeg되지 않았을 수도 있지만 avconv? libav # 478 은 여전히 ​​열려 있습니다.

참조 : /unix/127522/avconv-error-av-interleaved-write-frame

런치 패드 # 1339980을 제출 했습니다 . 요약하면, ffmpeg하지 말고 현재 릴리스를 사용하십시오 avconv.


0

이것을 시도하십시오 : : Linux의 Libav

설치 : 실행 명령

sudo apt-get install libav-tools

비디오 변환 명령 :: 폴더로 이동은 비디오를 포함하고 터미널에서 실행됩니다

avconv -i oldvideo.mkv -ar 22050 convertedvideo.mp4
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.