{"id":1798,"date":"2017-11-18T20:00:10","date_gmt":"2017-11-18T11:00:10","guid":{"rendered":"http:\/\/now0930.tk\/wordpress\/?p=1798"},"modified":"2017-11-18T20:00:11","modified_gmt":"2017-11-18T11:00:11","slug":"ffmpeg%ec%9c%bc%eb%a1%9c-vob%eb%a5%bc-mp4%eb%a1%9c-%ec%9d%b8%ec%bd%94%eb%94%a9%ed%95%98%ea%b8%b0","status":"publish","type":"post","link":"https:\/\/now0930.pe.kr\/wordpress\/ffmpeg%ec%9c%bc%eb%a1%9c-vob%eb%a5%bc-mp4%eb%a1%9c-%ec%9d%b8%ec%bd%94%eb%94%a9%ed%95%98%ea%b8%b0\/","title":{"rendered":"ffmpeg\uc73c\ub85c VOB\ub97c MP4\ub85c \uc778\ucf54\ub529\ud558\uae30"},"content":{"rendered":"<p>\uc544\ub798 \uc0ac\uc774\ud2b8\uc5d0\uc11c \ucc38\uc870.<br \/>\nhttps:\/\/www.internalpointers.com\/post\/convert-vob-files-mkv-ffmpeg<\/p>\n<pre class=\"lang:sh decode:true \">ffmpeg \\\r\n  -analyzeduration 100M -probesize 100M \\\r\n  -i output.vob \\\r\n  -map 0:1 -map 0:3 -map 0:4 -map 0:5 -map 0:6 \\\r\n  -metadata:s:a:0 language=ita -metadata:s:a:0 title=\"Italian stereo\" \\\r\n  -metadata:s:a:1 language=eng -metadata:s:a:1 title=\"English stereo\" \\\r\n  -metadata:s:s:0 language=ita -metadata:s:s:0 title=\"Italian\" \\\r\n  -metadata:s:s:1 language=eng -metadata:s:s:1 title=\"English\" \\\r\n  -codec:v libx264 -crf 21 \\\r\n  -codec:a libmp3lame -qscale:a 2 \\\r\n  -codec:s copy \\\r\n  output.mkv<\/pre>\n<p>Let me dissect it:<\/p>\n<ul>\n<li>-analyzeduration 100M -probesize 100M \u2014 keep this one so that FFmpeg is able to find hidden streams;<\/li>\n<li>-i output.vob \u2014 the input file;<\/li>\n<li>-map 0:1 -map 0:3 -map 0:4 -map 0:5 -map 0:6 \u2014 here I&#8217;m mapping the streams, namely I&#8217;m telling FFmpeg to keep Stream 0:1, Stream 0:3, Stream 0:4, Stream 0:5, Stream 0:6 and put them in the output file in that specific order;<\/li>\n<li>-metadata[&#8230;] \u2014 this is used to give streams a title and other additional information, specifically to audio tracks (s:a:0 and s:a:1 where a stands for audio) and subtitles (s:s:0 and s:s:1 where s stands for subtitles);<\/li>\n<li>-codec:v libx264 -crf 21 \u2014 defines the video codec in use and the constant rate factor (crf), namely the quality level. This method allows the encoder to keep a constant quality level, regardless the output file size: 0 is lossless, 23 is default, and 51 is worst possible. The sane range is between 18 and 28;<\/li>\n<li>-codec:a libmp3lame -qscale:a 2 \u2014 defines the audio codec in use and the quality level: 0-3 will produce transparent results, 4 (default) should be close to perceptual transparency, 6-9 produces an &#8220;acceptable&#8221; quality. Using numbers from 0 to 9 means that the audio track will be encoded in variable bitrate (vbr) mode: smaller files, better quality;<\/li>\n<li>-codec:s copy \u2014 s stands for subtitles: copy them as they are;<br \/>\noutput.mkv \u2014 the output file.<\/li>\n<\/ul>\n<p>Bonus point: if your machine supports it, add the flag -threads N to enable multi-threading and give the encoding a boost. Replace N with the number of your CPU cores.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc544\ub798 \uc0ac\uc774\ud2b8\uc5d0\uc11c \ucc38\uc870. https:\/\/www.internalpointers.com\/post\/convert-vob-files-mkv-ffmpeg ffmpeg \\ -analyzeduration 100M -probesize 100M \\ -i output.vob \\ -map 0:1 -map 0:3 -map 0:4 -map 0:5 -map 0:6 \\ -metadata:s:a:0 language=ita -metadata:s:a:0 title=&#8221;Italian stereo&#8221; \\ -metadata:s:a:1 language=eng -metadata:s:a:1 title=&#8221;English stereo&#8221; \\ -metadata:s:s:0 language=ita -metadata:s:s:0 title=&#8221;Italian&#8221; \\ -metadata:s:s:1 language=eng -metadata:s:s:1 title=&#8221;English&#8221; \\ -codec:v libx264 -crf 21 \\ -codec:a libmp3lame -qscale:a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[12],"tags":[232,231,233],"class_list":["post-1798","post","type-post","status-publish","format-standard","hentry","category-12","tag-encodeing","tag-ffmpeg","tag-vob"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1798","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/comments?post=1798"}],"version-history":[{"count":1,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1798\/revisions"}],"predecessor-version":[{"id":1800,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1798\/revisions\/1800"}],"wp:attachment":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/media?parent=1798"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/categories?post=1798"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/tags?post=1798"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}