Это простая программа проверки продолжительности видео, созданная с помощью Electron. Тем не менее, это не работает, как ожидалось; Я также пытался использовать Electron IP C в других проектах, но всегда терпел неудачу. Я могу успешно загрузить видео и отправить его, после чего ничего не происходит, любые ошибки или советы. Отладчик тоже ничего не показывает. Я построил новый проект с нуля, и у меня такая же проблема. Значение пути также не отображается на консоли
main. js:
const electron = require('electron'),
app = electron.app,
BrowserWindow = electron.BrowserWindow
const ffmpeg = require('fluent-ffmpeg')
const ipc = require('electron').ipcMain
let mainWindow
app.on('ready', () => {
mainWindow = new BrowserWindow({})
mainWindow.loadFile('./index.html')
})
ipc.on('video:submit', (event, path) => {
ffmpeg.ffprobe(path, (metadata) => {
event.returnValue = metadata.format.duration
})
})
index. html:
<html>
<head>
</head>
<body>
<form id="form">
<h1>Video Info</h1>
<div>
<label>Select a video</label>
<input type="file" accept="video/*" id="input">
</div>
<button type="submit" id="sb">Get info</button>
<div id="result"></div>
</form>
</body>
<script>
require('./renderer.js')
</script>
</html>
renderer. js:
const ipc = require('electron').ipcRenderer,
form = document.querySelector('#form')
let result = document.querySelector('#result')
console.log(path)
form.addEventListener('submit', () => {
const path = document.querySelector('#input').files[0].path
let reply = ipc.sendSync('video:submit', path)
result.innerHTML = 'Video is' + reply + 'seconds!'
})
РЕДАКТИРОВАТЬ
Я внес некоторые изменения в main и renderer, чтобы использовать асинхронную передачу и ответ. Я не получаю то, что хочу, но после отправки некоторого контента его имя заменяется на «Файл не выбран». Значение пути по-прежнему не печатается.
изменяется на основном. js:
ipc.on('video:submit', (event, path) => {
ffmpeg.ffprobe(path, (metadata) => {
let duration = metadata.format.duration
event.reply('duration', duration)
})
})
изменяется на устройстве визуализации. js:
form.addEventListener('submit', () => {
const path = document.querySelector('#input').files[0].path
ipc.on('duration', (event, duration) => {
console.log(duration)
})
ipc.send('video:submit', path)
result.innerHTML = 'Video is' + duration + 'seconds!'
})