कैसे FFmpeg का उपयोग कर H.265 कोडेक के साथ एक MP4 उत्पन्न करने के लिए?


24

मैं H.265 को एक वीडियो फ़ाइल एनकोड करना चाहता हूं। Ffmpeg का अंतिम संस्करण H.265 ( स्रोत ) का समर्थन होना चाहिए ।

हालाँकि, मुझे सटीक कमांड के बारे में कोई जानकारी नहीं मिली।

मुझे नहीं पता, मुझे किस लाइब्रेरी के बाद संकेत देना चाहिए -vcodec

मैं नवीनतम Zeranoe FFmpeg Build (git-c78a416 (2013-10-26)) का उपयोग करता हूं।

जवाबों:


40

पृष्ठभूमि

FFmpeg libx265 के साथ 2014-2-12 के बाद HEVC / H.265 को एन्कोडिंग का समर्थन करता है। अब आप ffmpeg का उपयोग सीधे HEVC को एनकोड करने के लिए कर सकते हैं या फिर दूसरे एनकोडर का उपयोग कर सकते हैं, फिर मैन्युअल रूप से mmp .mp4, .mov, या। Fkmpeg का उपयोग करके।

उपलब्ध एनकोडर

वर्तमान H.265 / HEVC एनकोडर हैं:

केवल मल्टीकोरवेयर और डिवएक्स को उनके विकास के समय और विश्वसनीयता के कारण सुझाया गया है।

दो x265 का

एक भ्रम यह है कि "x265" नाम की दो स्वतंत्र परियोजनाएं हैं, एक चीनी कॉलेज के छात्र द्वारा और एक व्यावहारिक रूप से मृत है, और दूसरी एक मल्टीकोरवेयर नामक वाणिज्यिक कंपनी द्वारा। यद्यपि पहले पहले शुरू हुआ था, अब यह व्यावहारिक रूप से मर चुका है, और बाद वाला सक्रिय विकास के अधीन है और वीडियोलैन (x264 के डेवलपर) द्वारा समर्थित है।

FFmpeg HEVC एन्कोडिंग समर्थन की समयरेखा

  • 2013-10-12 .Mov muxing समर्थन में जोड़ा गया 53f903b
  • 2014-02-12 libx265 एन्कोडिंग समर्थन में जोड़ा गया bb6b173
  • 2014-03-09 HEVC के लिए और अधिक पूर्ण Matroska muxing समर्थन जोड़ा गया 38aee64
  • 2014-03-09 अधिक पूर्ण .Mov और नया .mp4 muxing समर्थन में जोड़ा गया 9563e67

tl; डॉ

वैसे भी, ये मेरी अनुशंसा के क्रम में HEVC को एन्कोडिंग की वर्तमान संभावनाओं का एक पूरा सेट हैं:

  • सीधे FFmpeg के साथ MulticoreWare libx265 का उपयोग कर रहा है। इसका मतलब है नवीनतम ज़ेरानो बिल्ड के साथ आप अब ऐसा कर सकते हैं:

    ffmpeg -i INPUT -c:v libx265 -an -x265-params crf=25 OUT.mov
    # With audio
    ffmpeg -i INPUT -c:v libx265 -c:a copy -x265-params crf=25 OUT.mov
    

    नोट: FFmpeg 2014-03-09 की तुलना में नया निर्माण करता है। आप HEVC को .mp4 फाइलों में अब (9563,000 कमिट) करने की अनुमति देता है:

    ffmpeg -i INPUT -c:v libx265 -an -x265-params crf=25 OUT.mp4
    

    आप इसे मट्रोस्का (.mkv) में भी देख सकते हैं:

    ffmpeg -i INPUT -c:v libx265 -an -x265-params crf=25 OUT.mkv
    
  • स्टैंडअलोन मल्टीकोरवेयर x265 का उपयोग करना और फिर परिणामस्वरूप फ़ाइल को FFmpeg या MP4Box के साथ मक्स करें । यह पुराने FFmpeg बिल्ड के साथ काम करेगा जिसमें libx265 सपोर्ट नहीं है।

    # Decode input using FFmpeg and encode using x265 using pipe
    ffmpeg -i INPUT -f yuv4mpegpipe -pix_fmt yuv420p - | \
    x265 --y4m -o encoded.265 -
    
    # Mux the resulting encoded .265 file into an .mp4 or .mov
    
    # Using ffmpeg: only works with newer builds that support muxing HEVC
    # Muxing to .mp4 supported since 03-09-2014
    ffmpeg -i encoded.265 -c copy out.mp4
    # With audio
    ffmpeg -i encoded.265 -i INPUT -map 0 -map 1:a -c copy out.mp4
    
    # Using MP4Box
    MP4Box -add raw.265 out.mp4
    # With audio
    MP4Box -add {INPUT}#audio -add raw.265 out.mp4
    

    @Duvrai को धन्यवाद।

  • डिवएक्स HEVC एनकोडर का उपयोग करना और फिर इसे mux करना।

    इसका उपयोग करने का तरीका स्टैंडअलोन x265 (ऊपर देखें) का उपयोग करने के समान है।

अपडेट: FFmpeg में अब मल्टीकोरवेयर libx265 का उपयोग करके HEVC एन्कोडिंग समर्थन है।

अद्यतन 2: FFmpeg के पास अब mp4 और mov में HEVC का समर्थन करने के लिए समर्थन है ।


1
उन लोगों के लिए जो crf=25उदाहरण कमांड में प्रतिनिधित्व नहीं करते हैं, उनके लिए यहां CRF गाइड है: slhck.info/articles/crf
प्रोग्रामर

@ प्रोग्रामर की टिप्पणी को स्पष्ट करने के लिए, लिंक एक x264 गाइड पर जाता है, लेकिन CR2 चयन में x265 और x264 बहुत समान हैं।
टिमोथी गुजरात

मैं विशेष रूप से h265 के उद्देश्य से CRF पर कोई गाइड नहीं पा सका, लेकिन अवधारणा स्थिर दिखती है। मैं वर्तमान में उन मूल्यों के साथ प्रयोग कर रहा हूं जो इसकी सिफारिश करते हैं (18-28), लेकिन यह नहीं जानते कि ये h265 के लिए थोड़ा अलग होने की आवश्यकता है या नहीं।
प्रोग्रामर

@Programster: हाँ x265 की सीमा है 0-51 । हालांकि डिफ़ॉल्ट मान है 28 के बजाय 23
टिमोथी गु

2
समग्र रूप से शानदार उत्तर, लेकिन एक महत्वपूर्ण बिट गायब; -c:v libx265जैसा कि यह है, x264 का उपयोग करके आउटपुट के ऊपर के उदाहरण। स्पष्टता के लिए, ffmpeg -i INPUT -c:a copy -x265-params crf=2 OUTPUT_h265.mp4x264 के साथ एन्कोडिंग की गई, लेकिन ffmpeg -i INPUT -c:v libx265 -c:a copy -x265-params crf=2 OUTPUT_h265.mp4x265 के साथ एन्कोड किया गया।
रेनबा

18

ffmpeg ने 12 फरवरी 2014 को x265 एन्कोडिंग और 9 मार्च को mp4 कंटेनर समर्थन जोड़ा:

ffmpeg -i input -c:v libx265 -c:a copy output.mp4

ध्यान दें:

  • उपरोक्त कमांड मूल कोडेक में ऑडियो की नकल करेगा। यदि वह काम नहीं करता है, तो ऑडियो को एएसी में परिवर्तित करके -c:a copy(या के copyसाथ बदलें aac, libfdk_aacया libfaac- गुणवत्ता-वार का आदेश दिया गया है)
  • जब ffmpeg उपयोग संकलन --enable-libx265(और --enable-libfdk-aacया --enable-libfaacयदि आवश्यक)

1
FFmpeg 3-9-2014 के बाद से mp4 में मूल रूप से HEVC का समर्थन करता है।
तिमुथियुस गु

1
किसी कारण से परिणाम हरा और गुलाबी था, लेकिन जब मैंने -pix_fmt yuv420pइससे पहले जोड़ा -c:v, तो परिणाम ठीक था।
एवगेनी

-2

वर्तमान डिवएक्स एनकोडर का प्रयास करें। यह h265 के समर्थन में निर्मित है: http://www.divx.com/

(जैसा कि http://jkdigital.de/h265-hevc-divx-praxisbericht/ )


सवाल विशेष रूप से इसे पूरा करने के लिए ffmpeg का उपयोग करने के बारे में है।
महमूद अल-कुद्सी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.