Проблема в сжатии и загрузке видео с использованием javaScript., JQuery и PHPPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Проблема в сжатии и загрузке видео с использованием javaScript., JQuery и PHP

Сообщение Anonymous »

Я создаю программу загрузки видео, в которой мы загружаем видео, сжимаем его с помощью JS/jQuery, а затем загружаем его на сервере, используя PHP
Я успешно сжал видео и предварительно просмотрите сжатый видео -шаг ниже, и оно работает отлично

< /code>
И когда я пытаюсь сохранить Blob для сервера, звук внутри видео удаляется автоматически < /p>
Вот мой код jquery и php -код < /p>
jquery code < /p>
$('#uploadBtn').on('click', function()
{
if (!compressedBlob) return;

const formData = new FormData();
formData.append('compressedVideo', compressedBlob, 'compressed_' + originalFile.name.replace(/\.[^/.]+$/, '') + '.mp4');

$.ajax({
url: '',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function(response)
{
alert("Uploaded");
},
error: function(xhr, status, error)
{
alert("Error");
}
});
});
< /code>
php code < /p>


Как это сделать, используя Javascript/jQuery и Php
Просто для всех, что вы знаете, это мой процесс сжатия с использованием Javascirpt
Код сжатия
$('#videoInput').on('change', function(e)
{
preview_compress_video(e);
});
async function preview_compress_video(e)
{
resetState();
const file = e.target.files[0];
if (!file) return;

originalFile = file;

// Setup video preview
const video = $('#videoPreview')[0];
video.src = URL.createObjectURL(file);
video.style.display = 'block';

video.onloadedmetadata = function()
{
originalDuration = video.duration;
};

// Compression handler
if (!originalFile) return;

// Use a hidden video element for processing
const processingVideo = $('#hiddenVideo')[0];
processingVideo.src = URL.createObjectURL(originalFile);

// Wait for hidden video to load
await new Promise((resolve) => {
processingVideo.onloadedmetadata = resolve;
});

try
{
// Setup MediaRecorder with proper options
const stream = processingVideo.captureStream();
var bitrate="500000";
const options = {
audioBitsPerSecond: 128000,
videoBitsPerSecond: bitrate,
mimeType: 'video/mp4'
};

mediaRecorder = new MediaRecorder(stream, options);
const chunks = [];

// Event handlers
mediaRecorder.ondataavailable = function(e) {
if (e.data.size > 0) {
chunks.push(e.data);
}
};

mediaRecorder.onstop = function() {
//compressedBlob = new Blob(chunks, { type: 'video/webm' });
compressedBlob = new Blob(chunks, { type: 'video/mp4' });

// Update preview with compressed version
const compressedVideo = $('#videoPreview')[0];
compressedVideo.src = URL.createObjectURL(compressedBlob);

compressedVideo.onloadedmetadata = function()
{
$('#compressProgress').val(100);
};
};

mediaRecorder.onerror = function(e) {
$('#status').text('Compression error: ' + e.toString());
resetState();
};

// Start recording
mediaRecorder.start(100); // Collect data every 100ms

// Progress tracking based on time
const startTime = Date.now();
recordingTimer = setInterval(() => {
const elapsed = Date.now() - startTime;
const progress = Math.min(100, (elapsed / (originalDuration * 1000)) * 100);
$('#compressProgress').val(progress);
}, 100);

// Play the hidden video (muted)
processingVideo.muted = true;
processingVideo.currentTime = 0;
await processingVideo.play();

// Schedule recording stop after full duration
setTimeout(() => {
if (mediaRecorder && mediaRecorder.state === 'recording') {
mediaRecorder.stop();
}
if (recordingTimer) clearInterval(recordingTimer);
}, originalDuration * 1000);

}
catch (error)
{
$('#status').text('Error: ' + error.message);
resetState();
}
}


Подробнее здесь: https://stackoverflow.com/questions/795 ... ry-and-php
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»