@haibun/utils 1.47.0 → 1.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
set -e
|
|
4
|
+
|
|
5
|
+
# Function to handle errors
|
|
6
|
+
handle_error() {
|
|
7
|
+
echo "ERROR: Video generation failed!"
|
|
8
|
+
echo "Reason: $1"
|
|
9
|
+
exit 1
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
# Set up directories needed for Docker volume mounting
|
|
13
|
+
echo "Setting up environment..."
|
|
14
|
+
mkdir -p assets 2>/dev/null || true
|
|
15
|
+
|
|
16
|
+
# Find the installed package location
|
|
17
|
+
PACKAGE_DIR=$(npm root)/@haibun/utils
|
|
18
|
+
|
|
19
|
+
# Generate editly configuration from monitor.json
|
|
20
|
+
echo "Generating editly configuration..."
|
|
21
|
+
# Use the correct path to the built JS file
|
|
22
|
+
node "$PACKAGE_DIR/build/generate-video.js" $* || handle_error "Failed to generate editly configuration"
|
|
23
|
+
|
|
24
|
+
# Run editly using Docker directly instead of alias
|
|
25
|
+
echo "Generating video with editly..."
|
|
26
|
+
|
|
27
|
+
# Run Docker command with proper error handling
|
|
28
|
+
if ! docker run --rm -u $(id -u):$(id -g) -v $PWD:/data vimagick/editly editly-config.json; then
|
|
29
|
+
handle_error "Docker editly command failed. Check docker installation and permissions."
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
# Verify output file exists
|
|
33
|
+
OUTPUT_FILE=${2:-haibun-test-video.mp4}
|
|
34
|
+
if [ -f "$OUTPUT_FILE" ]; then
|
|
35
|
+
echo "Video generation complete!"
|
|
36
|
+
echo "Output file: $OUTPUT_FILE"
|
|
37
|
+
else
|
|
38
|
+
handle_error "Output video file was not created"
|
|
39
|
+
fi
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-video.d.ts","sourceRoot":"","sources":["../src/generate-video.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { getMediafileDuration } from '@haibun/core/build/steps/lib/tts.js';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
const generateEditlyConfig = async (logEntries, outputPath, jitter, inputFilePath, title, endTitle) => {
|
|
4
|
+
// Get the base directory from the input file path to resolve relative paths
|
|
5
|
+
const basePath = inputFilePath.substring(0, inputFilePath.lastIndexOf('/') + 1);
|
|
6
|
+
console.log(`Base path for assets: ${basePath}`);
|
|
7
|
+
// Collect assets and find videoStart
|
|
8
|
+
const assets = { video: [], speech: [], featureStart: undefined };
|
|
9
|
+
for (const entry of logEntries) {
|
|
10
|
+
const startTime = entry.messageContext?.incidentDetails?.result?.actionResult?.start;
|
|
11
|
+
if (entry.messageContext?.artifact?.artifactType === 'video') {
|
|
12
|
+
const videoPath = entry.messageContext.artifact.path;
|
|
13
|
+
const resolvedPath = `${basePath}${videoPath}`;
|
|
14
|
+
if (!fs.existsSync(resolvedPath))
|
|
15
|
+
throw new Error(`Media file not found at ${resolvedPath}`);
|
|
16
|
+
assets.video.push({ type: 'video', path: resolvedPath, start: startTime, messageContext: entry.messageContext, metadata: entry.messageContext.artifact });
|
|
17
|
+
}
|
|
18
|
+
if (entry.messageContext?.artifact?.artifactType === 'speech') {
|
|
19
|
+
const speechPath = entry.messageContext.artifact.path;
|
|
20
|
+
const resolvedPath = `${basePath}${speechPath}`;
|
|
21
|
+
if (!fs.existsSync(resolvedPath))
|
|
22
|
+
throw new Error(`Media file not found at ${resolvedPath}`);
|
|
23
|
+
assets.speech.push({ type: 'speech', path: resolvedPath, start: startTime, messageContext: entry.messageContext, metadata: entry.messageContext.artifact });
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// Extract featureStart from FEATURE_START's incidentDetails.startTime
|
|
27
|
+
const featureStartEntry = logEntries.find(e => e.messageContext?.incident === 'FEATURE_START' && e.messageContext?.incidentDetails?.startTime);
|
|
28
|
+
if (featureStartEntry) {
|
|
29
|
+
assets.featureStart = featureStartEntry.messageContext.incidentDetails.startTime;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
throw new Error('No FEATURE_START with startTime found in log.');
|
|
33
|
+
}
|
|
34
|
+
const featureEndEntry = logEntries.find(e => e.messageContext?.incident === 'FEATURE_END' && e.messageContext?.incidentDetails?.totalTime);
|
|
35
|
+
const totalDuration = featureEndEntry.messageContext.incidentDetails.totalTime / 1000;
|
|
36
|
+
if (!featureEndEntry)
|
|
37
|
+
throw new Error('No FEATURE_END with totalTime found in log.');
|
|
38
|
+
if (assets.video.length === 0)
|
|
39
|
+
throw new Error('No video asset found.');
|
|
40
|
+
const mainVideoAsset = assets.video[0];
|
|
41
|
+
const videoFileDuration = await getMediafileDuration(mainVideoAsset.path);
|
|
42
|
+
const videoLayerStart = totalDuration - videoFileDuration;
|
|
43
|
+
const videoStartFromArtifact = logEntries.find(e => e.messageContext?.artifact?.artifactType === 'video/start').messageContext.artifact.start / 1000;
|
|
44
|
+
if (videoStartFromArtifact < 1)
|
|
45
|
+
throw new Error('No video start time found in log.');
|
|
46
|
+
console.info("\nAssets:");
|
|
47
|
+
console.info("video:", assets.video.map(v => ({ start: v.start, path: v.path })));
|
|
48
|
+
console.info("speech:", assets.speech.map(s => ({ start: s.start, path: s.path })));
|
|
49
|
+
console.info("featureStart", assets.featureStart);
|
|
50
|
+
console.info("totalDuration", totalDuration);
|
|
51
|
+
console.info("videoFileDuration", videoFileDuration);
|
|
52
|
+
console.info("videoLayerStart", videoLayerStart);
|
|
53
|
+
console.info('videoStartFromArtifact', videoStartFromArtifact);
|
|
54
|
+
// this is subject to wobble, videoLayerStart or videoStartFromArtifact are forays
|
|
55
|
+
const videoStart = videoStartFromArtifact + jitter;
|
|
56
|
+
const endSlideDuration = 2;
|
|
57
|
+
// Build layers for the single clip
|
|
58
|
+
const layers = [];
|
|
59
|
+
layers.push({
|
|
60
|
+
type: 'title',
|
|
61
|
+
text: title,
|
|
62
|
+
textColor: '#cccccc',
|
|
63
|
+
backgroundColor: '#222',
|
|
64
|
+
position: 'center',
|
|
65
|
+
start: 0,
|
|
66
|
+
duration: videoStart,
|
|
67
|
+
fadeIn: 0,
|
|
68
|
+
transition: null
|
|
69
|
+
});
|
|
70
|
+
for (const speech of assets.speech) {
|
|
71
|
+
layers.push({
|
|
72
|
+
type: 'detached-audio',
|
|
73
|
+
path: speech.path,
|
|
74
|
+
cutFrom: 0,
|
|
75
|
+
start: speech.start / 1000,
|
|
76
|
+
mixVolume: 100
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
layers.push({
|
|
80
|
+
type: 'video',
|
|
81
|
+
path: mainVideoAsset.path,
|
|
82
|
+
start: videoStart
|
|
83
|
+
});
|
|
84
|
+
// Add end slide
|
|
85
|
+
layers.push({
|
|
86
|
+
type: 'title',
|
|
87
|
+
text: endTitle,
|
|
88
|
+
textColor: '#cccccc',
|
|
89
|
+
backgroundColor: '#222',
|
|
90
|
+
position: 'center',
|
|
91
|
+
start: totalDuration,
|
|
92
|
+
duration: endSlideDuration,
|
|
93
|
+
fadeIn: 0,
|
|
94
|
+
transition: null
|
|
95
|
+
});
|
|
96
|
+
layers.sort((a, b) => (a.start ?? 0) - (b.start ?? 0));
|
|
97
|
+
const config = {
|
|
98
|
+
outPath: outputPath,
|
|
99
|
+
defaults: {
|
|
100
|
+
layer: {
|
|
101
|
+
// fontPath: "/usr/share/fonts/truetype/ubuntu/UbuntuSansMono[wght].ttf"
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
clips: [
|
|
105
|
+
{
|
|
106
|
+
duration: totalDuration + endSlideDuration,
|
|
107
|
+
layers
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
};
|
|
111
|
+
return config;
|
|
112
|
+
};
|
|
113
|
+
const main = async () => {
|
|
114
|
+
const packageJson = JSON.parse(fs.readFileSync('./package.json', 'utf-8'));
|
|
115
|
+
let jitter = -2;
|
|
116
|
+
const positional = [];
|
|
117
|
+
for (const arg of process.argv.slice(2)) {
|
|
118
|
+
if (arg.startsWith('--jitter=')) {
|
|
119
|
+
const val = arg.split('=')[1];
|
|
120
|
+
if (!isNaN(Number(val))) {
|
|
121
|
+
jitter = Number(val);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
throw new Error(`Invalid value for --jitter: ${val}`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
positional.push(arg);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (positional.length < 3) {
|
|
132
|
+
console.error('Usage: node generate-video.js [--jitter=<n>] <inputFile> <outputFile> <configOutput> [title] [endTitle]');
|
|
133
|
+
process.exit(1);
|
|
134
|
+
}
|
|
135
|
+
const defaultTitle = packageJson?.description || packageJson?.name;
|
|
136
|
+
const defaultEndTitle = "End of test";
|
|
137
|
+
const [inputFile, outputFile, configOutput, title, endTitle] = positional;
|
|
138
|
+
console.info('Jitter:', jitter);
|
|
139
|
+
console.info(`Input file: ${inputFile}`);
|
|
140
|
+
console.info(`Output video file: ${outputFile}`);
|
|
141
|
+
console.info(`Config output: ${configOutput}`);
|
|
142
|
+
console.info('Title:', title);
|
|
143
|
+
console.info('End Title:', endTitle);
|
|
144
|
+
const logData = fs.readFileSync(inputFile, 'utf-8');
|
|
145
|
+
const logEntries = JSON.parse(logData);
|
|
146
|
+
console.log(`Loaded ${logEntries.length} log entries`);
|
|
147
|
+
const editlyConfig = await generateEditlyConfig(logEntries, outputFile, jitter, inputFile, title || defaultTitle, endTitle || defaultEndTitle);
|
|
148
|
+
fs.writeFileSync(configOutput, JSON.stringify(editlyConfig, null, 2));
|
|
149
|
+
console.info(`\nEditly config written to ${configOutput}`);
|
|
150
|
+
};
|
|
151
|
+
main().catch((error) => {
|
|
152
|
+
console.error('Error in main function:', error);
|
|
153
|
+
process.exit(1);
|
|
154
|
+
});
|
|
155
|
+
//# sourceMappingURL=generate-video.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-video.js","sourceRoot":"","sources":["../src/generate-video.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@haibun/utils",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.48.0",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "index.js",
|
|
7
7
|
"files": ["ref.package.json", "build/**", "scaffold/**"],
|
|
8
8
|
"bin": {
|
|
9
9
|
"scaffold": "build/scaffold/index.js",
|
|
10
10
|
"version": "build/version.js",
|
|
11
|
-
"link": "build/npm-link-haibuns.js"
|
|
11
|
+
"link": "build/npm-link-haibuns.js",
|
|
12
|
+
"generate-video": "bin/generate-video.sh"
|
|
12
13
|
},
|
|
13
14
|
"scripts": {
|
|
14
15
|
"test": "vitest run",
|
|
@@ -21,5 +22,5 @@
|
|
|
21
22
|
"author": "",
|
|
22
23
|
"license": "ISC",
|
|
23
24
|
"gitHead": "7cf9680bd922fb622fb59f1e6bf5b65284cb8fd5",
|
|
24
|
-
"dependencies": { "@haibun/cli": "1.
|
|
25
|
+
"dependencies": { "@haibun/cli": "1.48.0", "@haibun/core": "1.48.0" }
|
|
25
26
|
}
|