में उपयोग करते हुए 264 संपीड़न मैं OpenCV में VideoWriter वर्ग के साथ का उपयोग कर 264 संपीड़न एक वीडियो कैसे लिख सकता हूँ लेखन? मैं मूल रूप से वेबकैम से एक वीडियो प्राप्त करना चाहता हूं और एक चरित्र दबाए जाने के बाद इसे सहेजना चाहता हूं। MPEG4 भाग 2 संपीड़न का उपयोग करते समय आउटपुट वीडियो फ़ाइल विशाल है।एक वीडियो फ़ाइल OpenCV
उत्तर
आप निश्चित रूप से VideoWriter
कक्षा का उपयोग कर सकते हैं, लेकिन आपको the correct FourCC code का उपयोग करने की आवश्यकता है जो H264 मानक का प्रतिनिधित्व करता है। चार सीसीसी चार कैरेक्टर कोड के लिए खड़ा है, जो मीडिया फाइलों में इस्तेमाल किए गए वीडियो कोडेक, संपीड़न प्रारूप, रंग या पिक्सेल प्रारूप के लिए पहचानकर्ता है।
विशेष रूप से, जब आप एक VideoWriter
वस्तु बनाने, आप FourCC कोड जब यह निर्माण निर्दिष्ट करें। अधिक जानकारी के लिए OpenCV डॉक्स से परामर्श करें: http://docs.opencv.org/trunk/modules/highgui/doc/reading_and_writing_images_and_video.html#videowriter-videowriter
मैं तुम्हें सी का उपयोग कर रहे संभालने हूँ ++, और इसलिए VideoWriter
निर्माता की परिभाषा है:
VideoWriter::VideoWriter(const String& filename, int fourcc,
double fps, Size frameSize, bool isColor=true)
filename
वीडियो फ़ाइल का आउटपुट है, fourcc
कोड आप उपयोग करना चाहते के लिए FourCC कोड है, fps
, वांछित फ्रेम दर है frameSize
वीडियो के वांछित आयाम है, और isColor
निर्दिष्ट करता है या नहीं, आप वीडियो रंग में होना चाहता हूँ। भले ही FourCC चार वर्णों का उपयोग करता, OpenCV एक उपयोगिता है कि FourCC पार्स करता है और एक भी पूर्णांक आईडी जो फाइल करने के लिए सही वीडियो प्रारूप में लिखने के लिए सक्षम होने के लिए एक देखने के रूप में प्रयोग किया जाता है आउटपुट है। आप CV_FOURCC
फ़ंक्शन का उपयोग करें, और चार एकल वर्ण निर्दिष्ट - प्रत्येक कोडेक आप चाहते हैं की FourCC कोड में एक भी चरित्र के लिए इसी।
विशेष रूप से, आप इसे इस तरह कहेंगे:
int fourcc = CV_FOURCC('X', 'X', 'X', 'X');
हर किरदार कि (क्रम में) FourCC के अंतर्गत आता है के साथ X
बदलें। क्योंकि आप H264 मानक चाहते हैं, आप तो जैसे एक VideoWriter
वस्तु बनाने होगा:
VideoWriter outputVideo(filename, fourcc, fps, S);
आप ऊपर का उपयोग करते हैं, यह: वैकल्पिक रूप से
#include <iostream> // for standard I/O
#include <string> // for strings
#include <opencv2/core/core.hpp> // Basic OpenCV structures (cv::Mat)
#include <opencv2/highgui/highgui.hpp> // Video write
using namespace std;
using namespace cv;
int main()
{
VideoWriter outputVideo; // For writing the video
int width = ...; // Declare width here
int height = ...; // Declare height here
Size S = Size(width, height); // Declare Size structure
// Open up the video for writing
const string filename = ...; // Declare name of file here
// Declare FourCC code
int fourcc = CV_FOURCC('H','2','6','4');
// Declare FPS here
int fps = ...;
outputVideo.open(filename, fourcc, fps, S);
// Put your processing code here
// ...
// Logic to write frames here... see below for more details
// ...
return 0;
}
, तो आप बस जब अपने VideoWriter
वस्तु की घोषणा ऐसा कर सकता है जरूरी नहीं है कि आप open
इस रूप में कहते हैं स्वचालित रूप से दाखिल करने के लिए फ्रेम लिखने के लिए लेखक खुल जाएगा।
आप यकीन है कि अगर 264 आपके कंप्यूटर पर समर्थित है नहीं कर रहे हैं, FourCC कोड के रूप में -1
निर्दिष्ट करें, और एक पॉप-अप विंडो जब आप कोड है कि उपलब्ध वीडियो कोडेक के सभी प्रदर्शित करता है चलाना चाहिए कि आपके कंप्यूटर पर हैं मैं यह उल्लेख करना चाहता हूं कि यह केवल विंडोज के लिए काम करता है। जब आप -1
निर्दिष्ट करते हैं तो लिनक्स या मैक ओएस में यह विंडो पॉप-आउट नहीं होती है। दूसरे शब्दों में:
VideoWriter outputVideo(filename, -1, fps, S);
आप चुन सकते हैं कि कौन सा सबसे उपयुक्त है H.264 आपके कंप्यूटर पर मौजूद नहीं होना चाहिए। एक बार ऐसा करने के बाद, ओपनसीवी VideoWriter
कन्स्ट्रक्टर में इनपुट करने के लिए सही चारसीसी कोड बनाएगा ताकि आपको एक वीडियोवाइटर उदाहरण मिलेगा जो VideoWriter
का प्रतिनिधित्व करता है जो उस प्रकार के वीडियो को फ़ाइल में लिख देगा।
एक बार जब आप एक फ्रेम तैयार, फ़ाइल के लिए लिखने के लिए frm
में जमा हो जाती है, तो आप क्या कर सकते हैं या तो:
या
outputVideo.write(frm);
एक बोनस के रूप में, यहाँ एक ट्यूटोरियल है कैसे पढ़ने के लिए पर/OpenCV में वीडियो लिखें: http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_gui/py_video_display/py_video_display.html - हालांकि, यह अजगर के लिए लिखा है, लेकिन क्या पता करने के लिए लिंक के नीचे स्थित है अच्छा है, वहाँ है कि wor के लिए जाना जाता FourCC कोड की एक सूची है प्रत्येक ऑपरेटिंग सिस्टम के लिए के। बीटीडब्ल्यू, एच 264 मानक के लिए निर्दिष्ट चार सीसीसी कोड वास्तव में 'X','2','6','4'
है, इसलिए 'H','2','6','4'
काम नहीं करता है, X
के साथ प्रतिस्थापित करें।
एक और छोटी टिप्पणी। यदि आप मैक ओएस का उपयोग कर रहे हैं, तो आपको 'A','V','C','1'
या 'M','P','4','V'
का उपयोग करने की आवश्यकता है। अनुभव से, 'H','2','6','4'
या 'X','2','6','4'
फ़ोरसीसी कोड निर्दिष्ट करने का प्रयास करते समय काम नहीं लगता है।
- 1. OpenCV के साथ एक वीडियो फ़ाइल कैसे लिखें?
- 2. OpenCV वीडियो डिवाइस
- 3. एक क्षेत्र OpenCV
- 4. OpenCV अजगर
- 5. OpenCV
- 6. OpenCv
- 7. OpenCV
- 8. अजगर + openCV
- 9. OpenCV cvWriteFrame, cvWriteToAVI
- 10. OpenCV
- 11. OpenCV
- 12. opencv
- 13. OpenCV
- 14. opencv
- 15. opencv
- 16. opencv
- 17. OpenCV
- 18. OpenCV
- 19. opencv
- 20. opencv
- 21. OpenCV
- 22. OpenCV
- 23. OpenCV
- 24. OpenCV
- 25. OpenCV
- 26. OpenCV
- 27. opencv
- 28. openCV
- 29. opencv
- 30. OpenCV
मैंने कार्यक्रम की कोशिश की। सबसे पहले जब मैंने फोरक पैरामीटर का उपयोग करने की कोशिश की- -1 खिड़की नहीं चली गई। जब मैंने x264 का उपयोग करने का प्रयास किया जैसा आपने बताया था, मुझे "कोडेक नहीं खोल सका: libx264" त्रुटि और कुछ अन्य त्रुटियां जैसे "टूटी हुई एफएमपीईपीई डिफ़ॉल्ट सेटिंग्स का पता चला" .. मुझे बीटीडब्ल्यू क्या करना चाहिए Iubuntu 14.04 –
का मतलब है कि इसका मतलब है कि आपके पास नहीं है एच 264 पुस्तकालय .... यह सब एक साथ एक और पोस्ट है। जब मैं काम करता हूं, तो मैं आपको एक लिंक दूंगा। बीटीडब्ल्यू -1 केवल विंडोज़ में काम करता है। इसका भी उल्लेख करना भूल गए। ऊप्स! – rayryeng
धन्यवाद .. जब आप h264 lib स्थापना पर काम करते हैं तो मुझे बताएं। । मुझे बेहद जानना चाहिए –