Я создаю программу загрузки видео, в которой мы загружаем видео, сжимаем его с помощью 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
Проблема в сжатии и загрузке видео с использованием javaScript., JQuery и PHP ⇐ Php
Кемеровские программисты php общаются здесь
1745477056
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();
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79589911/issue-in-compressing-and-uploading-video-using-javascript-jquery-and-php[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия