javascript अपलोड अपलोड होने पर ऑडियो अपलोड क्यों भ्रष्ट है?




php android (2)

मैंने जावास्क्रिप्ट, PHP और कॉर्डोवा का उपयोग करके एक अपलोड किया है। सब कुछ ठीक काम करता है। लेकिन जब मैं ब्राउज़र में अपलोड किए गए एमपी 3 या विंडोज मीडिया प्लेयर जैसे डेस्कटॉप प्लेयर को खोलने का प्रयास करता हूं, तो यह कहता है कि फ़ाइल दूषित है। कुछ पता है कि ऐसा क्यों हो रहा है?

मुझे यह भी कहना है कि जब मैं ब्राउज़र में दूषित फ़ाइल का निरीक्षण करता हूं तो इसमें ऑडियो टैग के बजाय वीडियो टैग होते हैं।

मेरा कोड:

//method to upload the audio
function uploadAudio(recordedSrc) {
  var win = function(r) {
    console.log("Code = " + r.responseCode);
    console.log("Response = " + r.response);
    console.log("Sent = " + r.bytesSent);
  }

  var fail = function(error) {
    alert("An error has occurred: Code = " + error.code);
    console.log("upload error source " + error.source);
    console.log("upload error target " + error.target);
  }

  var options = new FileUploadOptions();
  options.fileKey = "file";
  options.fileName = "recordupload.mp3";
  options.mimeType = "audio/mpeg";
  console.log(options);

  var ft = new FileTransfer();
  console.log(ft);
  console.log(recordedSrc);
  ft.upload(recordedSrc, encodeURI(app_url + "json/upload.php"), win, fail, options);
}
$('.upload').on('click', function(e) {
  e.preventDefault();
  //Method to upload Audio file to server
  uploadAudio(mediaRecSrc);
});

PHP में सर्वर साइड हैंडलिंग स्क्रिप्ट:

<?php
// Where the file is going to be placed
$target_path = dirname(__FILE__) . "/uploaded_records/";
if (!file_exists($target_path)) {
    mkdir ($target_path, 0777);
}
/* Add the original filename to our target path.
Result is "uploads/filename.extension" */
$target_path = $target_path . basename( $_FILES['file']['name']);
$path = $_FILES['file']['name'];
$ext = pathinfo($path, PATHINFO_EXTENSION);
var_dump("ext is: " . $ext);

if(move_uploaded_file($_FILES['file']['tmp_name'], $target_path)) {
    echo "The file ".  basename( $_FILES['file']['name']).
    " has been uploaded";
} else{
    echo "There was an error uploading the file, please try again!";
    echo "filename: " .  basename( $_FILES['file']['name']);
    echo "target_path: " .$target_path;
}
?>

अद्यतन :

ऐसा लगता है कि समस्या फ़ाइल के भीतर है (जो एंड्रॉइड काम करता है)। मैंने यूएसबी डिवाइस के माध्यम से फाइल की प्रतिलिपि बनाई और इसे खेलने की कोशिश की और एक ही समस्या है, फाइल नहीं खेलेंगी। मुझे कहना है कि फ़ाइल को कॉर्डोवा से मीडिया प्लगइन का उपयोग करके रिकॉर्ड किया गया है। शायद यह समस्या है, है ना?

दूसरा अद्यतन :

मैंने एक फ़ाइल को एक .amr प्रारूप के रूप में रिकॉर्ड किया और अपलोड किया और इसे ऑनलाइन .mp3 परिवर्तित कर here और ध्वनि काम करता है। इस समस्या को हल करने के बारे में कोई विचार?


यह संभावना है कि आप अपनी फाइलें बाइनरी के बजाय ASCII में अपलोड कर रहे हैं? मैं PHP के साथ बहुत अच्छा नहीं हूं लेकिन मेरे लिए ऐसा लगता है कि आपको कुछ बताने की जरूरत है कि यह टेक्स्ट की बजाय एक बाइनरी फ़ाइल है। शायद आप अपने विकल्पों में कुछ निर्दिष्ट कर सकते हैं।


यह mp3 mp3 प्लेयर को समझ में नहीं आता है mp3 प्लेयर एन्कोड किया जा सकता है। कुछ mp3 प्लेयर केवल एक निश्चित तरीके से एन्कोड किए गए ऑडियो का समर्थन करते हैं और एन्कोडिंग के कुछ तरीकों का समर्थन नहीं करते हैं जैसे परिवर्तनीय बिट दर, उच्च बिट दर (320 केबीपीएस +), या DRM साथ mp3
एक एप्लिकेशन डेवलपर के रूप में, आप किसी भी एंड्रॉइड संचालित डिवाइस पर उपलब्ध किसी भी मीडिया कोडेक का उपयोग करने के लिए स्वतंत्र हैं, जिसमें एंड्रॉइड प्लेटफ़ॉर्म द्वारा प्रदान किए गए और डिवाइस-विशिष्ट हैं। हालांकि, यह मीडिया एन्कोडिंग प्रोफाइल का उपयोग करने का सबसे अच्छा अभ्यास है जो डिवाइस-अज्ञेयवादी, एंड्रॉइड मीडिया प्रारूप हैं

आप mp3 फ़ाइल को पहली जगह कैसे बना रहे हैं? मैं एंड्रॉइड पर 3 जीपी ऑडियो फाइलें बनाता हूं और वे VLC Media Player में ठीक खेलते हैं।

एंड्रॉइड डिवाइस पर कॉर्डोवा अनुकूली मल्टी-रेट प्रारूप में ऑडियो रिकॉर्ड करता है । निर्दिष्ट फ़ाइल एक के साथ समाप्त होना चाहिए। एमआरआर विस्तार। (यह एक विकल्प नहीं है, यह एक तथ्य है)।

// Record audio
// 
function recordAudio() {
    var src = "myrecording.amr";
    var mediaRec = new Media(src, onSuccess, onError);

    // Record audio
    mediaRec.startRecord();

    // Stop recording after 10 sec
    var recTime = 0;
    var recInterval = setInterval(function() {
        recTime = recTime + 1;
        setAudioPosition(recTime + " sec");
        if (recTime >= 10) {
            clearInterval(recInterval);
            mediaRec.stopRecord();
        }
    }, 1000);
}

AMR फ़ाइल समर्थित ऑडियो फ़ाइलों में से एक नहीं है जो html5 ऑडियो टैग का समर्थन करता है। समर्थित ऑडियो स्वरूपों के लिए कृपया यह सूची देखें: html5 समर्थित ऑडियो प्रारूप

फ़ाइल रूपांतरण देखें: convert

यदि आपको नहीं पता कि Cordova क्या है, तो मेरा स्टैक ओवरफ्लो त्वरित इंस्टॉल मार्गदर्शिका देखें:
एक ट्यूटोरियल के लिंक के साथ कॉर्डोवा त्वरित स्थापित करें।

यदि आप चाहते हैं कि एंड्रॉइड। .wav आउटपुट कुछ दिलचस्प है (एंड्रॉइड में एक .wav कोडेक नहीं है!) (मेरे द्वारा अनचाहे, लेकिन मुझे इस तरह का कोड पता है, अच्छा लगता है)