जवाबों:
यह आपके @abrahab द्वारा अंतिम टिप्पणी का उत्तर है।
आप mp4box
एक फ़ाइल को nginx के माध्यम से छद्म करने में सक्षम होने की आवश्यकता नहीं है । MP4 स्ट्रीमिंग मॉड्यूल मोव परमाणुओं की स्थिति के बावजूद इसकी देखभाल करता है ( mp4box
फ़ाइल की शुरुआत में मूव परमाणु को स्थानांतरित करता है)।
अब 500 सर्वर त्रुटि के लिए, आप mp4box के साथ "-फ्रैग" विकल्प का उपयोग कर रहे हैं? MP4 स्ट्रीमिंग मॉड्यूल खंडित MP4 फ़ाइलों को नहीं पढ़ सकता है। mp4box
छद्म स्ट्रीमिंग के लिए अच्छा उपयोग बेहतर मांग के लिए वीडियो को इंटरलेव करना है। Moov परमाणु स्थानांतरण एक अतिरिक्त लाभ है।
मैं हमेशा mp4box
एक FFmpeg- एन्कोडेड फ़ाइल के लिए ऐसा करता हूं
MP4Box -add MyVideo.mp4 -isma Myvideo-box.mp4
यह डिफ़ॉल्ट रूप से 500 मिलीसेकंड में MP4 फ़ाइल को इंटरलेव करेगा।
आम तौर पर, आप एक MP4 कंटेनर के भीतर x264 वीडियो बनाना चाहते हैं। यह विकल्प मूल रूप से किसी भी डिवाइस और ब्राउज़र द्वारा समर्थित है।
निम्नलिखित पर्याप्त होना चाहिए। इनपुट नाम और सीआरएफ विकल्पों को बदलना सुनिश्चित करें। उत्तरार्द्ध गुणवत्ता निर्धारित करता है, जहां मानवीय मूल्य 19 से 25 तक होते हैं - कम का मतलब बेहतर गुणवत्ता है, लेकिन उच्चतर बिटरेट:
ffmpeg -i input.avi -c:v libx264 -crf 23 -c:a aac -movflags faststart output.mp4
यदि आप GUI की तरह हैं, तो आप एन्कोडिंग के लिए हैंडब्रेक का भी उपयोग कर सकते हैं ।
faststart
विकल्प का उपयोग करनाअब, आपको जो करने की ज़रूरत है वह शुरुआत में MP4 कंटेनर के MOOV परमाणु को स्थानांतरित करें । इस परमाणु (संक्षेप में, MP4 कंटेनर में डेटा की एक इकाई) में वीडियो / ऑडियो स्ट्रीम के बारे में महत्वपूर्ण मेटाडेटा शामिल होंगे। -movflags faststart
ठीक वैसा ही करना चाहिए।
यदि आपके FFmpeg संस्करण में यह विकल्प नहीं है, तो उन्नयन पर विचार करें। यदि आप अपग्रेड नहीं कर सकते हैं, तो आप नीचे दिए गए किसी भी टूल से एक ही चीज हासिल कर सकते हैं:
QTIndexSwapper , एक एडोब आकाशवाणी अनुप्रयोग
MP4Box , मुक्त और खुला स्रोत, निम्नलिखित के समान एक कमांड चला रहा है, जहां आप अंतराल को बदल सकते हैं (यहां, 500):
mp4box -inter 500 input.mp4
पायथन में क्यूटी-फास्टस्टार्ट , जो हर उस जगह काम करता है जहां अजगर स्थापित है।
qtfaststart input.mp4
यह इसके बारे में।
अब, निश्चित रूप से, स्ट्रीमिंग के लिए आप वास्तव में बिटरेट को कुछ सीमा के भीतर रहने के लिए विवश करना चाह सकते हैं। आप मेरे ब्लॉग पोस्ट में दर नियंत्रण विधियों के बारे में अधिक पढ़ सकते हैं ।
उदाहरण के लिए, -maxrate 2M -bufsize 2M
एन्कोडिंग विकल्पों में जोड़कर , आप एन्कोडिंग को 2 Mbit / s पर कैप करते हैं, जो 720p वीडियो के लिए पर्याप्त हो सकता है। आवश्यक बिटरेट, इस बात पर निर्भर करेगा कि सामग्री कितनी जटिल है। यह कुछ परीक्षण और त्रुटि लेता है।
ffmpeg -i 1.flv -vcodec libx264 -f mp4 -an -g 1 -f mp4 -g 30 -level 3 new.mp4
तब करता हूं mp4box
और mp4 500 internal server error
शुरू करने के लिए और nginx रिपोर्ट की तलाश नहीं कर सकता है और अधिक पैरामीटर 0
। जब वीडियो बिना कोड के -vcoded libx264
(डिफ़ॉल्ट mp4 कोडर) सभी काम फ़ाइल (लेकिन गुणवत्ता! बीमार!) :( (क्षमा करें, अब, आपको उत्तर देने की अनुमति नहीं है)
-movflags faststart
मुझे जो चाहिए था
आप बस एक गैर-स्ट्रीम करने योग्य AVI या MP4 कन्वर्ट कर सकते हैं, वह भी सब कुछ फिर से एन्कोडिंग के बिना, ऐसा करके:
ffmpeg -i INPUT.mp4 -c copy -movflags faststart STREAMABLE_OUTPUT.mp4
कुछ भी फिर से सांकेतिक शब्दों में बदलना करने की आवश्यकता नहीं है, क्योंकि सिर्फ मूव परमाणु को स्थानांतरित करना होगा।
आप इसे ffmpeg के साथ आज़मा सकते हैं:
ffmpeg.exe -i "INPUT_FILE.AVI" -threads 2 -s 800x600 -r 25.00 -threads 1 -pix_fmt yuv420p -g 300 -qmin 3 -b 2048k -async 1 -acodec pcm_s16le -ar 22050 -ac 1 -ab 128k -y "OUTPUT_FILE.mp4"
-acodec pcm_s16le
(त्रुटि :) के साथ भी काम नहीं करता है Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
। IETF ड्राफ्ट की तरह एक अच्छा कारण बिल्कुल इन मापदंडों को चुनने के लिए भी गायब प्रतीत होता है।
MP4Box -isma -inter 500 Myvideo.mp4