Diff
checker
Text
Text
Bilder
Dokumente
Excel
Ordner
Legal
Enterprise
Desktop-App
Preise
Einloggen
Diffchecker Desktop herunterladen
Texte vergleichen
Finde den Unterschied zwischen zwei Textdateien
Werkzeuge
Verlauf
Live-Editor
Gleiches ausblenden
Zeilenumbruch aus
Ansicht
Zweispaltig
Einspaltig
Vergleichsgenauigkeit
Intelligent
Wort
Zeichen
Syntaxhervorhebung
Syntax auswählen
Ignorieren
Text umwandeln
Zur ersten Änderung
Eingabe bearbeiten
Diffchecker Desktop
Der sicherste Weg, Diffchecker zu nutzen. Hol dir die Desktop-App: Deine Diffs verlassen nie deinen Computer!
Desktop holen
Untitled diff
Erstellt
vor 7 Jahren
Diff läuft nie ab
Löschen
Exportieren
Teilen
Erklären
6 Entfernungen
Zeilen
Gesamt
Entfernt
Zeichen
Gesamt
Entfernt
Um diese Funktion weiterhin zu nutzen, aktualisiere auf
Diff
checker
Pro
Preise anzeigen
56 Zeilen
Kopieren
4 Hinzufügungen
Zeilen
Gesamt
Hinzugefügt
Zeichen
Gesamt
Hinzugefügt
Um diese Funktion weiterhin zu nutzen, aktualisiere auf
Diff
checker
Pro
Preise anzeigen
54 Zeilen
Kopieren
const { PassThrough } = require('stream')
const { PassThrough } = require('stream')
const { promisify } = require('util')
const { promisify } = require('util')
const axios = require('axios')
const axios = require('axios')
const MultiStream = require('multistream')
const MultiStream = require('multistream')
const ffprobePath = require('@ffprobe-installer/ffprobe').path
const ffprobePath = require('@ffprobe-installer/ffprobe').path
const ffmpeg = require('fluent-ffmpeg')
const ffmpeg = require('fluent-ffmpeg')
ffmpeg.setFfprobePath(ffprobePath)
ffmpeg.setFfprobePath(ffprobePath)
const ffprobeAsync = promisify(ffmpeg.ffprobe)
const ffprobeAsync = promisify(ffmpeg.ffprobe)
const cl = console.log
const cl = console.log
async function run () {
async function run () {
const url = 'https://storage.arc.io/arc/homepage_demo_files/vacations.mp4'
const url = 'https://storage.arc.io/arc/homepage_demo_files/vacations.mp4'
const res = await axios.get(url, { responseType: 'stream' })
const res = await axios.get(url, { responseType: 'stream' })
const contentLength = Number(res.headers['content-length'])
const contentLength = Number(res.headers['content-length'])
const tee = new PassThrough()
const tee = new PassThrough()
Kopieren
Kopiert
Kopieren
Kopiert
const
multiPass
= new PassThrough()
const
lenPass
= new PassThrough()
const ffmpegPass = new PassThrough()
const ffmpegPass = new PassThrough()
Kopieren
Kopiert
Kopieren
Kopiert
const multistream = new MultiStream([multiPass])
res.data.pipe(tee)
res.data.pipe(tee)
Kopieren
Kopiert
Kopieren
Kopiert
tee.pipe(
multiPass
)
tee.pipe(
lenPass
)
tee.pipe(ffmpegPass)
tee.pipe(ffmpegPass)
const p1 = ffprobeAsync(ffmpegPass).then(metadata => {
const p1 = ffprobeAsync(ffmpegPass).then(metadata => {
tee.unpipe(ffmpegPass)
tee.unpipe(ffmpegPass)
// ffmpegPass.destroy()
// ffmpegPass.destroy()
return metadata
return metadata
})
})
const p2 = new Promise(resolve => {
const p2 = new Promise(resolve => {
let len = 0
let len = 0
Kopieren
Kopiert
Kopieren
Kopiert
multistream
.on('data', chunk => {
lenPass
.on('data', chunk => {
len += chunk.length
len += chunk.length
})
})
Kopieren
Kopiert
Kopieren
Kopiert
multistream
.on('end', () => {
lenPass
.on('end', () => {
resolve(len)
resolve(len)
})
})
})
})
const [res1, length] = await Promise.all([p1, p2])
const [res1, length] = await Promise.all([p1, p2])
console.log(contentLength, length)
console.log(contentLength, length)
if (contentLength !== length) {
if (contentLength !== length) {
cl('LENGTH MISMATCH')
cl('LENGTH MISMATCH')
} else {
} else {
cl('okay')
cl('okay')
}
}
}
}
run()
run()
Gespeicherte Diffs
Originaltext
Datei öffnen
const { PassThrough } = require('stream') const { promisify } = require('util') const axios = require('axios') const MultiStream = require('multistream') const ffprobePath = require('@ffprobe-installer/ffprobe').path const ffmpeg = require('fluent-ffmpeg') ffmpeg.setFfprobePath(ffprobePath) const ffprobeAsync = promisify(ffmpeg.ffprobe) const cl = console.log async function run () { const url = 'https://storage.arc.io/arc/homepage_demo_files/vacations.mp4' const res = await axios.get(url, { responseType: 'stream' }) const contentLength = Number(res.headers['content-length']) const tee = new PassThrough() const multiPass = new PassThrough() const ffmpegPass = new PassThrough() const multistream = new MultiStream([multiPass]) res.data.pipe(tee) tee.pipe(multiPass) tee.pipe(ffmpegPass) const p1 = ffprobeAsync(ffmpegPass).then(metadata => { tee.unpipe(ffmpegPass) // ffmpegPass.destroy() return metadata }) const p2 = new Promise(resolve => { let len = 0 multistream.on('data', chunk => { len += chunk.length }) multistream.on('end', () => { resolve(len) }) }) const [res1, length] = await Promise.all([p1, p2]) console.log(contentLength, length) if (contentLength !== length) { cl('LENGTH MISMATCH') } else { cl('okay') } } run()
Bearbeitung
Datei öffnen
const { PassThrough } = require('stream') const { promisify } = require('util') const axios = require('axios') const MultiStream = require('multistream') const ffprobePath = require('@ffprobe-installer/ffprobe').path const ffmpeg = require('fluent-ffmpeg') ffmpeg.setFfprobePath(ffprobePath) const ffprobeAsync = promisify(ffmpeg.ffprobe) const cl = console.log async function run () { const url = 'https://storage.arc.io/arc/homepage_demo_files/vacations.mp4' const res = await axios.get(url, { responseType: 'stream' }) const contentLength = Number(res.headers['content-length']) const tee = new PassThrough() const lenPass = new PassThrough() const ffmpegPass = new PassThrough() res.data.pipe(tee) tee.pipe(lenPass) tee.pipe(ffmpegPass) const p1 = ffprobeAsync(ffmpegPass).then(metadata => { tee.unpipe(ffmpegPass) // ffmpegPass.destroy() return metadata }) const p2 = new Promise(resolve => { let len = 0 lenPass.on('data', chunk => { len += chunk.length }) lenPass.on('end', () => { resolve(len) }) }) const [res1, length] = await Promise.all([p1, p2]) console.log(contentLength, length) if (contentLength !== length) { cl('LENGTH MISMATCH') } else { cl('okay') } } run()
Unterschied finden