浏览代码

rename jvcl -> jvc

master
Jonathan Cobb 4 年前
父节点
当前提交
e647944b0e
共有 66 个文件被更改,包括 319 次插入319 次删除
  1. +20
    -20
      README.md
  2. +2
    -2
      bin/jaddsilence
  3. +3
    -3
      bin/jconcat
  4. +2
    -2
      bin/jletterbox
  5. +2
    -2
      bin/jmergeaudio
  6. +2
    -2
      bin/jrmtrack
  7. +3
    -3
      bin/jscale
  8. +2
    -2
      bin/jsplit
  9. +2
    -2
      bin/jtrim
  10. +9
    -9
      bin/jvc
  11. +19
    -19
      bin/jvc_common
  12. +2
    -2
      docs/complex_example.md
  13. +2
    -2
      docs/concepts.md
  14. +22
    -22
      docs/running.md
  15. +2
    -2
      pom.xml
  16. +11
    -11
      src/main/java/jvc/main/Jvc.java
  17. +5
    -5
      src/main/java/jvc/main/JvcOptions.java
  18. +1
    -1
      src/main/java/jvc/model/JArtifact.java
  19. +7
    -7
      src/main/java/jvc/model/JAsset.java
  20. +4
    -4
      src/main/java/jvc/model/JFileExtension.java
  21. +1
    -1
      src/main/java/jvc/model/JFormat.java
  22. +2
    -2
      src/main/java/jvc/model/JSpec.java
  23. +2
    -2
      src/main/java/jvc/model/JTrackId.java
  24. +1
    -1
      src/main/java/jvc/model/JsObjectView.java
  25. +1
    -1
      src/main/java/jvc/model/info/JMedia.java
  26. +3
    -3
      src/main/java/jvc/model/info/JMediaInfo.java
  27. +1
    -1
      src/main/java/jvc/model/info/JTrack.java
  28. +2
    -2
      src/main/java/jvc/model/info/JTrackType.java
  29. +3
    -3
      src/main/java/jvc/model/operation/JMultiOperationContext.java
  30. +6
    -6
      src/main/java/jvc/model/operation/JMultiSourceOperation.java
  31. +4
    -4
      src/main/java/jvc/model/operation/JOperation.java
  32. +3
    -3
      src/main/java/jvc/model/operation/JOperationContextBase.java
  33. +3
    -3
      src/main/java/jvc/model/operation/JSingleOperationContext.java
  34. +8
    -8
      src/main/java/jvc/model/operation/JSingleSourceOperation.java
  35. +2
    -2
      src/main/java/jvc/operation/AddSilenceOperation.java
  36. +2
    -2
      src/main/java/jvc/operation/ConcatOperation.java
  37. +2
    -2
      src/main/java/jvc/operation/HasStartAndEnd.java
  38. +4
    -4
      src/main/java/jvc/operation/HasWidthAndHeight.java
  39. +3
    -3
      src/main/java/jvc/operation/KenBurnsOperation.java
  40. +2
    -2
      src/main/java/jvc/operation/LetterboxOperation.java
  41. +3
    -3
      src/main/java/jvc/operation/MergeAudioOperation.java
  42. +3
    -3
      src/main/java/jvc/operation/OverlayOperation.java
  43. +10
    -10
      src/main/java/jvc/operation/RemoveTrackOperation.java
  44. +3
    -3
      src/main/java/jvc/operation/ScaleOperation.java
  45. +3
    -3
      src/main/java/jvc/operation/SplitOperation.java
  46. +2
    -2
      src/main/java/jvc/operation/TrimOperation.java
  47. +8
    -8
      src/main/java/jvc/operation/exec/AddSilenceExec.java
  48. +8
    -8
      src/main/java/jvc/operation/exec/ConcatExec.java
  49. +6
    -6
      src/main/java/jvc/operation/exec/ExecBase.java
  50. +9
    -9
      src/main/java/jvc/operation/exec/KenBurnsExec.java
  51. +8
    -8
      src/main/java/jvc/operation/exec/LetterboxExec.java
  52. +8
    -8
      src/main/java/jvc/operation/exec/MergeAudioExec.java
  53. +8
    -8
      src/main/java/jvc/operation/exec/OverlayExec.java
  54. +10
    -10
      src/main/java/jvc/operation/exec/RemoveTrackExec.java
  55. +8
    -8
      src/main/java/jvc/operation/exec/ScaleExec.java
  56. +6
    -6
      src/main/java/jvc/operation/exec/SingleOrMultiSourceExecBase.java
  57. +7
    -7
      src/main/java/jvc/operation/exec/SplitExec.java
  58. +8
    -8
      src/main/java/jvc/operation/exec/TrimExec.java
  59. +5
    -5
      src/main/java/jvc/service/AssetManager.java
  60. +1
    -1
      src/main/java/jvc/service/JIndexType.java
  61. +2
    -2
      src/main/java/jvc/service/OperationEngine.java
  62. +5
    -5
      src/main/java/jvc/service/Toolbox.java
  63. +4
    -4
      src/main/java/jvc/service/json/JOperationFactory.java
  64. +1
    -1
      src/main/java/jvc/service/json/JOperationModule.java
  65. +1
    -1
      src/main/java/jvc/service/json/JOperationType.java
  66. +5
    -5
      src/test/java/jvc/test/BasicTest.java

+ 20
- 20
README.md 查看文件

@@ -1,9 +1,9 @@
# Javicle - a JSON Video Composition Language
JVCL (pronounced "Javicle") is a JSON DSL for audio/video transformations.
JVC (pronounced "Javicle") is a JSON DSL for audio/video transformations.

Under the hood, it's all shell commands: `ffmpeg`, `mediainfo` and so on.

JVCL provides higher-level semantics for working with these lower level tools.
JVC provides higher-level semantics for working with these lower level tools.

# Motivation
I don't do much video editing, so I've never bothered to learn iMovie or any
@@ -15,7 +15,7 @@ that requires some deep research into
[ffmpeg filter arcana](https://ffmpeg.org/ffmpeg-filters.html)
and before I know it, the day is done.

I created JVCL to make it really easy to do the most common things people
I created JVC to make it really easy to do the most common things people
usually do to videos: splitting, concatenating, letterboxing, overlaying
one video onto another, and so on.

@@ -30,7 +30,7 @@ With ffmpeg and bash, you might do something like this:
ffmpeg -i /tmp/my/source.mp4 -ss ${i} -t $((i+INCR)) /tmp/my/slice_${i}_$((i+INCR)).mp4
done
```
With JVCL, you'd write this spec file and save it to a file
With JVC, you'd write this spec file and save it to a file
(for example `my-spec.jvc`):
```json
{
@@ -45,47 +45,47 @@ With JVCL, you'd write this spec file and save it to a file
```
and then run it like this:
```shell script
jvcl my-spec.jvc
jvc my-spec.jvc
```
Yes, the JVCL is longer, but I think many would agree it is easier to read
Yes, the JVC is longer, but I think many would agree it is easier to read
and maintain.

**As the number of media assets and operations grows, hand-crafted shell
scripts with magical ffmpeg incantations become ever more inscrutable.**

JVCL is designed for readability and maintainability. JVCL will continue to
JVC is designed for readability and maintainability. JVC will continue to
evolve towards greater coverage of the full capabilities of ffmpeg.

# Who is JVCL not for?
If you like GUIs, JVCL is probably not for you.
# Who is JVC not for?
If you like GUIs, JVC is probably not for you.

JVCL is not a replacement for Final Cut Pro or even iMovie.
JVC is not a replacement for Final Cut Pro or even iMovie.

# Who is JVCL for?
JVCL is for people who like CLIs and automation.
# Who is JVC for?
JVC is for people who like CLIs and automation.

JVCL is for people with relatively simple video composition needs (for now),
JVC is for people with relatively simple video composition needs (for now),
since the range of operations supported is limited.

# Requirements
* Java 11
* Maven 3

The first time you run `jvcl`, it will automatically build the JVCL jar file
The first time you run `jvc`, it will automatically build the JVC jar file
from sources, using maven and javac. This takes a little time but only needs
to be done once.

# Running JVCL
Learn more about [running `jvcl`](docs/running.md) and other useful tools.
# Running JVC
Learn more about [running `jvc`](docs/running.md) and other useful tools.

# JVCL Concepts
# JVC Concepts
Learn about [Assets and Operations](docs/concepts.md), the core concepts
of JVCL.
of JVC.

# Supported Operations
Today, JVCL supports several basic operations.
Today, JVC supports several basic operations.

For each operation listed below, the header links to an example from the JVCL
For each operation listed below, the header links to an example from the JVC
test suite.

### [add-silence](src/test/resources/tests/test_add_silence.jvc)


+ 2
- 2
bin/jaddsilence 查看文件

@@ -13,7 +13,7 @@
#
SCRIPT="${0}"
SCRIPT_DIR="$(cd "$(dirname "${SCRIPT}")" && pwd)"
. "${SCRIPT_DIR}"/jvcl_common
. "${SCRIPT_DIR}"/jvc_common

IN_FILE="${1?no video-file provided}"
OUT_FILE="${2?no out-file provided}"
@@ -38,4 +38,4 @@ echo "
}
]
}
" | "${SCRIPT_DIR}"/jvcl ${JVCL_OPTIONS}
" | "${SCRIPT_DIR}"/jvc ${JVC_OPTIONS}

+ 3
- 3
bin/jconcat 查看文件

@@ -13,7 +13,7 @@
# Shell wildcards will match files in non-deterministic order, meaning that
# your combined file will be assembled out of order.
#
# If you are combining files that were split with `jvcl` (or `jsplit`), then
# If you are combining files that were split with `jvc` (or `jsplit`), then
# sorting them by time (oldest first) is sufficient.
#
# For example, do this:
@@ -26,7 +26,7 @@
#
SCRIPT="${0}"
SCRIPT_DIR="$(cd "$(dirname "${SCRIPT}")" && pwd)"
. "${SCRIPT_DIR}"/jvcl_common
. "${SCRIPT_DIR}"/jvc_common

OUT_FILE="${1?no out-file provided}"
shift
@@ -63,4 +63,4 @@ done)
}
]
}
" | "${SCRIPT_DIR}"/jvcl -z ${JVCL_OPTIONS}
" | "${SCRIPT_DIR}"/jvc -z ${JVC_OPTIONS}

+ 2
- 2
bin/jletterbox 查看文件

@@ -16,7 +16,7 @@
#
SCRIPT="${0}"
SCRIPT_DIR="$(cd "$(dirname "${SCRIPT}")" && pwd)"
. "${SCRIPT_DIR}"/jvcl_common
. "${SCRIPT_DIR}"/jvc_common

IN_FILE="${1?no in-file provided}"
OUT_FILE="${2?no out-file provided}"
@@ -43,4 +43,4 @@ echo "
}
]
}
" | "${SCRIPT_DIR}"/jvcl ${JVCL_OPTIONS}
" | "${SCRIPT_DIR}"/jvc ${JVC_OPTIONS}

+ 2
- 2
bin/jmergeaudio 查看文件

@@ -14,7 +14,7 @@
#
SCRIPT="${0}"
SCRIPT_DIR="$(cd "$(dirname "${SCRIPT}")" && pwd)"
. "${SCRIPT_DIR}"/jvcl_common
. "${SCRIPT_DIR}"/jvc_common

VIDEO_FILE="${1?no video-file provided}"
AUDIO_FILE="${2?no audio-file provided}"
@@ -40,4 +40,4 @@ echo "
}
]
}
" | "${SCRIPT_DIR}"/jvcl ${JVCL_OPTIONS}
" | "${SCRIPT_DIR}"/jvc ${JVC_OPTIONS}

+ 2
- 2
bin/jrmtrack 查看文件

@@ -14,7 +14,7 @@
#
SCRIPT="${0}"
SCRIPT_DIR="$(cd "$(dirname "${SCRIPT}")" && pwd)"
. "${SCRIPT_DIR}"/jvcl_common
. "${SCRIPT_DIR}"/jvc_common

IN_FILE="${1?no in-file provided}"
OUT_FILE="${2?no out-file provided}"
@@ -41,4 +41,4 @@ echo "
}
]
}
" | "${SCRIPT_DIR}"/jvcl ${JVCL_OPTIONS}
" | "${SCRIPT_DIR}"/jvc ${JVC_OPTIONS}

+ 3
- 3
bin/jscale 查看文件

@@ -16,7 +16,7 @@
#
SCRIPT="${0}"
SCRIPT_DIR="$(cd "$(dirname "${SCRIPT}")" && pwd)"
. "${SCRIPT_DIR}"/jvcl_common
. "${SCRIPT_DIR}"/jvc_common

IN_FILE="${1?no in-file provided}"
OUT_FILE="${2?no out-file provided}"
@@ -43,7 +43,7 @@ if [[ -z "${HEIGHT}" ]] ; then
}
]
}
" | "${SCRIPT_DIR}"/jvcl ${JVCL_OPTIONS}
" | "${SCRIPT_DIR}"/jvc ${JVC_OPTIONS}
else
echo "
{
@@ -63,5 +63,5 @@ else
}
]
}
" | "${SCRIPT_DIR}"/jvcl ${JVCL_OPTIONS}
" | "${SCRIPT_DIR}"/jvc ${JVC_OPTIONS}
fi

+ 2
- 2
bin/jsplit 查看文件

@@ -14,7 +14,7 @@
#
SCRIPT="${0}"
SCRIPT_DIR="$(cd "$(dirname "${SCRIPT}")" && pwd)"
. "${SCRIPT_DIR}"/jvcl_common
. "${SCRIPT_DIR}"/jvc_common

IN_FILE="${1?no in-file provided}"
OUT_DIR="${2?no out-dir provided}"
@@ -46,4 +46,4 @@ echo "
}
]
}
" | "${SCRIPT_DIR}"/jvcl ${JVCL_OPTIONS}
" | "${SCRIPT_DIR}"/jvc ${JVC_OPTIONS}

+ 2
- 2
bin/jtrim 查看文件

@@ -13,7 +13,7 @@
#
SCRIPT="${0}"
SCRIPT_DIR="$(cd "$(dirname "${SCRIPT}")" && pwd)"
. "${SCRIPT_DIR}"/jvcl_common
. "${SCRIPT_DIR}"/jvc_common

IN_FILE="${1?no in-file provided}"
OUT_FILE="${2?no out-file provided}"
@@ -38,4 +38,4 @@ echo "
}
]
}
" | "${SCRIPT_DIR}"/jvcl ${JVCL_OPTIONS}
" | "${SCRIPT_DIR}"/jvc ${JVC_OPTIONS}

bin/jvcl → bin/jvc 查看文件

@@ -1,30 +1,30 @@
#!/bin/bash
#
# Run JVCL on a spec
# Run JVC on a spec
#
# Usage:
#
# jvcl [-t temp-dir] [-n] spec-file
# jvc [-t temp-dir] [-n] spec-file
#
# spec-file : the JVCL to run. If omitted, read a spec from stdin
# spec-file : the JVC to run. If omitted, read a spec from stdin
#
# -t temp-dir : where to write generated assets. If omitted, jvcl will
# -t temp-dir : where to write generated assets. If omitted, jvc will
# create a new temporary directory
#
# -n : print commands that would have been run, but don't
# actually run anything
#
# Note: If the JVCL jar does not exist, it will be built from source.
# Note: If the JVC jar does not exist, it will be built from source.
# The first time you run it, it might take a long time to start up.
#
SCRIPT="${0}"
SCRIPT_DIR="$(cd "$(dirname "${SCRIPT}")" && pwd)"
JVCL_SKIP_ENV_VAR_HELP=1
. "${SCRIPT_DIR}"/jvcl_common
JVC_SKIP_ENV_VAR_HELP=1
. "${SCRIPT_DIR}"/jvc_common

DEBUG=""
if [[ -n "${JVCL_DEBUG}" ]] ; then
if [[ -n "${JVC_DEBUG}" ]] ; then
DEBUG="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005"
fi

java -cp "${JVCL_JAR}" ${DEBUG} jvcl.main.Jvcl "${@}"
java -cp "${JVC_JAR}" ${DEBUG} jvc.main.Jvc "${@}"

bin/jvcl_common → bin/jvc_common 查看文件

@@ -27,13 +27,13 @@ function handle_help_request() {
break
fi
done <"${1}"
if [[ -z "${JVCL_SKIP_ENV_VAR_HELP}" ]] ; then
if [[ -z "${JVC_SKIP_ENV_VAR_HELP}" ]] ; then
echo "# Environment Variables
#
# JVCL_SCRATCH_DIR : Use this as the scratch directory
# JVC_SCRATCH_DIR : Use this as the scratch directory
# Default is to create a new temp directory
#
# JVCL_NO_EXEC : If set to anything, print the commands that would
# JVC_NO_EXEC : If set to anything, print the commands that would
# have run but do not execute anything
#
"
@@ -53,41 +53,41 @@ elif [[ ${JAVA_VERSION} -lt 11 ]] ; then
die "Java 11 (or higher) not installed (java -version check failed)"
fi

JVCL_DIR="$(cd "$(dirname "${0}")"/.. && pwd)"
JVCL_JAR="$(find "${JVCL_DIR}"/target -type f -name "jvcl-*-prod.jar" | head -1)"
if [[ -z "${JVCL_JAR}" ]] ; then
JVC_DIR="$(cd "$(dirname "${0}")"/.. && pwd)"
JVC_JAR="$(find "${JVC_DIR}"/target -type f -name "jvc-*-prod.jar" | head -1)"
if [[ -z "${JVC_JAR}" ]] ; then
# Ensure maven is installed
if [[ -z "$(which mvn)" ]] ; then
die "Maven not installed (mvn command not found on PATH), cannot build JVCL jar"
die "Maven not installed (mvn command not found on PATH), cannot build JVC jar"
fi

# Build and install utility library
pushd "${JVCL_DIR}"/utils/cobbzilla-utils || die "Error changing directories to ${JVCL_DIR}/utils/cobbzilla-utils"
pushd "${JVC_DIR}"/utils/cobbzilla-utils || die "Error changing directories to ${JVC_DIR}/utils/cobbzilla-utils"
mvn -DskipTests=true clean install || die "Error building cobbzilla-utils library"
popd || die "popd error"

# Build jvcl uberjar
pushd "${JVCL_DIR}" || die "Error changing directories to ${JVCL_DIR}"
mvn -DskipTests=true -Puberjar clean package || die "Error building JVCL jar"
# Build jvc uberjar
pushd "${JVC_DIR}" || die "Error changing directories to ${JVC_DIR}"
mvn -DskipTests=true -Puberjar clean package || die "Error building JVC jar"
popd || die "popd error"

JVCL_JAR="$(find "${JVCL_DIR}"/target -type f -name "jvcl-*-prod.jar" | head -1)"
if [[ -z "${JVCL_JAR}" ]] ; then
die "No JVCL jar file found after successful build"
JVC_JAR="$(find "${JVC_DIR}"/target -type f -name "jvc-*-prod.jar" | head -1)"
if [[ -z "${JVC_JAR}" ]] ; then
die "No JVC jar file found after successful build"
fi
fi

SCRATCH_DIR=""
NO_EXEC=""
if [[ -z "${JVCL_SKIP_ENV_VAR_HELP}" ]] ; then
if [[ -n "${JVCL_SCRATCH_DIR}" ]] ; then
SCRATCH_DIR="--temp-dir ${JVCL_SCRATCH_DIR}"
if [[ -z "${JVC_SKIP_ENV_VAR_HELP}" ]] ; then
if [[ -n "${JVC_SCRATCH_DIR}" ]] ; then
SCRATCH_DIR="--temp-dir ${JVC_SCRATCH_DIR}"
fi

if [[ -n "${JVCL_NO_EXEC}" ]] ; then
if [[ -n "${JVC_NO_EXEC}" ]] ; then
NO_EXEC="--no-exec"
fi
fi
JVCL_OPTIONS="${SCRATCH_DIR} ${NO_EXEC}"
JVC_OPTIONS="${SCRATCH_DIR} ${NO_EXEC}"

handle_help_request "${0}" "${1}"

+ 2
- 2
docs/complex_example.md 查看文件

@@ -2,13 +2,13 @@
Here is a complex example using multiple assets and operations.

Note that comments, which are not usually legal in JSON, are allowed in
JVCL files.
JVC files.

If you have other JSON-aware tools that need to read JVLC files, you may not
want to use this comment syntax. The `asset` and `operation` JSON objects also
support a `comment` field, which can be used as well.

<sub><sup>Doug C: I promise these will always be just comments; jvcl will never
<sub><sup>Doug C: I promise these will always be just comments; jvc will never
use [comments as parsing directives or otherwise break interoperability](https://web.archive.org/web/20120507155137/https://plus.google.com/118095276221607585885/posts/RK8qyGVaGSr) (note: disable javascript to view this link)</sup></sub>

```js


+ 2
- 2
docs/concepts.md 查看文件

@@ -1,12 +1,12 @@
# Concepts
In JVCL the main concepts are assets and operations.
In JVC the main concepts are assets and operations.

## Assets
Assets are your media files: generally image, audio and video files.

All assets have a name and a path.

Input assets are defined using the `assets` array of a JVCL spec.
Input assets are defined using the `assets` array of a JVC spec.

For input assets, the path can be a file or a URL. URL-based assets will be downloaded
to the scratch directory. This can be overridden using the `dest` property on the asset.


+ 22
- 22
docs/running.md 查看文件

@@ -1,12 +1,12 @@
# Running JVCL
# Running JVC

## The `jvcl` Script
The `bin/jvcl` script is the primary way to transform video assets with JVCL.
## The `jvc` Script
The `bin/jvc` script is the primary way to transform video assets with JVC.

## Operation-specific scripts
There are other scripts in [`bin`](../bin) that perform a single operation using
command-line arguments. If you need to do a quick operation and don't want to write
a JVCL spec, use one of these tools.
a JVC spec, use one of these tools.

For example, to extract the first 5 seconds of a video:
```shell script
@@ -18,65 +18,65 @@ All commands accept a `-h` / `--help` option, use this to print usage informatio
jscale -h
```

## JVCL Spec Files
A JVCL spec is just a regular JSON file that happens to contain a single JSON object,
## JVC Spec Files
A JVC spec is just a regular JSON file that happens to contain a single JSON object,
whose properties are `assets` and `operations`.

When you run `jvcl` on a spec file, it will load the `assets`, then perform the `operations` in order.
When you run `jvc` on a spec file, it will load the `assets`, then perform the `operations` in order.

Learn more about [Assets and Operations](concepts.md)

Unlike most JSON, comments *are* allowed in JVCL spec files:
Unlike most JSON, comments *are* allowed in JVC spec files:
* A line comment starts with `//` and continue to the end of the line
* A multi-line block starts with `/*` and ends with `*/`

## Writing a JVCL Spec
## Writing a JVC Spec
The easiest way to write a spec is to copy one of the
[test specs](../src/test/resources/tests) and edit it.

There examples for every JVCL operation.
There examples for every JVC operation.

## Executing a JVCL Spec
## Executing a JVC Spec
To execute a spec stored in the file `my-spec.json`, you would run:
```shell script
jvcl my-spec.jvc
jvc my-spec.jvc
```
or use stdin:
```shell script
cat my-spec.jvc | jvcl
cat my-spec.jvc | jvc
```

## Command Line Options

#### Scratch Directory
Output assets will be placed in the scratch directory, unless otherwise specified
in the spec file. By default, JVCL will create a new temporary directory to use as the scratch
in the spec file. By default, JVC will create a new temporary directory to use as the scratch
directory. You can set the scratch directory explicitly using the `-t` or `--temp-dir` option:
```shell script
jvcl -t /some/tempdir my-spec.json
jvc -t /some/tempdir my-spec.json
```

When using the other tools in `bin`, you can set the scratch directory via the
`JVCL_SCRATCH_DIR` environment variable. If the `JVCL_SCRATCH_DIR` references a
`JVC_SCRATCH_DIR` environment variable. If the `JVC_SCRATCH_DIR` references a
directory that does not exist, it will be created.

#### Dry Run
Use the `-n` or `--no-exec` option to print out the commands that would have been run,
but do not actually run anything.
```shell script
jvcl -n my-spec.json # will not run any ffmpeg commands
jvc -n my-spec.json # will not run any ffmpeg commands
```
Note that this breaks JVCL operations that require information from any assets created by
Note that this breaks JVC operations that require information from any assets created by
previous operations: since the command did not actually run, the intermediate asset was
never created.

When using the other tools in `bin`, you can set the "no exec" flag via the
`JVCL_NO_EXEC` environment variable. If the `JVCL_NO_EXEC` is non-empty, then
the script will pass the `-n` flag when it calls `jvcl` and commands will
`JVC_NO_EXEC` environment variable. If the `JVC_NO_EXEC` is non-empty, then
the script will pass the `-n` flag when it calls `jvc` and commands will
be printed out instead of actually being run.

#### Help
To view a list of all `jvcl` command-line options, run `jvcl -h` or `jvcl --help`
To view a list of all `jvc` command-line options, run `jvc -h` or `jvc --help`

# What's Next?
Learn about [Assets and Operations](concepts.md), the core concepts of JVCL.
Learn about [Assets and Operations](concepts.md), the core concepts of JVC.

+ 2
- 2
pom.xml 查看文件

@@ -54,7 +54,7 @@ javicle is available under the Apache License, version 2: http://www.apache.org/
<artifactId>maven-shade-plugin</artifactId>
<version>2.1</version>
<configuration>
<finalName>jvcl-${project.version}-prod</finalName>
<finalName>jvc-${project.version}-prod</finalName>
</configuration>
<executions>
<execution>
@@ -65,7 +65,7 @@ javicle is available under the Apache License, version 2: http://www.apache.org/
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>jvcl.main.Jvcl</mainClass>
<mainClass>jvc.main.Jvc</mainClass>
</transformer>
</transformers>
<!-- Exclude signed jars to avoid errors


src/main/java/jvcl/main/Jvcl.java → src/main/java/jvc/main/Jvc.java 查看文件

@@ -1,10 +1,10 @@
package jvcl.main;
package jvc.main;


import jvcl.model.JSpec;
import jvcl.service.AssetManager;
import jvcl.service.OperationEngine;
import jvcl.service.Toolbox;
import jvc.model.JSpec;
import jvc.service.AssetManager;
import jvc.service.OperationEngine;
import jvc.service.Toolbox;
import org.cobbzilla.util.main.BaseMain;

import java.util.Arrays;
@@ -12,21 +12,21 @@ import java.util.Arrays;
import static org.cobbzilla.util.daemon.ZillaRuntime.empty;
import static org.cobbzilla.util.json.JsonUtil.json;

public class Jvcl extends BaseMain<JvclOptions> {
public class Jvc extends BaseMain<JvcOptions> {

public static void main (String[] args) { main(Jvcl.class, args); }
public static void main (String[] args) { main(Jvc.class, args); }

@Override protected void run() throws Exception {
final JvclOptions options = getOptions();
final JvcOptions options = getOptions();
final JSpec spec = options.getSpec();
final boolean noExec = options.isNoExec();

if (empty(spec.getAssets())) {
err(">>> jvcl: no assets defined in spec");
err(">>> jvc: no assets defined in spec");
return;
}
if (empty(spec.getOperations())) {
err(">>> jvcl: no operations defined in spec");
err(">>> jvc: no operations defined in spec");
return;
}

@@ -39,7 +39,7 @@ public class Jvcl extends BaseMain<JvclOptions> {
Arrays.stream(spec.getOperations()).forEach(opEngine::perform);

final int opCount = spec.getOperations().length;
err(">>> jvcl: completed " + opCount + " operation"+(opCount>1?"s":""));
err(">>> jvc: completed " + opCount + " operation"+(opCount>1?"s":""));
out(json(assetManager.getAssets()));
}


src/main/java/jvcl/main/JvclOptions.java → src/main/java/jvc/main/JvcOptions.java 查看文件

@@ -1,6 +1,6 @@
package jvcl.main;
package jvc.main;

import jvcl.model.JSpec;
import jvc.model.JSpec;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
@@ -11,14 +11,14 @@ import org.kohsuke.args4j.Option;

import java.io.File;

import static jvcl.service.Toolbox.JSON_MAPPER;
import static jvc.service.Toolbox.JSON_MAPPER;
import static org.cobbzilla.util.daemon.ZillaRuntime.*;
import static org.cobbzilla.util.io.FileUtil.abs;
import static org.cobbzilla.util.io.FileUtil.toStringOrDie;
import static org.cobbzilla.util.json.JsonUtil.json;

@Slf4j
public class JvclOptions extends BaseMainOptions {
public class JvcOptions extends BaseMainOptions {

public static final String USAGE_SPEC = "Spec file to run. If omitted, read spec from stdin.";
@Argument(usage=USAGE_SPEC)
@@ -30,7 +30,7 @@ public class JvclOptions extends BaseMainOptions {
if (!specFile.exists() || !specFile.canRead()) return die("File not found or unreadable: "+abs(specFile));
json = toStringOrDie(specFile);
} else {
log.info("reading JVCL spec from stdin...");
log.info("reading JVC spec from stdin...");
json = readStdin();
}
try {

src/main/java/jvcl/model/JArtifact.java → src/main/java/jvc/model/JArtifact.java 查看文件

@@ -1,4 +1,4 @@
package jvcl.model;
package jvc.model;

import lombok.Getter;
import lombok.Setter;

src/main/java/jvcl/model/JAsset.java → src/main/java/jvc/model/JAsset.java 查看文件

@@ -1,12 +1,12 @@
package jvcl.model;
package jvc.model;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.JsonNode;
import jvcl.model.info.JMediaInfo;
import jvcl.model.info.JTrack;
import jvcl.model.info.JTrackType;
import jvcl.service.AssetManager;
import jvcl.service.Toolbox;
import jvc.model.info.JMediaInfo;
import jvc.model.info.JTrack;
import jvc.model.info.JTrackType;
import jvc.service.AssetManager;
import jvc.service.Toolbox;
import lombok.*;
import lombok.experimental.Accessors;
import lombok.extern.slf4j.Slf4j;
@@ -25,7 +25,7 @@ import java.util.regex.Pattern;
import java.util.stream.Collectors;

import static java.util.Comparator.comparing;
import static jvcl.service.Toolbox.divideBig;
import static jvc.service.Toolbox.divideBig;
import static org.cobbzilla.util.daemon.ZillaRuntime.*;
import static org.cobbzilla.util.http.HttpSchemes.isHttpOrHttps;
import static org.cobbzilla.util.io.FileUtil.*;

src/main/java/jvcl/model/JFileExtension.java → src/main/java/jvc/model/JFileExtension.java 查看文件

@@ -1,12 +1,12 @@
package jvcl.model;
package jvc.model;

import com.fasterxml.jackson.annotation.JsonCreator;
import jvcl.model.info.JTrack;
import jvcl.model.info.JTrackType;
import jvc.model.info.JTrack;
import jvc.model.info.JTrackType;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;

import static jvcl.model.info.JTrackType.*;
import static jvc.model.info.JTrackType.*;
import static org.cobbzilla.util.daemon.ZillaRuntime.die;

@AllArgsConstructor @Slf4j

src/main/java/jvcl/model/JFormat.java → src/main/java/jvc/model/JFormat.java 查看文件

@@ -1,4 +1,4 @@
package jvcl.model;
package jvc.model;

import lombok.Getter;
import lombok.NoArgsConstructor;

src/main/java/jvcl/model/JSpec.java → src/main/java/jvc/model/JSpec.java 查看文件

@@ -1,6 +1,6 @@
package jvcl.model;
package jvc.model;

import jvcl.model.operation.JOperation;
import jvc.model.operation.JOperation;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

src/main/java/jvcl/model/JTrackId.java → src/main/java/jvc/model/JTrackId.java 查看文件

@@ -1,7 +1,7 @@
package jvcl.model;
package jvc.model;

import com.fasterxml.jackson.databind.JsonNode;
import jvcl.model.info.JTrackType;
import jvc.model.info.JTrackType;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

src/main/java/jvcl/model/JsObjectView.java → src/main/java/jvc/model/JsObjectView.java 查看文件

@@ -1,4 +1,4 @@
package jvcl.model;
package jvc.model;

public interface JsObjectView {


src/main/java/jvcl/model/info/JMedia.java → src/main/java/jvc/model/info/JMedia.java 查看文件

@@ -1,4 +1,4 @@
package jvcl.model.info;
package jvc.model.info;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;

src/main/java/jvcl/model/info/JMediaInfo.java → src/main/java/jvc/model/info/JMediaInfo.java 查看文件

@@ -1,7 +1,7 @@
package jvcl.model.info;
package jvc.model.info;

import jvcl.model.JFileExtension;
import jvcl.model.JFormat;
import jvc.model.JFileExtension;
import jvc.model.JFormat;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

src/main/java/jvcl/model/info/JTrack.java → src/main/java/jvc/model/info/JTrack.java 查看文件

@@ -1,4 +1,4 @@
package jvcl.model.info;
package jvc.model.info;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.JsonNode;

src/main/java/jvcl/model/info/JTrackType.java → src/main/java/jvc/model/info/JTrackType.java 查看文件

@@ -1,7 +1,7 @@
package jvcl.model.info;
package jvc.model.info;

import com.fasterxml.jackson.annotation.JsonCreator;
import jvcl.model.JFileExtension;
import jvc.model.JFileExtension;
import lombok.AllArgsConstructor;

@AllArgsConstructor

src/main/java/jvcl/model/operation/JMultiOperationContext.java → src/main/java/jvc/model/operation/JMultiOperationContext.java 查看文件

@@ -1,7 +1,7 @@
package jvcl.model.operation;
package jvc.model.operation;

import jvcl.model.JAsset;
import jvcl.model.JFileExtension;
import jvc.model.JAsset;
import jvc.model.JFileExtension;
import lombok.NoArgsConstructor;

import java.util.List;

src/main/java/jvcl/model/operation/JMultiSourceOperation.java → src/main/java/jvc/model/operation/JMultiSourceOperation.java 查看文件

@@ -1,15 +1,15 @@
package jvcl.model.operation;
package jvc.model.operation;

import jvcl.model.JAsset;
import jvcl.model.JFileExtension;
import jvcl.service.AssetManager;
import jvc.model.JAsset;
import jvc.model.JFileExtension;
import jvc.service.AssetManager;
import lombok.Getter;
import lombok.Setter;

import java.util.List;

import static jvcl.model.JAsset.flattenAssetList;
import static jvcl.model.JAsset.json2asset;
import static jvc.model.JAsset.flattenAssetList;
import static jvc.model.JAsset.json2asset;
import static org.cobbzilla.util.daemon.ZillaRuntime.die;
import static org.cobbzilla.util.daemon.ZillaRuntime.empty;


src/main/java/jvcl/model/operation/JOperation.java → src/main/java/jvc/model/operation/JOperation.java 查看文件

@@ -1,9 +1,9 @@
package jvcl.model.operation;
package jvc.model.operation;

import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.databind.JsonNode;
import jvcl.model.JAsset;
import jvcl.operation.exec.ExecBase;
import jvc.model.JAsset;
import jvc.operation.exec.ExecBase;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@@ -13,7 +13,7 @@ import lombok.extern.slf4j.Slf4j;
import java.util.HashMap;
import java.util.Map;

import static jvcl.service.json.JOperationFactory.getOperationExecClass;
import static jvc.service.json.JOperationFactory.getOperationExecClass;
import static org.cobbzilla.util.daemon.ZillaRuntime.empty;
import static org.cobbzilla.util.daemon.ZillaRuntime.hashOf;
import static org.cobbzilla.util.json.JsonUtil.json;

src/main/java/jvcl/model/operation/JOperationContextBase.java → src/main/java/jvc/model/operation/JOperationContextBase.java 查看文件

@@ -1,7 +1,7 @@
package jvcl.model.operation;
package jvc.model.operation;

import jvcl.model.JAsset;
import jvcl.model.JFileExtension;
import jvc.model.JAsset;
import jvc.model.JFileExtension;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;


src/main/java/jvcl/model/operation/JSingleOperationContext.java → src/main/java/jvc/model/operation/JSingleOperationContext.java 查看文件

@@ -1,7 +1,7 @@
package jvcl.model.operation;
package jvc.model.operation;

import jvcl.model.JAsset;
import jvcl.model.JFileExtension;
import jvc.model.JAsset;
import jvc.model.JFileExtension;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;


src/main/java/jvcl/model/operation/JSingleSourceOperation.java → src/main/java/jvc/model/operation/JSingleSourceOperation.java 查看文件

@@ -1,15 +1,15 @@
package jvcl.model.operation;
package jvc.model.operation;

import jvcl.model.JAsset;
import jvcl.model.JFileExtension;
import jvcl.model.JFormat;
import jvcl.model.info.JTrackType;
import jvcl.service.AssetManager;
import jvc.model.JAsset;
import jvc.model.JFileExtension;
import jvc.model.JFormat;
import jvc.model.info.JTrackType;
import jvc.service.AssetManager;
import lombok.Getter;
import lombok.Setter;

import static jvcl.model.JAsset.json2asset;
import static jvcl.model.info.JTrackType.video;
import static jvc.model.JAsset.json2asset;
import static jvc.model.info.JTrackType.video;
import static org.cobbzilla.util.daemon.ZillaRuntime.die;

public class JSingleSourceOperation extends JOperation {

src/main/java/jvcl/operation/AddSilenceOperation.java → src/main/java/jvc/operation/AddSilenceOperation.java 查看文件

@@ -1,6 +1,6 @@
package jvcl.operation;
package jvc.operation;

import jvcl.model.operation.JSingleSourceOperation;
import jvc.model.operation.JSingleSourceOperation;
import lombok.Getter;
import lombok.Setter;


src/main/java/jvcl/operation/ConcatOperation.java → src/main/java/jvc/operation/ConcatOperation.java 查看文件

@@ -1,6 +1,6 @@
package jvcl.operation;
package jvc.operation;

import jvcl.model.operation.JMultiSourceOperation;
import jvc.model.operation.JMultiSourceOperation;
import lombok.extern.slf4j.Slf4j;

@Slf4j

src/main/java/jvcl/operation/HasStartAndEnd.java → src/main/java/jvc/operation/HasStartAndEnd.java 查看文件

@@ -1,4 +1,4 @@
package jvcl.operation;
package jvc.operation;

import org.cobbzilla.util.javascript.JsEngine;

@@ -6,7 +6,7 @@ import java.math.BigDecimal;
import java.util.Map;

import static java.math.BigDecimal.ZERO;
import static jvcl.service.Toolbox.evalBig;
import static jvc.service.Toolbox.evalBig;
import static org.cobbzilla.util.daemon.ZillaRuntime.empty;

public interface HasStartAndEnd {

src/main/java/jvcl/operation/HasWidthAndHeight.java → src/main/java/jvc/operation/HasWidthAndHeight.java 查看文件

@@ -1,14 +1,14 @@
package jvcl.operation;
package jvc.operation;

import jvcl.model.JAsset;
import jvc.model.JAsset;
import org.cobbzilla.util.javascript.JsEngine;
import org.cobbzilla.util.javascript.StandardJsEngine;

import java.math.BigDecimal;
import java.util.Map;

import static jvcl.service.Toolbox.divideBig;
import static jvcl.service.Toolbox.evalBig;
import static jvc.service.Toolbox.divideBig;
import static jvc.service.Toolbox.evalBig;
import static org.cobbzilla.util.daemon.ZillaRuntime.empty;

public interface HasWidthAndHeight {

src/main/java/jvcl/operation/KenBurnsOperation.java → src/main/java/jvc/operation/KenBurnsOperation.java 查看文件

@@ -1,6 +1,6 @@
package jvcl.operation;
package jvc.operation;

import jvcl.model.operation.JSingleSourceOperation;
import jvc.model.operation.JSingleSourceOperation;
import lombok.Getter;
import lombok.Setter;
import org.cobbzilla.util.javascript.JsEngine;
@@ -8,7 +8,7 @@ import org.cobbzilla.util.javascript.JsEngine;
import java.math.BigDecimal;
import java.util.Map;

import static jvcl.service.Toolbox.evalBig;
import static jvc.service.Toolbox.evalBig;
import static org.cobbzilla.util.daemon.ZillaRuntime.big;
import static org.cobbzilla.util.daemon.ZillaRuntime.empty;


src/main/java/jvcl/operation/LetterboxOperation.java → src/main/java/jvc/operation/LetterboxOperation.java 查看文件

@@ -1,6 +1,6 @@
package jvcl.operation;
package jvc.operation;

import jvcl.model.operation.JSingleSourceOperation;
import jvc.model.operation.JSingleSourceOperation;
import lombok.Getter;
import lombok.Setter;
import org.cobbzilla.util.javascript.JsEngine;

src/main/java/jvcl/operation/MergeAudioOperation.java → src/main/java/jvc/operation/MergeAudioOperation.java 查看文件

@@ -1,6 +1,6 @@
package jvcl.operation;
package jvc.operation;

import jvcl.model.operation.JSingleSourceOperation;
import jvc.model.operation.JSingleSourceOperation;
import lombok.Getter;
import lombok.Setter;
import org.cobbzilla.util.javascript.JsEngine;
@@ -9,7 +9,7 @@ import java.math.BigDecimal;
import java.util.Map;

import static java.math.BigDecimal.ZERO;
import static jvcl.service.Toolbox.evalBig;
import static jvc.service.Toolbox.evalBig;

public class MergeAudioOperation extends JSingleSourceOperation {


src/main/java/jvcl/operation/OverlayOperation.java → src/main/java/jvc/operation/OverlayOperation.java 查看文件

@@ -1,6 +1,6 @@
package jvcl.operation;
package jvc.operation;

import jvcl.model.operation.JSingleSourceOperation;
import jvc.model.operation.JSingleSourceOperation;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
@@ -9,7 +9,7 @@ import org.cobbzilla.util.javascript.JsEngine;
import java.math.BigDecimal;
import java.util.Map;

import static jvcl.service.Toolbox.evalBig;
import static jvc.service.Toolbox.evalBig;
import static org.cobbzilla.util.daemon.ZillaRuntime.empty;

@Slf4j

src/main/java/jvcl/operation/RemoveTrackOperation.java → src/main/java/jvc/operation/RemoveTrackOperation.java 查看文件

@@ -1,19 +1,19 @@
package jvcl.operation;
package jvc.operation;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.JsonNode;
import jvcl.model.JAsset;
import jvcl.model.JFileExtension;
import jvcl.model.JFormat;
import jvcl.model.JTrackId;
import jvcl.model.info.JMediaInfo;
import jvcl.model.info.JTrack;
import jvcl.model.info.JTrackType;
import jvcl.model.operation.JSingleSourceOperation;
import jvc.model.JAsset;
import jvc.model.JFileExtension;
import jvc.model.JFormat;
import jvc.model.JTrackId;
import jvc.model.info.JMediaInfo;
import jvc.model.info.JTrack;
import jvc.model.info.JTrackType;
import jvc.model.operation.JSingleSourceOperation;
import lombok.Getter;
import lombok.Setter;

import static jvcl.model.JTrackId.createTrackId;
import static jvc.model.JTrackId.createTrackId;
import static org.cobbzilla.util.daemon.ZillaRuntime.die;

public class RemoveTrackOperation extends JSingleSourceOperation {

src/main/java/jvcl/operation/ScaleOperation.java → src/main/java/jvc/operation/ScaleOperation.java 查看文件

@@ -1,6 +1,6 @@
package jvcl.operation;
package jvc.operation;

import jvcl.model.operation.JSingleSourceOperation;
import jvc.model.operation.JSingleSourceOperation;
import lombok.Getter;
import lombok.Setter;
import org.cobbzilla.util.javascript.JsEngine;
@@ -8,7 +8,7 @@ import org.cobbzilla.util.javascript.JsEngine;
import java.math.BigDecimal;
import java.util.Map;

import static jvcl.service.Toolbox.evalBig;
import static jvc.service.Toolbox.evalBig;
import static org.cobbzilla.util.daemon.ZillaRuntime.empty;

public class ScaleOperation extends JSingleSourceOperation implements HasWidthAndHeight {

src/main/java/jvcl/operation/SplitOperation.java → src/main/java/jvc/operation/SplitOperation.java 查看文件

@@ -1,6 +1,6 @@
package jvcl.operation;
package jvc.operation;

import jvcl.model.operation.JSingleSourceOperation;
import jvc.model.operation.JSingleSourceOperation;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
@@ -9,7 +9,7 @@ import org.cobbzilla.util.javascript.JsEngine;
import java.math.BigDecimal;
import java.util.Map;

import static jvcl.service.Toolbox.evalBig;
import static jvc.service.Toolbox.evalBig;

@Slf4j
public class SplitOperation extends JSingleSourceOperation implements HasStartAndEnd {

src/main/java/jvcl/operation/TrimOperation.java → src/main/java/jvc/operation/TrimOperation.java 查看文件

@@ -1,6 +1,6 @@
package jvcl.operation;
package jvc.operation;

import jvcl.model.operation.JSingleSourceOperation;
import jvc.model.operation.JSingleSourceOperation;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;

src/main/java/jvcl/operation/exec/AddSilenceExec.java → src/main/java/jvc/operation/exec/AddSilenceExec.java 查看文件

@@ -1,11 +1,11 @@
package jvcl.operation.exec;
import jvcl.model.JAsset;
import jvcl.model.JFileExtension;
import jvcl.model.operation.JSingleOperationContext;
import jvcl.operation.AddSilenceOperation;
import jvcl.service.AssetManager;
import jvcl.service.Toolbox;
package jvc.operation.exec;
import jvc.model.JAsset;
import jvc.model.JFileExtension;
import jvc.model.operation.JSingleOperationContext;
import jvc.operation.AddSilenceOperation;
import jvc.service.AssetManager;
import jvc.service.Toolbox;
import lombok.extern.slf4j.Slf4j;

import java.util.HashMap;

src/main/java/jvcl/operation/exec/ConcatExec.java → src/main/java/jvc/operation/exec/ConcatExec.java 查看文件

@@ -1,11 +1,11 @@
package jvcl.operation.exec;
import jvcl.model.JAsset;
import jvcl.model.JFileExtension;
import jvcl.model.operation.JMultiOperationContext;
import jvcl.operation.ConcatOperation;
import jvcl.service.AssetManager;
import jvcl.service.Toolbox;
package jvc.operation.exec;
import jvc.model.JAsset;
import jvc.model.JFileExtension;
import jvc.model.operation.JMultiOperationContext;
import jvc.operation.ConcatOperation;
import jvc.service.AssetManager;
import jvc.service.Toolbox;
import lombok.extern.slf4j.Slf4j;

import java.io.File;

src/main/java/jvcl/operation/exec/ExecBase.java → src/main/java/jvc/operation/exec/ExecBase.java 查看文件

@@ -1,10 +1,10 @@
package jvcl.operation.exec;
package jvc.operation.exec;

import jvcl.model.JAsset;
import jvcl.model.JFileExtension;
import jvcl.model.operation.JOperation;
import jvcl.service.AssetManager;
import jvcl.service.Toolbox;
import jvc.model.JAsset;
import jvc.model.JFileExtension;
import jvc.model.operation.JOperation;
import jvc.service.AssetManager;
import jvc.service.Toolbox;
import lombok.extern.slf4j.Slf4j;
import org.cobbzilla.util.handlebars.HandlebarsUtil;


src/main/java/jvcl/operation/exec/KenBurnsExec.java → src/main/java/jvc/operation/exec/KenBurnsExec.java 查看文件

@@ -1,12 +1,12 @@
package jvcl.operation.exec;
package jvc.operation.exec;


import jvcl.model.JAsset;
import jvcl.model.JFileExtension;
import jvcl.model.operation.JSingleOperationContext;
import jvcl.operation.KenBurnsOperation;
import jvcl.service.AssetManager;
import jvcl.service.Toolbox;
import jvc.model.JAsset;
import jvc.model.JFileExtension;
import jvc.model.operation.JSingleOperationContext;
import jvc.operation.KenBurnsOperation;
import jvc.service.AssetManager;
import jvc.service.Toolbox;
import lombok.extern.slf4j.Slf4j;
import org.cobbzilla.util.javascript.StandardJsEngine;

@@ -17,8 +17,8 @@ import java.util.Map;

import static java.math.BigDecimal.ONE;
import static java.math.BigDecimal.ZERO;
import static jvcl.service.Toolbox.TWO;
import static jvcl.service.Toolbox.divideBig;
import static jvc.service.Toolbox.TWO;
import static jvc.service.Toolbox.divideBig;
import static org.cobbzilla.util.io.FileUtil.abs;

@Slf4j

src/main/java/jvcl/operation/exec/LetterboxExec.java → src/main/java/jvc/operation/exec/LetterboxExec.java 查看文件

@@ -1,11 +1,11 @@
package jvcl.operation.exec;
import jvcl.model.JAsset;
import jvcl.model.JFileExtension;
import jvcl.model.operation.JSingleOperationContext;
import jvcl.operation.LetterboxOperation;
import jvcl.service.AssetManager;
import jvcl.service.Toolbox;
package jvc.operation.exec;
import jvc.model.JAsset;
import jvc.model.JFileExtension;
import jvc.model.operation.JSingleOperationContext;
import jvc.operation.LetterboxOperation;
import jvc.service.AssetManager;
import jvc.service.Toolbox;
import lombok.extern.slf4j.Slf4j;
import org.cobbzilla.util.javascript.StandardJsEngine;


src/main/java/jvcl/operation/exec/MergeAudioExec.java → src/main/java/jvc/operation/exec/MergeAudioExec.java 查看文件

@@ -1,11 +1,11 @@
package jvcl.operation.exec;
import jvcl.model.JAsset;
import jvcl.model.JFileExtension;
import jvcl.model.operation.JSingleOperationContext;
import jvcl.operation.MergeAudioOperation;
import jvcl.service.AssetManager;
import jvcl.service.Toolbox;
package jvc.operation.exec;
import jvc.model.JAsset;
import jvc.model.JFileExtension;
import jvc.model.operation.JSingleOperationContext;
import jvc.operation.MergeAudioOperation;
import jvc.service.AssetManager;
import jvc.service.Toolbox;
import lombok.Cleanup;
import lombok.extern.slf4j.Slf4j;
import org.cobbzilla.util.io.TempDir;

src/main/java/jvcl/operation/exec/OverlayExec.java → src/main/java/jvc/operation/exec/OverlayExec.java 查看文件

@@ -1,11 +1,11 @@
package jvcl.operation.exec;
import jvcl.model.JAsset;
import jvcl.model.JFileExtension;
import jvcl.model.operation.JSingleOperationContext;
import jvcl.operation.OverlayOperation;
import jvcl.service.AssetManager;
import jvcl.service.Toolbox;
package jvc.operation.exec;
import jvc.model.JAsset;
import jvc.model.JFileExtension;
import jvc.model.operation.JSingleOperationContext;
import jvc.operation.OverlayOperation;
import jvc.service.AssetManager;
import jvc.service.Toolbox;
import lombok.extern.slf4j.Slf4j;
import org.cobbzilla.util.javascript.StandardJsEngine;


src/main/java/jvcl/operation/exec/RemoveTrackExec.java → src/main/java/jvc/operation/exec/RemoveTrackExec.java 查看文件

@@ -1,13 +1,13 @@
package jvcl.operation.exec;
import jvcl.model.JAsset;
import jvcl.model.JFileExtension;
import jvcl.model.JTrackId;
import jvcl.model.info.JTrackType;
import jvcl.model.operation.JSingleOperationContext;
import jvcl.operation.RemoveTrackOperation;
import jvcl.service.AssetManager;
import jvcl.service.Toolbox;
package jvc.operation.exec;
import jvc.model.JAsset;
import jvc.model.JFileExtension;
import jvc.model.JTrackId;
import jvc.model.info.JTrackType;
import jvc.model.operation.JSingleOperationContext;
import jvc.operation.RemoveTrackOperation;
import jvc.service.AssetManager;
import jvc.service.Toolbox;
import lombok.extern.slf4j.Slf4j;

import java.util.HashMap;

src/main/java/jvcl/operation/exec/ScaleExec.java → src/main/java/jvc/operation/exec/ScaleExec.java 查看文件

@@ -1,11 +1,11 @@
package jvcl.operation.exec;
import jvcl.model.JAsset;
import jvcl.model.JFileExtension;
import jvcl.model.operation.JSingleOperationContext;
import jvcl.operation.ScaleOperation;
import jvcl.service.AssetManager;
import jvcl.service.Toolbox;
package jvc.operation.exec;
import jvc.model.JAsset;
import jvc.model.JFileExtension;
import jvc.model.operation.JSingleOperationContext;
import jvc.operation.ScaleOperation;
import jvc.service.AssetManager;
import jvc.service.Toolbox;
import lombok.extern.slf4j.Slf4j;
import org.cobbzilla.util.javascript.StandardJsEngine;


src/main/java/jvcl/operation/exec/SingleOrMultiSourceExecBase.java → src/main/java/jvc/operation/exec/SingleOrMultiSourceExecBase.java 查看文件

@@ -1,10 +1,10 @@
package jvcl.operation.exec;
package jvc.operation.exec;

import jvcl.model.JAsset;
import jvcl.model.JFileExtension;
import jvcl.model.operation.JOperation;
import jvcl.service.AssetManager;
import jvcl.service.Toolbox;
import jvc.model.JAsset;
import jvc.model.JFileExtension;
import jvc.model.operation.JOperation;
import jvc.service.AssetManager;
import jvc.service.Toolbox;
import lombok.extern.slf4j.Slf4j;

import java.io.File;

src/main/java/jvcl/operation/exec/SplitExec.java → src/main/java/jvc/operation/exec/SplitExec.java 查看文件

@@ -1,11 +1,11 @@
package jvcl.operation.exec;
package jvc.operation.exec;

import jvcl.model.JAsset;
import jvcl.model.JFileExtension;
import jvcl.model.operation.JSingleOperationContext;
import jvcl.operation.SplitOperation;
import jvcl.service.AssetManager;
import jvcl.service.Toolbox;
import jvc.model.JAsset;
import jvc.model.JFileExtension;
import jvc.model.operation.JSingleOperationContext;
import jvc.operation.SplitOperation;
import jvc.service.AssetManager;
import jvc.service.Toolbox;
import lombok.extern.slf4j.Slf4j;
import org.cobbzilla.util.javascript.JsEngine;


src/main/java/jvcl/operation/exec/TrimExec.java → src/main/java/jvc/operation/exec/TrimExec.java 查看文件

@@ -1,11 +1,11 @@
package jvcl.operation.exec;
import jvcl.model.JAsset;
import jvcl.model.JFileExtension;
import jvcl.model.operation.JSingleOperationContext;
import jvcl.operation.TrimOperation;
import jvcl.service.AssetManager;
import jvcl.service.Toolbox;
package jvc.operation.exec;
import jvc.model.JAsset;
import jvc.model.JFileExtension;
import jvc.model.operation.JSingleOperationContext;
import jvc.operation.TrimOperation;
import jvc.service.AssetManager;
import jvc.service.Toolbox;
import lombok.extern.slf4j.Slf4j;
import org.cobbzilla.util.javascript.StandardJsEngine;


src/main/java/jvcl/service/AssetManager.java → src/main/java/jvc/service/AssetManager.java 查看文件

@@ -1,8 +1,8 @@
package jvcl.service;
package jvc.service;

import jvcl.model.JAsset;
import jvcl.model.JFileExtension;
import jvcl.model.operation.JOperation;
import jvc.model.JAsset;
import jvc.model.JFileExtension;
import jvc.model.operation.JOperation;
import lombok.Getter;
import org.cobbzilla.util.handlebars.HandlebarsUtil;

@@ -13,7 +13,7 @@ import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import static java.lang.Integer.parseInt;
import static jvcl.model.JAsset.NULL_ASSET;
import static jvc.model.JAsset.NULL_ASSET;
import static org.cobbzilla.util.daemon.ZillaRuntime.die;
import static org.cobbzilla.util.daemon.ZillaRuntime.empty;
import static org.cobbzilla.util.string.StringUtil.isOnlyDigits;

src/main/java/jvcl/service/JIndexType.java → src/main/java/jvc/service/JIndexType.java 查看文件

@@ -1,4 +1,4 @@
package jvcl.service;
package jvc.service;

import com.fasterxml.jackson.annotation.JsonCreator;


src/main/java/jvcl/service/OperationEngine.java → src/main/java/jvc/service/OperationEngine.java 查看文件

@@ -1,6 +1,6 @@
package jvcl.service;
package jvc.service;

import jvcl.model.operation.JOperation;
import jvc.model.operation.JOperation;
import lombok.Getter;

public class OperationEngine {

src/main/java/jvcl/service/Toolbox.java → src/main/java/jvc/service/Toolbox.java 查看文件

@@ -1,11 +1,11 @@
package jvcl.service;
package jvc.service;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.jknack.handlebars.Handlebars;
import jvcl.model.JAsset;
import jvcl.model.JsObjectView;
import jvcl.model.info.JMediaInfo;
import jvcl.service.json.JOperationModule;
import jvc.model.JAsset;
import jvc.model.JsObjectView;
import jvc.model.info.JMediaInfo;
import jvc.service.json.JOperationModule;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.cobbzilla.util.handlebars.HandlebarsUtil;

src/main/java/jvcl/service/json/JOperationFactory.java → src/main/java/jvc/service/json/JOperationFactory.java 查看文件

@@ -1,11 +1,11 @@
package jvcl.service.json;
package jvc.service.json;

import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.deser.DeserializationProblemHandler;
import com.fasterxml.jackson.databind.jsontype.TypeIdResolver;
import jvcl.model.operation.JOperation;
import jvcl.operation.exec.ExecBase;
import jvc.model.operation.JOperation;
import jvc.operation.exec.ExecBase;

import java.io.IOException;
import java.util.HashMap;
@@ -51,7 +51,7 @@ public class JOperationFactory extends DeserializationProblemHandler {
}
}

public static final String OPERATION_DEFAULT_PACKAGE = "jvcl.operation";
public static final String OPERATION_DEFAULT_PACKAGE = "jvc.operation";
public static final String OPERATION_CLASSNAME_SUFFIX = "Operation";

public static Class<?> getOperationClass(String id) {

src/main/java/jvcl/service/json/JOperationModule.java → src/main/java/jvc/service/json/JOperationModule.java 查看文件

@@ -1,4 +1,4 @@
package jvcl.service.json;
package jvc.service.json;

import com.fasterxml.jackson.core.Version;
import com.fasterxml.jackson.databind.Module;

src/main/java/jvcl/service/json/JOperationType.java → src/main/java/jvc/service/json/JOperationType.java 查看文件

@@ -1,4 +1,4 @@
package jvcl.service.json;
package jvc.service.json;

import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.type.SimpleType;

src/test/java/javicle/test/BasicTest.java → src/test/java/jvc/test/BasicTest.java 查看文件

@@ -1,6 +1,6 @@
package javicle.test;
package jvc.test;

import jvcl.main.jvc;
import jvc.main.Jvc;
import lombok.Cleanup;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
@@ -35,16 +35,16 @@ public class BasicTest {
private void runSpec(String specPath) {
try {
@Cleanup("delete") final File specFile = stream2file(loadResourceAsStream(specPath));
JvclTest.main(new String[]{abs(specFile)});
JvcTest.main(new String[]{abs(specFile)});
} catch (Exception e) {
fail("runSpec("+specPath+") failed: "+shortError(e)+"\n"+getStackTrace(e));
}
log.info("runSpec: completed successfully: "+basename(specPath));
}

public static class JvclTest extends Jvcl {
public static class JvcTest extends Jvc {
@Override protected boolean exit() { return false; }
public static void main (String[] args) { main(JvclTest.class, args); }
public static void main (String[] args) { main(JvcTest.class, args); }
}

}

正在加载...
取消
保存