2017-04-26 125 views
1

现在我试图用ffmpeg命令修剪mkv文件。ffmpeg无法正确使用mkv

ffmpeg -y -i 1.mkv -filter_complex "[0:0]trim=start=201:duration=28,setpts=PTS-STARTPTS" a.mp4 

处理完成后,a.mp4被创建为长度(28s),但存在问题。

  1. 视频在播放时有些摇摆不定。
  2. 尽管播放已经结束超过28秒,但音频仍在继续。

所以你们可以告诉我我该怎么办?

当FFmpeg的处理,它显示了一些错误,像这样:

D:\Work\ffmpeg\files> ffmpeg -y -i 1.mkv -filter_complex "[0:0]trim=start=201:duration=28,setpts=PTS-STARTPTS" a.mp4 
ffmpeg version N-77883-gd7c75a5 Copyright (c) 2000-2016 the FFmpeg developers 
    built with gcc 5.2.0 (GCC) 
    configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib 
    libavutil  55. 13.100/55. 13.100 
    libavcodec  57. 22.100/57. 22.100 
    libavformat 57. 21.101/57. 21.101 
    libavdevice 57. 0.100/57. 0.100 
    libavfilter  6. 25.100/6. 25.100 
    libswscale  4. 0.100/4. 0.100 
    libswresample 2. 0.101/2. 0.101 
    libpostproc 54. 0.100/54. 0.100 
Guessed Channel Layout for Input Stream #0.1 : mono 
Input #0, matroska,webm, from '1.mkv': 
    Metadata: 
    ENCODER   : Lavf56.1.0 
    Duration: 00:35:40.08, start: 0.000000, bitrate: 348 kb/s 
    Stream #0:0: Video: vp8, yuv420p, 640x480, SAR 1:1 DAR 4:3, 29.97 fps, 29.97 tbr, 1k tbn, 1k tbc 
    Stream #0:1: Audio: pcm_mulaw ([7][0][0][0]/0x0007), 8000 Hz, 1 channels, s16, 64 kb/s 
[libx264 @ 000002859baf3300] using SAR=1/1 
[libx264 @ 000002859baf3300] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX 
[libx264 @ 000002859baf3300] profile High, level 3.0 
[libx264 @ 000002859baf3300] 264 - core 148 r2638 7599210 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 
Output #0, mp4, to 'a.mp4': 
    Metadata: 
    encoder   : Lavf57.21.101 
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0]/0x0021), yuv420p, 640x480 [SAR 1:1 DAR 4:3], q=-1--1, 29.97 fps, 30k tbn, 29.97 tbc 
    Metadata: 
     encoder   : Lavc57.22.100 libx264 
    Side data: 
     unknown side data type 10 (24 bytes) 
    Stream #0:1: Audio: aac (LC) ([64][0][0][0]/0x0040), 8000 Hz, mono, fltp, 48 kb/s 
    Metadata: 
     encoder   : Lavc57.22.100 aac 
Stream mapping: 
    Stream #0:0 (vp8) -> trim (graph 0) 
    setpts (graph 0) -> Stream #0:0 (libx264) 
    Stream #0:1 -> #0:1 (pcm_mulaw (native) -> aac (native)) 
Press [q] to stop, [?] for help 
[vp8 @ 000002859d9ae460] Discarding interframe without a prior keyframe! 
[vp8 @ 000002859d9aeb00] Discarding interframe without a prior keyframe! 
[vp8 @ 000002859e8eee40] Discarding interframe without a prior keyframe! 
[vp8 @ 000002859e8f5460] Discarding interframe without a prior keyframe! 
Error while decoding stream #0:0: Invalid data found when processing input 
    Last message repeated 3 times 
frame= 0 fps=0.0 q=0.0 size=  62kB time=00:00:22.27 bitrate= 22.6kbits/s 
frame= 0 fps=0.0 q=0.0 size=  154kB time=00:00:41.08 bitrate= 30.6kbits/s 
frame= 0 fps=0.0 q=0.0 size=  255kB time=00:01:02.20 bitrate= 33.6kbits/s 
frame= 0 fps=0.0 q=0.0 size=  340kB time=00:01:19.34 bitrate= 35.1kbits/s 
frame= 0 fps=0.0 q=0.0 size=  423kB time=00:01:39.31 bitrate= 34.9kbits/s 
frame= 88 fps= 29 q=29.0 size=  518kB time=00:01:43.79 bitrate= 40.9kbits/ 
frame= 140 fps= 40 q=29.0 size=  613kB time=00:01:45.46 bitrate= 47.6kbits/ 
frame= 194 fps= 48 q=29.0 size=  719kB time=00:01:47.38 bitrate= 54.8kbits/ 

... 


frame= 839 fps= 14 q=29.0 size= 10881kB time=00:34:51.52 bitrate= 42.6kbits/ 
frame= 839 fps= 14 q=29.0 size= 10962kB time=00:35:10.46 bitrate= 42.5kbits/ 
frame= 839 fps= 14 q=29.0 size= 11031kB time=00:35:25.44 bitrate= 42.5kbits/ 
frame= 839 fps= 14 q=-1.0 Lsize= 11266kB time=00:35:40.16 bitrate= 43.1kbits/s dup=284 drop=328 speed=34.6x 
video:1083kB audio:10104kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.706855% 
[libx264 @ 000002859baf3300] frame I:4  Avg QP:15.24 size: 22651 
[libx264 @ 000002859baf3300] frame P:305 Avg QP:19.95 size: 2626 
[libx264 @ 000002859baf3300] frame B:530 Avg QP:25.41 size: 408 
[libx264 @ 000002859baf3300] consecutive B-frames: 15.7% 0.0% 0.4% 83.9% 
[libx264 @ 000002859baf3300] mb I I16..4: 15.9% 63.7% 20.4% 
[libx264 @ 000002859baf3300] mb P I16..4: 0.3% 1.9% 0.3% P16..4: 22.3% 6.2% 2.4% 0.0% 0.0% skip:66.5% 
[libx264 @ 000002859baf3300] mb B I16..4: 0.0% 0.1% 0.0% B16..8: 16.1% 0.6% 0.1% direct: 0.2% skip:82.9% L0:48.2% L1:48.5% BI: 3.4% 
[libx264 @ 000002859baf3300] 8x8 transform intra:71.1% inter:71.4% 
[libx264 @ 000002859baf3300] coded y,uvDC,uvAC intra: 72.2% 78.3% 40.7% inter: 5.9% 4.0% 0.1% 
[libx264 @ 000002859baf3300] i16 v,h,dc,p: 29% 30% 21% 20% 
[libx264 @ 000002859baf3300] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 28% 18% 14% 5% 6% 9% 6% 9% 6% 
[libx264 @ 000002859baf3300] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 38% 20% 11% 5% 5% 7% 5% 6% 4% 
[libx264 @ 000002859baf3300] i8c dc,h,v,p: 46% 16% 27% 11% 
[libx264 @ 000002859baf3300] Weighted P-Frames: Y:0.0% UV:0.0% 
[libx264 @ 000002859baf3300] ref P L0: 63.4% 21.5% 11.5% 3.6% 
[libx264 @ 000002859baf3300] ref B L0: 92.6% 6.4% 1.0% 
[libx264 @ 000002859baf3300] ref B L1: 96.4% 3.6% 
[libx264 @ 000002859baf3300] kb/s:316.59 
[aac @ 000002859baf4400] Qavg: 65377.508 

D:\Work\ffmpeg\files> 

回答

0

尝试以下两个步骤:

ffmpeg -y -i 1.mkv -c copy 1new.mkv 

ffmpeg -y -i 1new.mkv -vf "trim=start=201:duration=28,setpts=PTS-STARTPTS" -af "atrim=start=201:duration=28,asetpts=PTS-STARTPTS" a.mp4 

我已经添加了第一步,因为我已经看到了此错误 - Discarding interframe without a prior keyframe - 格式不正确的MKV,ffmpeg无法正确读取。重新包装通常可以解决这个问题。

你可能应该升级你的ffmpeg,这是一个相当老的构建。

+0

Thans为您的回应。 我试过,因为你的回答。 第二个问题已解决,因此音频结束与视频相同。 但第一个问题是剩下的。 视频文件有些从视频中间跳动。 这是严重的问题。 – Alex

+0

我已将mkv文件附加到保管箱中。当你向我发送邮件账户时,我可以分享它。 – Alex