แปลง mkv เป็น mp4 ด้วย ffmpeg


14

เมื่อฉันลองแปลง mkv เป็น mp4 โดยใช้ ffmpeg เกิดข้อผิดพลาดต่อไปนี้:

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 ปัจจุบันของ Ubuntu ฉันแนะนำให้คุณลองก่อน
  • -vcodec copy -acodec copyได้ง่ายไปหรือ-codec copy -c copyนอกจากนี้ยังป้องกันการแก้ไขการสตรีมอื่น ๆ นอกเหนือจากวิดีโอและเสียงเช่นคำบรรยาย

ดังนั้นผู้ชนะคือ ...

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

หากไม่ได้ผลโปรดโพสต์เอาท์พุทเทอร์มินัลทั้งหมด


-1 ฉันได้รับข้อผิดพลาดเดียวกันกับบรรทัดคำสั่งที่คุณให้มา ดูเหมือนว่าคุณกำลังอวดความสามารถที่นี่
ixtmixilix

@ixtmixilix: สนใจที่จะโพสต์เอาท์พุทขั้ว? คุณavconv's รุ่นอาจจะแตกต่างกว่าฉัน
MestreLion

@ixtmixilix: ยังทำไมอวดความรู้? ฉันเสนอทางเลือกให้กับเขาอีกวิธีหนึ่งที่น่าลองและรอข้อเสนอแนะ ไม่มีจุด downvoting นี้และคำตอบอื่น ๆ (ซึ่งแก้ไขคำถาม OP ของ btw อย่างสมบูรณ์)
MestreLion

ตอนนี้avconvไม่ได้รับการบำรุงรักษาอีกต่อไปใน Ubuntu :-)
Ciro Santilli 新疆改造中心法轮功六四事件

@CiroSantilli 巴拿馬文件六四事件法轮功ว้าวจริงเหรอ? เรากลับไปที่ffmpeg? มีแหล่งข้อมูลหรือการอ้างอิงเกี่ยวกับการเปลี่ยนแปลงหรือไม่
MestreLion

3

ฉันรู้ว่ามันเป็นเธรดที่เก่ามาก แต่ฉันพบวิธีแก้ไขปัญหาให้เรียกใช้ ffmpeg ได้สำเร็จ อย่าใช้-vcodec copy -acodec copyใช้เพียงffmpeg -i input.mkv output.m4vแทน มันจะเริ่มทำงาน

แต่ในกรณีของฉันฉันแปลง. mkv เป็น. mp4 ผลลัพธ์ผลลัพธ์เป็นเพียงถังขยะ มันสูญเสียความแม่นยำของเฟรม


5
หากคุณไม่ได้ใช้copyตัวแปลงสัญญาณมันจะเข้ารหัสและสูญเสียคุณภาพ
nyuszika7h

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

คุณอยากรู้อะไร มีบทสรุปของสิ่งที่คำสั่งทำงานด้านล่าง
Guido Bouman

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

รับสิ่งนี้ใน Xubuntu 14.04 เมื่อพยายามเบิร์น DVD เป็น MP4 โดยใช้ DVDStyler Bombono ผลิตข้อผิดพลาดเดียวกัน ffmpeg # 1154แนะนำว่าสิ่งนี้อาจได้รับการแก้ไขffmpegแล้วแม้ว่าอาจจะไม่ใช่avconvหรือ libav # 478ยังคงเปิดอยู่

ดูเพิ่มเติมที่: /unix/127522/avconv-error-av-interleaved-write-frame

ฉันยื่นLaunchpad # 1339980 ; ในการสรุปให้ใช้รุ่นปัจจุบันและไม่ffmpegavconv


0

ลองสิ่งนี้ :: Libavใน Linux

การติดตั้ง: เรียกใช้คำสั่ง

sudo apt-get install libav-tools

คำสั่งการแปลงวิดีโอ :: ไปที่โฟลเดอร์ที่มีวิดีโอและทำงานใน terminal

avconv -i oldvideo.mkv -ar 22050 convertedvideo.mp4
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.