One example:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
export CIN_BROWSER=chrome #would override default firefox for Shell Cmds.
\end{lstlisting}
Another example:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
export CIN_CONFIG=/tmp/.bcast5 #use a temporary setup for testing purposes.
\end{lstlisting}
NOTE of IMPORTANCE: there is a serious situation with the interaction between the Operating System (OS) and bdwrite when creating blu-ray, that requires automount to be turned off. The blu-ray automatic script unmounts the blu-ray/UDF filesystem but the system has not finalized the directories so the OS creates a new loop file device and the data is loaded and cached for use by the new loop but it is stale. Consequences is that not all of the data is written where it should be. The solution is for the OS not to mount this second mount so we have to make sure it doesn't. There are 2 methods to fix this. The first and easiest is by using the following command to disable automount:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
gsettings set org.gnome.desktop.media-handling automount false
\end{lstlisting}
This can be reversed when you have completed the blu-ray generation via:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
gsettings set org.gnome.desktop.media-handling automount true
\end{lstlisting}
\item Click \texttt{OK} check button.
\end{itemize}
-The default bitrate is the largest value possible. The actual \textit{target} bitrate is calculated based on a formula from the blu-ray/DVD code. It divides the media size (in bits) by the video time (in seconds) to find the bitrate that will \textit{just fit} on the target media. This could create a weird bitrate if the media is large, and the video time is small, so the default/target bitrate is limited to $10Mb/s$.Batch jobs are then built and appended to the job list. Once these batch jobs are built, if you make any changes, you have to start over. You will see listed the batch jobs that are created to perform the rendering/tasks -- 2 jobs for blu-ray, one for audio/video processing and one for the scripts. There will be 3 batch jobs created for DVD when not using ffmpeg to include one each for audio and video and then one more for the scripts. When you click on \texttt{start}, it fires off those jobs and you will see the rendering main window progress bar in the bottom corner reflecting the fact that it is currently processing. Be aware that the Cinelerra program will be totally shutdown AFTER the batch jobs finish.Screenshot below shows BD blu-ray creation with 2 batch jobs queued up and ready to go.
+The default bitrate is the largest value possible. The actual \textit{target} bitrate is calculated based on a formula from the blu-ray/DVD code. It divides the media size (in bits) by the video time (in seconds) to find the bitrate that will \textit{just fit} on the target media. This could create a weird bitrate if the media is large, and the video time is small, so the default/target bitrate is limited to $10Mb/s$.Batch jobs are then built and appended to the job list. Once these batch jobs are built, if you make any changes, you have to start over. You will see listed the batch jobs that are created to perform the rendering/tasks -- 2 jobs for blu-ray, one for audio/video processing and one for the scripts. There will be 3 batch jobs created for DVD when not using ffmpeg to include one each for audio and video and then one more for the scripts. When you click on \texttt{start}, it fires off those jobs and you will see the rendering main window progress bar in the bottom corner reflecting the fact that it is currently processing. Be aware that the Cinelerra program will be totally shutdown AFTER the batch jobs finish. Screenshot below shows BD blu-ray creation with 2 batch jobs queued up and ready to go.
Figure~\ref{fig:dvd-batch01} for DVD and Figure~\ref{fig:dvd-batch02} for BD shows a creation render ready to be started. Note that because it is not ffmpeg, the processing of video is done separately from audio. If you need to modify the video tracks, which you can see is ghosted out, you need to highlight the first batch job listed. Be sure to highlight the first batch job before pressing Start so it runs all of the jobs and be sure the X for job enabled is set.
\label{fig:dvd-batch01}
\end{figure}
-\vspace{-4ex}
+% \vspace{-4ex}
\begin{figure}[htpb]
\centering
\includegraphics[width=0.8\linewidth]{images/dvd-batch02.png}
If bluray to test the filesystem you just created, use the command line interface; loopback mount the filesystem image which was generated in the target directory. For example if blu-ray:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
cd /TargetDirectory/bd_20150820-093747/
mount -o loop,ro ./bd.udfs ./udfs
#check the media using a compatible media rendering tool like ffplay
Note: unwritten (virgin) media must be formatted first using:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
dvd+rw-format /dev/bd #only done once and does not take very long
\end{lstlisting}
To write or rewrite rewritable blu-ray media:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
cd /TargetDirectory/bd_20150820-093747/
dd if=./bd.udfs of=/dev/bd bs=2048000 #the growisofs command below also works
\end{lstlisting}
To write blu-ray write-once media: (BD-R) (no pre-formatting needed):
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
cd /TargetDirectory/bd_20150820-093747/
growisofs -dvd-compat -Z /dev/bd=./bd.udfs
\end{lstlisting}
Note: unwritten (virgin) media must be formatted first using:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
dvd+rw-format /dev/dvd #only done once and does not take very long
\end{lstlisting}
To write a DVD, load blank media and run the following from the command line (requires dvdauthor):
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
cd /TargetDirector/dvd_20160404-175416
growisofs -dvd-compat -Z /dev/dvd -dvd-video ./iso
\end{lstlisting}
\subsubsection*{SD Example: Partial Output during Cinelerra run}
\label{ssub:sd_example_partial_output}
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
...
FFMPEG::open_decoder: some stream times estimated
Render::render_single: Session finished.
\subsubsection*{BD Example: Partial Output during Cinelerra run}
\label{ssub:bd_example_partial_output}
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
...
FFMPEG::open_decoder: some stream times estimated
Render::render_single: Session finished.
\subsubsection*{SD Example – Partial Output during writing disc media}
\label{ssub:sd_example_partial_output_writing}
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
growisofs -dvd-compat -Z /dev/sr0 -dvd-video /tmp/dvd_20161224-160756/iso
WARNING: /dev/sr0 already carries isofs!
About to execute 'mkisofs -dvd-video /tmp/dvd_20161224-160756/iso | builtin_dd of=/dev/sr0 obs=32k seek=0'
\subsubsection*{BD Example – Partial Output during writing disc media}
\label{ssub:bd_example_partial_output_writing}
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
growisofs -dvd-compat -Z /dev/sr0=/tmp/bd_20161224-155658/bd.udfs
Executing 'builtin_dd if=/tmp/bd_20161224-155658/bd.udfs of=/dev/sr0 obs=32k seek=0'
/dev/sr0: "Current Write Speed" is 2.0x4390KBps.
\item There is also a file in the same directory, called bd.jobs. It was the information that was used in creating the batch jobs and may be helpful in determining what parameters were actually used if there are any resulting problems. With enough background knowledge, you can make changes and rerun.
\item For blu-ray check to make sure you do not have any spurious loopback disks mounted that may interfere with the correct generation. Use the df command to check this and then the umount command to unmount these. Also, check to make sure you have used the gsettings command to disable automount.
\item For blu-ray loopback mount the \texttt{<target>/bd.udfs} image, and see if it has the BDMV filesystem written to it, and in particular a subdirectory named STREAM. Look at the results in \texttt{./udfs} and check for the stream file which should exist in \texttt{./udfs/BDMV/STREAM/00000.m2ts} and should have the same size as \texttt{./bd.m2ts}.
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
mount -o loop <target>/bd.udfs <target>/udfs
ls -lR <target>/udfs
du -sc <target>/udfs
\item Did you startup cinelerra from a terminal window so you can see informative messages?
\item Is udftools installed for BD and dvdauthor installed for SD?
\item Do you have loopback not enabled for bluray? At least temporarily, disable automount via:
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
gsettings set org.gnome.desktop.media-handling automount false
\end{lstlisting}
\item Did you have sufficient disk space for working/writing files? In the \textit{Create} window, the \textit{disk space} will be displayed in green if sufficient, but in red if less than what fits on the disc media.
usage:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
./zmpeg3cc2txt [-c cc_service ] [-s start:length, ...] [ -t track ] [-v verbose ] [-w wdw mask ] [-x file.xml ] [-o file.udvd ] file.ts
\end{lstlisting}
To use this program, the input file must be a transport stream (broadcast video) which contains closed captioning services. The service id defaults to one, and the default video track is zero. Either \texttt{-o} or \texttt{-x} must be specified to indicate the output file format desired. If the output file name is a '-' then stdout is selected as the output file.
For example:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
zmpeg3cc2txt -o - /dvb_data/channel5.ts
\end{lstlisting}
For creating a blu-ray disc, if you have HDV MPEG-2 media that is in blu-ray format, you can save the original quality of your work, rather than rendering it to another format. Follow the steps below directly instead of going through cinelerra. It has been tested on 10 different MTS files.
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
du -sb /yourHDVfile.MTS # Determine the size of your file in bytes.
blocks=((size-in-bytes/2048 + 4096)) # Convert bytes into blocks + a little more.
mkudffs /tmp/newfilename.udfs blocks # Create a file with that \# of blocks + some extra.
The line to add to \texttt{/etc/fstab} will look something like the following, assuming your username is \textit{name} and your groupid may be \textit{users} or \textit{name}. If you do an \texttt{ls -l} in your home directory, the $3^{rd}$ and $4^{th}$ fields shown will be your uid or name and gid or groupid which you must substitute in the line below.
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
/home/name/image /home/name/bluray udf noauto,loop,rw,user,uid=name,gid=groupid 0 0
\end{lstlisting}
Usage of the final preparation taken from the bdwrite program comments:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
./bdwrite <tgt_dir_path> <playlist-0> <sep> <playlistp1> <sep> ... <sep> <playlist-n>
<sep> == -<pgm_pid> | --<pgm_pid> | ---<pgm_pid>
For example:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
./bdwrite /tmp/dir /path/menu_titles.m2ts --- /path/clip0.m2ts -- /path/clip1.m2ts -- /path/clip2.m2ts
\end{lstlisting}
\item Using cinelerra, design your Title page using a few seconds of video and the \textit{Title} plugin.
\item Use BD Create to render your short Title video.
\item Next is the most complicated part which is to run \texttt{mkudffs} with a sufficient amount of disk space to hold all of the \texttt{bd.m2ts} files \textit{plus a little more!} To calculate this, you can record the sizes from having run BD Create mkudffs. This number is displayed on the terminal screen when using the command line interface each time and add them together. Or recalculate the size of each bd.m2ts using the formula below and adding them all together. This is the number of blocks used to make a bluray image space for bdwrite to use. For many files, this could require a huge amount of space, so check first.
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
Total size = File0 size in bytes / 2048 + 4094 "+" File1 size in bytes / 2048 + 4094 "+" ...
\end{lstlisting}
Now create the image file via: \texttt{mkudffs image <Total size>} where image or udfs is the image name.
\item Loop mount the disk image (refer to Section \hyperref[sec:bluray_workaround_mount_umount]{13.7}).
\item Then actually write your multiple bd.m2ts type files onto the \textit{image} where \texttt{<cin\_path>} is the location of the cinelerra binary \textit{bdwrite} file and \texttt{<path>} is your directory path. Below is a single line that wrapped around with 4 Titles.
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
<cin_path>/bin/bdwrite image /<path>menu_titles.m2ts --- /<path>/bd1.m2ts -- /<path>/bd2.m2ts -- /<path>/bd3.m2ts -- /<path>bd4.m2ts
\end{lstlisting}
Note that the 3 dashes after the \texttt{menu\_titles.m2ts} lets the bluray player know to \textit{pause} after playing the few seconds video which contains the index to the rest of the files. The 2 dashes after each of the bd.m2ts signify \textit{stop}. That is when you will have to use your remote to \textit{Search Titles} in order to play the next one you want to see. In addition, if for some reason you just want to \textit{play all}, you will have to add another line to the Title menu as a choice and list all of the 4 files in a row at the end of your bdwrite line without any dashes in between.
\centering
\includegraphics[width=0.7\linewidth]{images/scaleratio.png}
\caption{Scale Ratio plugin}
- \label{fig:scaleratio}
+ \label{fig:scaleratio1}
\end{figure}
Left and right sides of the bottom portion show the Source and the Destination X, Y, W, H values. As you change the values on the left side, you can see how this will affect the output as you observe the results in the compositor window. For example, as you change the values for SrcY in a \textit{cropped} Scale scenario, you see up/down movement.
\begin{enumerate}[start=13]
\item Next, make sure you have the Timeline set in the Main window at the beginning of where you want to start rendering. Also, make sure the first line in the \textit{Batches to render} section is highlighted as you can see above by the blue highlighting. Click on the \texttt{Start} box in the Batch Render window and you will see the video playing in the Compositor window.
\item Cinelerra program will be stopped when done rendering; you will be at the terminal prompt where you will see it has printed out some informational messages (or errors if problems), the last 2 are:
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
To burn dvd, load blank media and run:
growisofs -dvd-compat -Z /dev/dvd -dvd-video /mnt0/dvd_20161027-131723/iso
\end{lstlisting}
\pagebreak
Figure~\ref{fig:inter-view02} displays Inter-View window and its relation to the timeline, viewer, and compositor.
-\begin{figure}[h]
+\begin{figure}[ht]
\centering
\includegraphics[width=0.9\linewidth]{images/inter-view02.png}
\caption{Inter-View mode and the timeline}
\centering
\includegraphics[width=0.8\linewidth]{images/editing-img001.png}
\caption{Once you have an an Open EDL, there are 2 ways to close it.}
- \label{fig:timeline}
+ \label{fig:open_edl}
\end{figure}
\relax
When "Open EDL" is invoked, the current EDL and current undo stack are both "pushed", and the active session EDL is replaced with the target clip/nested edl. A new undo stack is created, and the active backup.xml file name is decorated with the stack level. So, backup.xml is backup1.xml when your edits are at stack level 1, backup2.xml at stack level 2, and so on. This means that if you "load backup" at stack level 1, the session will reload from history at stack level 1, not the main session.
+\begin{comment}
\begin{figure}[htpb]
\centering
\includegraphics[width=0.6\linewidth]{images/lenght.png}
\caption{Edit Length window}
\label{fig:lenght}
\end{figure}
+\end{comment}
\subsection{Edit Length}%
\label{sub:edit-lenght}
\end{description}
The next table displays the options and results with the Key Table here first.
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
s = src media start\\
p = proj position \\
l = length \\
\vspace{1ex}
\noindent Only 1 necessary initial setup is required due to permission settings for non-root usage. As root, just copy a file that provides the necessary permissions to use the shuttle, then reboot, Example copy:
-\begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
$sudo cp {cindat_path}/doc/99-ShuttlePRO.rules /etc/udev/rules.d/
\end{lstlisting}
\noindent then the next time after you reboot, the permissions should be correct. This file only needs to contain one of the following lines depending on which shuttle version you have/use, but all will be in the file.
-\begin{lstlisting}[language=Bash,basicstyle=\footnotesize]
+\begin{lstlisting}[language=Bash,,numbers=none,basicstyle=\footnotesize]
# for newer PRO model
ATTRS{name}=="Contour Design ShuttlePro" MODE="0644"
# for older PRO model
\noindent The next brackets represent sections. Default, Resources, Load windows all use the same key values.
-\begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
[Default]
[Resources]
[Load]
\noindent Cinlerra with brackets around it next, is the section with some key definitions for the main window.
-\begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
[Cinelerra]
# Most useful functions have to be on K5-K9 because Xpress only has 5 keys
For the Viewer, you may want keys defined to do a Splice or an Overwrite so define differently. Note that assignments that contain single character letters must be enclosed in quotes.
-\begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
[Viewer]
# Splice - Viewer only; may be defined differently than Composer or Cinelerra
K2 "v"
\noindent To change any key value to an alternative value, just edit the file and make the changes. Besides just keys and alphabetic letters of numbers, you can also use any cinelerra value that contains the combination with Shift, Alt, and Ctrl. For keys that are not printable characters, you can look up the symbol name to use for a specific operation in the file called: \texttt{/usr/include/X11/keysymdef.h} .
\noindent Some examples:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
K10 Alt-XK_Left # Go to previous edit \\
K13 Ctrl-XK_Right # Go to next label
\end{lstlisting}
After modifying \texttt{.shuttlerc}, the next time you use the shuttle, your changes will automatically take affect without even having to stop and restart Cin. However, the first thing to try if problems is to stop cinelerra, unplug the shuttle, wait a few seconds, plug it in again, and then restart cin. If for some reason, the shuttle keys still do not work after that, you may have an incorrect setup and you will have to correct that first. For example, if you define S5 twice within the Cinelerra setup, it will fail. It is suggested that if you make changes, you should initially uncomment DEBUG in the \texttt{.shuttlerc} file and start up cinelerra from a terminal window so that you can make sure it is working and has no output errors. An error might look like:
-\begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
dupl key name: [Cinelerra]K1
shuttle config err file: /root/.shuttlerc, line:37
\end{lstlisting}
Any time you are having trouble with your shuttle, you can copy the default \texttt{shuttlerc} file from \texttt{{cindat\_path}/shuttlerc} to your local \texttt{.shuttlerc} file, and edit that to\ switch to DEBUG mode by removing the \# comment from the DEBUG line. But you will have to have started Cin from a terminal window to see the key values. The first time you use the shuttle or after you change the file, the current assignments will show in the terminal window so will look something like:
-\begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
[Cinelerra] # 1
K5[D]: XK_KP_0/U
K5[U]: XK_KP_0/U
\noindent When you are in DEBUG mode and are just working away, what you will see is something like this:
-\begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
key: 0058 1
key: 0055 0
\end{lstlisting}
or:
-\begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
shuttle: 00 00 00 00 00
key: XK_Home 0
\end{lstlisting}
\noindent When you change the focus from one window to another, you will see something like this:
-\begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
new focus: 04c00137
new translation: Viewer
key: 0059 1
\noindent You can also set an environment variable to temporarily use an alternative shuttle configuration file for testing as in:
-\begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
$ export SHUTTLE_CONFIG_FILE=/tmp/shuttlerc_test
\end{lstlisting}
In order to see if you hardware was recognized by the operating system, key in:
-\begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
$ lsusb -v -d 0b33:0030 # for the Shuttle Pro or PROv2 \\
$ lsusb -v -d 0b33:0020 # for the Shuttle Xpress
\end{lstlisting}
\item From a terminal window as an ordinary user key in: lsusb (the first character is a lower case L ---for
list). You will see something like the following depending on which usb device you have the
ShuttlePro plugged into:
-\begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
Bus 003 Device 002: ID 0b33:0030 Contour Design, Inc. ShuttlePro v2
\end{lstlisting}
\item To make sure you have usbmon installed key in:
-\begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
$ sudo modprobe usbmon
\end{lstlisting}
\item Next key in the following:
-\begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
$ sudo od -tx1 /dev/usbmon3
\end{lstlisting}
where the last 3 is the same \# as the Bus in above. If it lists \texttt{Bus 002}, then use \texttt{/dev/usbmon2} instead.
have multiple devices on the same bus, you will get responses from any and all of them. Attempt to
isolate your shuttle by temporarily unplugging unnecessary devices on the same bus or plug the
shuttle into a different usb port that has fewer devices.
- \begin{lstlisting}[language=Bash]
+ \begin{lstlisting}[language=Bash,numbers=none]
0000000 80 70 99 75 53 8c ff ff 43 01 81 02 03 00 2d 00
0000020 4e 61 5c 5c 00 00 00 00 8d 2c 06 00 00 00 00 00
0000040 05 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00
\item Compile that with the command: \texttt{c++ shdmp.C -o shudmp}
\item Make the file executable with the command: \texttt{chmod +x shudmp}
\item Execute:
- \begin{lstlisting}[language=Bash]
+ \begin{lstlisting}[language=Bash,numbers=none]
$ sudo ./shdmp /dev/input/by-id/usb-Contour\_Design\_ShuttlePro-event-if00 # substitute your shuttle
\end{lstlisting}
\end{enumerate}
\noindent Then press your shuttle key that is having problems and check the results. They should look like:
- \begin{lstlisting}[language=Bash, caption={Example for K7}]
+\begin{lstlisting}[language=Bash,numbers=none,caption={Example for K7}]
event: (4, 4, 0x90007) #The last number, 7, is the expected Key number.
event: (1, 262, 0x1)
event: (0, 0, 0x0)
event: (1, 262, 0x0)
event: (0, 0, 0x0)
\end{lstlisting}
- \begin{lstlisting}[language=Bash, caption={Example for K15}]
+
+\begin{lstlisting}[language=Bash,numbers=none,caption={Example for K15}]
Example for K15:
event: (4, 4, 0x9000f) #The last number f is 15 in octal and is the expected Key.
event: (1, 270, 0x1)
\paragraph{Note 4} For developers, if you have a pre-UEFI Secure Boot kernel it is also possible to do the following for further in depth testing:
- \begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
ls /sys/kernel/debug/hid \# to locate numerical value of the shuttle, e.g. 0003:0B33.0030.0006
cat "/sys/kernel/debug/hid/0003:0B33.0030.0006/rdesc" # substitute your own numerical value
cat "/sys/kernel/debug/hid/0003:0B33.0030.0006/events" # press keys to see the results
- \end{lstlisting}
+\end{lstlisting}
%\begin{enumerate}
%\item \texttt{ls /sys/kernel/debug/hid \# to locate numerical value of the shuttle, e.g. 0003:0B33.0030.0006}
%\item \texttt{cat “/sys/kernel/debug/hid/0003:0B33.0030.0006/rdesc” \# substitute your own numerical value}
The following is the default setting for the ShuttlePROv2 and ShuttleXpress (table~\ref{tab:shuttleprov2} and table~\ref{tab:xpress}):
-\begin{landscape}
- \begin{table}[htpb]
- \centering
- \caption{ShuttlePROv2 key default arrangement for Cinelerra / Composer / Viewer}
- \label{tab:shuttleprov2}
- \begin{tabular}{c c c c c c c}
- \toprule
- K1 & K2 & & K3 & K4 & & \\
- Label & Future use & & Future use & Clip & & \\
- & Splice (viewer) & & Copy & Overwrite (viewer) & & \\
- \midrule
- K5 & K6 & K7 & K8 & K9 & & \\
- Home & Reverse & Stop & Play & End & & \\
- & & Fullscreen & & & & \\
- & & (viewer / compositor) & & & & \\
- \midrule
- Home(Defaults) & MouseBtn1(D) & MouseBtn2(D) & MouseBtn3(D) & End(Defaults) & & \\
- \midrule
- \multicolumn{7}{c}{Shuttle Outer Wheel} \\
- \multicolumn{7}{c}{Play forward (first row) or Play reverse (second row)} \\
- S1=Stop & S2=1/2 & S3=Normal & S4=2x & S5=4x & S6=8x & S7=16x \\
- S-1=Stop & S-2=1/2 & S-3=Normal & S-4=2x & S-5=4x & S-6=8x & S-7=16x \\
- \midrule
- K14 & & Jog Left & (Inner Wheel) & Jog Right & & K15 \\
- Toggle In & & Frame reverse & & Frame forward & & Toggle Out \\
- & & Scroll up(Defaults) & & Scroll down(Defaults) & & \\
- \midrule
- & & K10 & & K11 & & \\
- & & Previous Edit & & Next Edit & & \\
- & & Future Use(Viewer) & & Future Use(Viewer) & & \\
- \midrule
- & & K12 & & K13 & & \\
- & & Previous Edit & & Next Edit & & \\
- & & Previous Label & & Next label & & \\
- \bottomrule
- \end{tabular}
- \end{table}
-\end{landscape}
-
-\begin{landscape}
- \begin{table}[htpb]
- \centering
- \caption{ShuttleXpress key default arrangement for Cinelerra / Composer / Viewer}
- \label{tab:xpress}
- \begin{tabular}{c c c c c c c}
- \toprule
- K5 & K6 & K7 & K8 & K9 & & \\
- Home & Reverse & Stop & Play & End & & \\
- & & Fullscreen & & & & \\
- & & (viewer / compositor) & & & & \\
- \midrule
- Home(Defaults) & MouseBtn1(D) & MouseBtn2(D) & MouseBtn3(D) & End(Defaults) & & \\
- \midrule
- \multicolumn{7}{c}{Shuttle Outer Wheel} \\
- \multicolumn{7}{c}{Play forward (first row) or Play reverse (second row)} \\
- S1=Stop & S2=1/2 & S3=Normal & S4=2x & S5=4x & S6=8x & S7=16x \\
- S-1=Stop & S-2=1/2 & S-3=Normal & S-4=2x & S-5=4x & S-6=8x & S-7=16x \\
- \midrule
- & & Jog Left & (Inner Wheel) & Jog Right & & \\
- & & Frame reverse & & Frame forward & & \\
- & & Scroll up(Defaults) & & Scroll down(Defaults) & & \\
- \bottomrule
- \end{tabular}
- \end{table}
- \centering
-
-
-
-\end{landscape}
+\begin{table}[ht]
+ \caption{ShuttlePROv2 key default arrangement for Cinelerra / Composer / Viewer}
+ \label{tab:shuttleprov2}
+ % Tell table to adjust font to fix on the page using \resize
+ \resizebox{\textwidth}{!}{%
+ \begin{tabular}{c c c c c c c}
+ \toprule
+ K1 & K2 & & K3 & K4 & & \\
+ Label & Future use & & Future use & Clip & & \\
+ & Splice (viewer) & & Copy & Overwrite (viewer) & & \\
+ \midrule
+ K5 & K6 & K7 & K8 & K9 & & \\
+ Home & Reverse & Stop & Play & End & & \\
+ & & Fullscreen & & & & \\
+ & & (viewer / compositor) & & & & \\
+ \midrule
+ Home(Defaults) & MouseBtn1(D) & MouseBtn2(D) & MouseBtn3(D) & End(Defaults) & & \\
+ \midrule
+ \multicolumn{7}{c}{Shuttle Outer Wheel} \\
+ \multicolumn{7}{c}{Play forward (first row) or Play reverse (second row)} \\
+ S1=Stop & S2=1/2 & S3=Normal & S4=2x & S5=4x & S6=8x & S7=16x \\
+ S-1=Stop & S-2=1/2 & S-3=Normal & S-4=2x & S-5=4x & S-6=8x & S-7=16x \\
+ \midrule
+ K14 & & Jog Left & (Inner Wheel) & Jog Right & & K15 \\
+ Toggle In & & Frame reverse & & Frame forward & & Toggle Out \\
+ & & Scroll up(Defaults) & & Scroll down(Defaults) & & \\
+ \midrule
+ & & K10 & & K11 & & \\
+ & & Previous Edit & & Next Edit & & \\
+ & & Future Use(Viewer) & & Future Use(Viewer) & & \\
+ \midrule
+ & & K12 & & K13 & & \\
+ & & Previous Edit & & Next Edit & & \\
+ & & Previous Label & & Next label & & \\
+ \bottomrule
+ \end{tabular}}
+\end{table}
+
+\begin{table}[ht]
+ \caption{ShuttleXpress key default arrangement for Cinelerra / Composer / Viewer}
+ \label{tab:xpress}
+ % Tell table to adjust font to fix on the page using \resize
+ \resizebox{\textwidth}{!}{%
+ \begin{tabular}{c c c c c c c}
+ \toprule
+ K5 & K6 & K7 & K8 & K9 & & \\
+ Home & Reverse & Stop & Play & End & & \\
+ & & Fullscreen & & & & \\
+ & & (viewer / compositor) & & & & \\
+ \midrule
+ Home(Defaults) & MouseBtn1(D) & MouseBtn2(D) & MouseBtn3(D) & End(Defaults) & & \\
+ \midrule
+ \multicolumn{7}{c}{Shuttle Outer Wheel} \\
+ \multicolumn{7}{c}{Play forward (first row) or Play reverse (second row)} \\
+ S1=Stop & S2=1/2 & S3=Normal & S4=2x & S5=4x & S6=8x & S7=16x \\
+ S-1=Stop & S-2=1/2 & S-3=Normal & S-4=2x & S-5=4x & S-6=8x & S-7=16x \\
+ \midrule
+ & & Jog Left & (Inner Wheel) & Jog Right & & \\
+ & & Frame reverse & & Frame forward & & \\
+ & & Scroll up(Defaults) & & Scroll down(Defaults) & & \\
+ \bottomrule
+ \end{tabular}}
+\end{table}
For the option files a specific format must be followed in creating the file content.
In \texttt{typ.ext} encoder parameter files, the first line is defined as:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
muxer codec
(or) muxer codec | bitstream filter [ bitstream filter options ]
\end{lstlisting}
where the | represents piping the codec data through the bitstream filter. The rest of the lines in the file should look as follows:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]]
# in column one is a comment
id1 value1
(or) id2 = value2
Only one equals sign is allowed and it is just for readability. There may be any number of id / value pair lines in a media definition, including zero. A typical line might be:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]]
bitrate 4000000
(or) bitrate = 5000000
\end{lstlisting}
All other id's should be in the ffmpeg documentation, and correspond to the global, muxer, and codec option names and values used by ffmpeg. For example to set the aspect ratio to 4:3, use:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]]
aspect 4:3
\end{lstlisting}
Below shows an example: \texttt{decode.opts} which is used when the ffmpeg decoder is initialized.
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]]
# apply at init decode
loglevel=fatal
formatprobesize=5000000
Now you will see this as what you can choose in the rendering choices for ffmpeg.
Inside the file you will see that the first line is special. It is the muxer and codec. For example:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]]
h264 libx265
\end{lstlisting}
The contents may be something like:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]]
# <path>/video/vid.mov
mp4 libx265
bitrate 4000000
For audio and video together, the mux format must agree between the aud.mov and vid.mov files when they are to be used together. The stream muxer must be the same for all the streams in the file being written.
for example:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]]
# <path>/audio/aud.mov
mp4 pcm_mulaw
\end{lstlisting}
\texttt{audio/<class>.dfl} and \texttt{video/<class>.dfl}
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]]
# audio/mov.dft
aud.mov
\end{lstlisting}
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]]
# video/mov.dft =
vid.mov
\end{lstlisting}
When you see problems in using the new options files you have created and put into place, add the following line to \texttt{ffmpeg/encoder.opts}:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]]
loglevel=verbose
\end{lstlisting}
There is an \textsc{EXCEPTION} to all of the above because of a conflict between ffmpeg and the x264 person making the detection of default ffmpeg settings terminate with an error. If you get this error, you must workaround this termination by including parameters that don't match $5$ or more of the normal expected values. So you just have to change a few parameters to avoid the probe detection. Here is an example where you will notice the \texttt{x264-params} line tweaking values to throw off the detection/error termination code.
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]]
# <path>/ffmpegvideo/test.mp4
mp4 libx264
preset=slow
To get a listing of the current ffmpeg supported formats and codecs that can be made to work with Cinelerra, provided there are option files added, run the following commands. This should be done from the <build>directory substituting the location of <build> where you have installed Cinelerra on your system and the ffmpeg may be a different version than $4.2$ as used below. Then look at the output created in \texttt{/tmp/ff-formats.txt} and \texttt{codecs.txt}.
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]]
/<build>/cinelerra-5.1/thirdparty/ffmpeg-4.2/ffmpeg -formats > /tmp/ff-formats.txt
/<build>/cinelerra-5.1/thirdparty/ffmpeg-4.2/ffmpeg -codecs > /tmp/ff-codecs.txt
\end{lstlisting}
Add the file named \texttt{./ffmpeg/audio/acc256k.pro} which contains the following lines:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]]
mov aac
strict -2
b 256000
Add the file named \texttt{./ffmpeg/audio/pro.dfl} which contains the following lines:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]]
acc256k.pro
\end{lstlisting}
Add the file named \texttt{./ffmpeg/video/prores.pro} which contains the following lines:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]]
mov prores
profile=2
# lines of comments
Add the file named \texttt{./ffmpeg/video/pro.dfl} which contains the following lines:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]]
prores.pro
\end{lstlisting}
To encode a series of $48$ bit tiff output image files, add a file to the cinelerra data ffmpeg/video subdirectory as in:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]]
# \dots/ffmpeg/video/tiff.dfl
tiff48.tif
\end{lstlisting}
Then create an ffmpeg video encoder parameters file in the same directory:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]]
# \dots/ffmpeg/video/tiff48.tiff
image2 tiff
pixel_format=rgb48
Raw video is not affected by decoding on read in. This makes it very attractive to provide raw image data for editing and rendering media. A wide variety of raw formats are available via the ffmpeg file interface. To load media in a raw format, select \texttt{try ffmpeg first} and create an accompanying \textit{opts} file. The opts files must be in the same directory as your media, with the same base name, and the \texttt{.opts} extension. The opts file contents should reflect your video setup. An example follows:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]]
# Video file name: /tmp/buddy.mov
# Opts file name: /tmp/buddy.opts
# Contents of opts file:
%\vspace*{1ex}
Using the example of jpeg’s, the jpeg list sequence file type is the easiest and fastest way to access a sequence of jpg images as a single asset. First build a jpeglist sequence file and name it something like jpeglist.sh. There is an example script of how to do this in the Auxiliary Programs section of the Appendix. Once the jpeglist.sh file is built you can then run it similar to this line:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
$ jpeglist.sh /<path>/file.jpg /<path>/DSC*.jpg
\end{lstlisting}
An example output file from running this script residing in the directory where \texttt{DSC*.jpg} files exist is shown below. To use this, turn off ffmpeg probes first, and open \texttt{timelapse.jpg} using File ~$\rightarrow$ ~Load files.
-\begin{lstlisting}[language=bash,caption={Example: timelapse.jpg},captionpos=t]
+\begin{lstlisting}[language=bash,numbers=none,caption={Example: timelapse.jpg},captionpos=t]
JPEGLIST
# First line is always JPEGLIST
# Frame rate:
\begin{lstlisting}[
language=bash,
+numbers=none,
caption={Example DSC0\%04d.opts},
captionpos=t]
loglevel=verbose
\texttt{AM pitchshifter} $1504922321\, 0\, 1\, 0\, 0\, 1\, 0\, 1\, 0\, 1\, 0\, 0$ indicates that you would create the icon: \\ \texttt{<cinlib\_path>/plugins/picon/cinfinity/am\_pitchshift\_1433.png} \\
For your own personal plugins, you can create a directory on your system and put any plugin png files you like into that directory. For example, if you want a specialized picon for \texttt{F\_aeval}, create a picon named \texttt{ff\_aeval.png} in: \\ \texttt{<cinlib\_path>/plugins/picon/yournamehere.}
-\begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
cd <cinlib>/plugins # go to the correct directory
mkdir -p picon/yournamehere # create subdirectory if does not exist
ls -l picon/* # list the picon directories
The \texttt{expanders.txt} file has very specific requirements. The most specific is that there are no blanks --- you must use tabs only. A \# (pound sign) can be used in column 1 to indicate a comment. Here is a short example:
-\begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
Video Effects
- Color_Correction
Blue Banana
file containing the following line, the full scale color modeling upgrade will not be performed until after any plugin, and then the render is faster:
-\begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
video_filter=xxxxxx=threads=8 # where xxxxxx is the desired filter
\end{lstlisting}
When the file loads, however, it will initially take longer because it is running through the video filter. The format \textit{rgb} in ffmpeg uses more cpu time. For comparison, ffmpeg line that might be used:
-\begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
ffmpeg -i /tmp/filename.mpeg -threads 15 -vf format=rgb24,xxxxxxs=threads=8 -acodec ac3 -vcodec libx265 - y /tmp/x.mp4
\end{lstlisting}
Ladspa effects are supported in realtime and rendered mode for audio. These audio effects are supported since Cinelerra implements the LADSPA interface as accurately as possible. Besides the supplied LADSPA effects\protect\footnote{credit Steve Harris}, additional LADSPA effects can be enabled by setting the \texttt{LADSPA\_PATH} environment variable to the location of your LADSPA plugins:
-\begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
export LADSPA_PATH=/usr/lib/ladspa
\end{lstlisting}
However, be forewarned that due to variability in the lv2 plugin programming code, some of the plugins only work with the minimum buffer size of $1024$. In these cases, what you will see is the main track canvas cursor just bounces back and forth over a very small area in the timeline. This does not crash cinelerra but you will have to remove the plugin to continue working.
You can specify a certain set of LV2 plugins to use by setting \texttt{LV2\_PATH} as shown below before starting cinelerra --- include a colon ($:$) separator for multiple paths. The default path for most operating systems is \texttt{/usr/lib64/lv2}. To list the system installed lv2 plugins key in: \texttt{lv2ls}.
-\begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
export LV2_PATH=/tmp/j/balance.lv2/usr/local/lib/lv2/:/usr/local/lv2
\end{lstlisting}
\texttt{/cin-path/lv2ui <lv2-uri>} \\
For example:
-\begin{lstlisting}[language=Bash]
+\begin{lstlisting}[language=Bash,numbers=none]
/tmp/cinelerra-5.1/bin/lv2ui http://calf.sourceforge.net/plugins/Flanger
\end{lstlisting}
\end{description}
\subsubsection*{Pane 2}
-\label{ssub:pane1}
+\label{ssub:pane2}
This section is used to modify the color of your selection. Descriptive commentary for this pane.
The titler supports mainly \textit{TTF}, true type fonts. It supports others but TTF are the most reliable. To add true type fonts, copy the \texttt{.TTF} files to the fonts directory. In that directory run
\vspace{1ex}
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=Bash,numbers=none]
# /usr/lib/cinelerra/fonts
ttmkfdir && mv fonts.scale fonts.dir
\end{lstlisting}
Figure~\ref{fig:title03}.
\vspace{1ex}
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=Bash,numbers=none]
<size 15>Buddy, the <color red><bold 1>bad dog</bold><color white> ate my homework !<png /tmp/buddy.png><ul 1><size +>There are<ul 0><size +>2<sup 1>10<sup 0>cats <font Action man (misc)>to chase?
\end{lstlisting}
Some of the system fonts are automatically included in the set of fonts being used by cinelerra. The easiest way to add additional fonts for the Title plugin's set, is to use ones available in specific directories on your computer as long as they have a \texttt{fonts.scale} file already set up. You can run \texttt{mkfontscale} to create this file within that directory. In order to include a specific directory you set an environment variable before starting cinelerra which stays in effect until it is unset or until the next reboot. Below is the method and an example.
\vspace{1ex}
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=Bash,numbers=none]
export BC_FONT_PATH=<colon-separated-search-path-for-fonts>
export BC_FONT_PATH=/usr/share/fonts
\end{lstlisting}
If you have problems with a specific font or set of fonts, there is a debug option available to determine which font is an issue. When starting cinelerra, you should set up the variable:
\vspace{1ex}
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=Bash,numbers=none]
export BC_FONT_DEBUG=1 (default is 0 for no debug)
unset BC_FONT_DEBUG (to remove debug messages)
\end{lstlisting}
Then start cinelerra from a terminal window to see the fonts being loaded and previewed in the Titler. This should point out any issues. Another debug methodology is to remove all fonts from being used and subsequently add in the ones that you want. For example:
\vspace{1ex}
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=Bash,numbers=none]
export BC_FONT_PATH=: #(the : "colon" removes all automatic system and cinelerra fonts)
export BC_FONT_PATH=:/usr/share/fonts #(remove all fonts and then add /usr/shar/fonts)
\end{lstlisting}
To build findobject and the other plugins using opencv, access the src using git:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=Bash,numbers=none]
git clone -depth 1 "git://git.cinelerra-gg.org/goodguy/cinelerra.git" cinelerra5
\end{lstlisting}
then configure the build, but add the \texttt{- -with-opencv} configure parameter.
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=Bash,numbers=none]
cd <path>/cinelerra-5.1
./autogen.sh
./configure <add std params, eg: --with-single-user> --with-findobect=sta
To get opencv built in the easiest way possible (need internet access because builds directly from the opencv github but this changes wildly):
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=Bash,numbers=none]
./configure <params> --with-opencv=sta,git
\end{lstlisting}
The OpenCV plugins are built only in the 64-bit tarball builds, both static and dynamic. However, due to size these plugins are not included with pkgs. But it is relatively easy to add the current 6 plugins for your distro via a simple procedure of copying the plugins from the tarball to the cin5 install plugin path. They are:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=Bash,numbers=none]
cin/plugins/opencv/findobj.plugin
cin/plugins/opencv/flowobj.plugin
cin/plugins/opencv/gaborobj.plugin
\label{sub:renederd_video_effets}
\subsubsection*{Reframe}%
-\label{ssub:time_stretch}
+\label{ssub:reframe}
This does exactly the same thing as \texttt{ReframeRT} in \textit{Stretch} mode. It multiplies the output frame number by the scale factor to arrive at the input frame number and changes the length of the sequence. Unlike \texttt{ReframeRT}, this must run from the Video menu and render its output. Be aware Reframe does not write the scaled frame rate as the frame rate of the rendered file. It produces a file of scaled length and equal frame rate as the project. The new length is $\frac{1}{scale factor}$ as big as the original sequence.
Currently, to activate the commercial database (db) methods you must do the following as root:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
cd <cin-path>/bin
mkdir /cinelerra #yes, currently only in the / filesystem
./cin_db /cinelerra/media.db #to create a new empty commercial capture database
You can automate Cinelerra batch renders from other programs. In the batch render dialog, once you have created your list of batch render jobs, you can click the button \texttt{Save Jobs} and choose a file to save your batch render list to. Once you have created this file, you can start up a batch render without needing to interact with the Cinelerra user interface. From a shell prompt, from a script, or other program, execute:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
{path_to_cinelerra} -r batchjob.xml
\end{lstlisting}
substituting your actual filename for \texttt{batchjob.xml}. When invoked with these parameters, Cinelerra will start up and perform the rendering jobs in that list, without creating its usual windows.
On the command line run:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
cinelerra -r
\end{lstlisting}
\item click OK on the bottom of the Preferences window.
\end{itemize}
\item On the client computers ($192.168.1.12$), start 5 background cinelerra tasks via:
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
$ cd /{path_to_cinelerra}
$ cin -d 401
$ cin -d 402
$ cin -d 405
\end{lstlisting}
\item On the master node (localhost), start the 2 background cinelerra tasks via:
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
$ cd /{path_to_cinelerra}
$ cin -d 406
$ cin -d 407
Initially, when the framerate scaling values are zero, the program just uses package length --- render size
divided by the number of packages to portion out the work (if not labels). If something goes wrong or the rates become suspect, then all of the rest of the work will be dumped into the last job. When this happens, you really should \texttt{reset rates} for the next render farm session to restart with a good balance.
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
{cinelerra pathname} -h #displays some of the options.
\end{lstlisting}
\begin{enumerate}
\item On each of the computers, install the nfs software if not already installed. For example, on Debian 9
you will need to run: (be sure to check/verify before using any command line):
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
$ apt-get install nfs-kernel-server
\end{lstlisting}
\item On the computer that contains the disk storage to be shared, define the network filesystem. For
example to export \texttt{/tmp}, edit the \texttt{/etc/exports} file to add the following line:
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
192.168.1.0/24(rw,fsid=1,no_root_squash,sync,no_subtree_check)
\end{lstlisting}
\item Next reset the exported nfs directories using:
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
$ exportfs -ra
\end{lstlisting}
and you may have to start or restart nfs:
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
$ systemctl restart nfs
\end{lstlisting}
\item Each of the render farm computers must mount the exported nfs target path. To see the exports
which are visible from a client, login as root to the client machine and keyin:
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
$ showmount -e <ip-addr> #using the ip address of the storage host
\end{lstlisting}
\item to access the host disk storage from the other computers in the render farm, mount the nfs export on
the corresponding target path: (be sure to check/verify before using any command line):
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
$ mount -t nfs <ip-addr>:/<path> <path>
\end{lstlisting}
where \texttt{<path>} is the storage host directory, and \texttt{<ip-addr>} is the network address of the storage host.
Because all of the computers must have the same directory path, create that same directory path with the same uid/gid/permissions on each storage client computer ahead of time.
\item To make this permanent across reboots on the client nodes, add the following line to \texttt{/etc/fstab}:
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
{masternode}:/nfsshare /mnt nfs defaults 0 0
\end{lstlisting}
You can make this permanent on the disk storage host BUT the command lines shown, which were
correct in January 2018 on Fedora, may be different for your operating system or in the future. In
addition if your network is not up, there may be numerous problems. If you make a mistake, your
system may not boot. To make permanent, add the following line to \texttt{/etc/fstab}:
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
192.168.1.12:/tmp /tmp nfs rw,async,hard,intr,noexec,noauto 0 0
\end{lstlisting}
You will still have to mount the above manually because of the \textit{noauto} parameter but you won’t
change that.
Later, to remove access to the storage host filesystem:
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
$ umount <path>
\end{lstlisting}
\item Add the hostname or the IP address of each of the client nodes in the Hostname textbox and the port
number that you want to use in the Port textbox. You can make sure a port number is not already in
use by keying in on the command line:
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
$ netstat -n -l -4 --protocol inet
\end{lstlisting}
Next, click on the \texttt{Add Nodes}
\end{enumerate}
\item[Create Workflow] While working on the master computer, it is recommended that you keep all the resources being used on the same shared disk. Load your video/audio piece and do your editing and preparation. Add any desired plugins, such as a Title, to fine-tune your work. You want to make sure your video is ready to be rendered into the final product.
\item[Start the Client Nodes] To start up the client nodes run Cinelerra from the command line on each of the client computers using the following command:
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
/{cinelerra_pathname}/cin -d [port #] ; \#for example /mnt1/bin/cinelerra -d 401
\end{lstlisting}
This starts cinelerra in command prompt mode so that it listens to the specified port number for commands from the master node for rendering. When you start each of the clients up, you will see some messages scroll by as each client is created on that computer, such as:
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
RenderFarmClient::main_loop: client started
RenderFarmClient::main_loop: Session started from 127.0.0.1
\end{lstlisting}
As it completes its jobs, you will should see:
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
RenderFarmClientThread::run: Session finished
\end{lstlisting}
A quick way to start a sequence of clients is to use:
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
or n in `seq 1501 1505`; do cin -d $n; done
\end{lstlisting}
\item[Render Using Render Farm] After you have followed the preceding steps, you are ready to use the render farm. Click on File $\rightarrow$ Render\dots which opens the render dialog. The most important point here is to use for \texttt{the Output path / Select a file to render to} a path/file name that is on the shared volume that is also mounted on the clients. Click on \texttt{OK} to render. The cinelerra program divides the timeline into the number of jobs specified by the user. These jobs are then dispatched to the various nodes depending upon the load balance. The first segment will always render on the master node and the other segments will be farmed out to the render nodes. Batch Rendering, as well as BD/DVD rendering, may use the render farm. Each line in the batchbay can enable/disable the render farm. Typically, video can be rendered into many file segments and concatenated, but normally audio is rendered as one monolithic file (not farmed).
\item check \texttt{OK}
\end{itemize}
\item On each buddy client, create a job for each port:
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
/{cinelerra_pathname}/cin -d port#
\end{lstlisting}
\item On the master, bring up the render menu and name the output files, for example \texttt{/tmp/myoutput.mp4}.
\label{fig:index}
\end{figure}
Or, one of the convenient features of cin5 is the redirection of the path via \texttt{CIN\_CONFIG} as in:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
CIN_CONFIG=/<shared_file_pathname>/<filename_such_as_.bcast5> /<cinelerra_pathname>/cin
\end{lstlisting}
This means that you can make project related configurations that do not impact the default \texttt{\$HOME} config. You can either export your default \texttt{\$HOME} config or the \texttt{CIN\_CONFIG} config to use on the render farm.
This 2 line ffmpeg 2-pass operation can be functionally duplicated in Cinelerra in the steps below them:
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
ffmpeg -y -i input -c:v libx264 -b:v 2600k -pass 1 -c:a aac -b:a 128k -f mp4 /dev/null && \
ffmpeg -i input -c:v libx264 -b:v 2600k -pass 2 -c:a aac -b:a 128k output.mp4
\end{lstlisting}
\item Set the Video Compression to h264.mp4 (as seen in the example).
\item Set the bitrate to $2600000$ ($2600k$ as in ffmpeg example above).
\item Add the following 2 lines after the first line:
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
flags +pass1
passlogfile /tmp/{temporary log file name}.log
\end{lstlisting}
\end{itemize}
\item Click on \texttt{New} to create the second pass job. You will see this second job in the listbox below.
Use the Video wrench and change pass1 to pass2 as follows.
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
flags +pass2
\end{lstlisting}
\item Click checkmark \texttt{OK}.
\begin{description}
\item[x265:] add this line:
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
x265-params=pass=1:stats=/tmp/{temporary log file name}.log
\end{lstlisting}
at the time this document was written, you should see in the output: \\ \texttt{stats-read=2}
\item[libvpx-vp9, xvid, and huffyuv:]~
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
cin_stats_filename /tmp/{temporary log file name}.log
flags +pass1 (or flags +pass2 for the second pass)
\end{lstlisting}
As container Matroska (.mkv) is used, but also mp4 and others are
possible.
-\vspace{2ex} \begin{lstlisting}[language=Bash]
+\vspace{2ex} \begin{lstlisting}[language=bash,numbers=none]
matroska libx265
# CRF 16 creates a balanced compromise
\begin{enumerate}
\item on a terminal window create a named pipe file, for example:
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
mknod /tmp/piper.yuv p
\end{lstlisting}
load your video and do your editing
\item for \texttt{Insertion Strategy}, you will want to make sure to select \textit{insert nothing}
\item click for \texttt{OK} on the green checkmark.(the cinelerra gui will look like it is hanging while waiting for a command line to use the pipe.)
\item on the terminal window, keyin your command, for example:
- \begin{lstlisting}[language=bash]
+ \begin{lstlisting}[language=bash,numbers=none]
/mnt0/build5/cinelerra-5.1/thirdparty/ffmpeg-3.4.1/ffmpeg -f rawvideo -pixel_format yuv420p \ -video_size 1280x720 -framerate 30000/1001 -i /tmp/piper.yuv /tmp/pys.mov
\end{lstlisting}
\end{enumerate}
A slightly different option can be used instead that may be more familiar to some. In the render menu after choosing the File Format of \textit{ffmpeg}, use the pulldown to choose \textit{y4m} as the file type. This choice results in putting a header on the rendered output with some pertinent information that can be used for ffmpeg processing thus alleviating the requirement for \textit{pixel\_format}, \textit{video\_size}, and \textit{framerate} on the ffmpeg command line. In this case the format is \texttt{yuv4mpegpipe} instead of \texttt{rawvideo}. An example command line would look as follows (assuming the created pipe is called \texttt{piper.y4m}):
-\begin{lstlisting}[language=bash]
+\begin{lstlisting}[language=bash,numbers=none]
ffmpeg -f yuv4mpegpipe -i /tmp/piper.y4m -vcodec libx264 /tmp/test.mp4
\end{lstlisting}
\end{center}
\section{Compositor window }%
-\label{sec:compositor_window}
+\label{sec:compositor_window_shortcuts}
\subsection{Compositor buttons }%
\label{ssec:compositor_buttons}
\end{center}
\section{Viewer window }%
-\label{sec:viewer_window}
+\label{sec:viewer_window_shortcuts}
\subsection{Viewer buttons }%
\label{ssec:viewer_buttons}
\end{enumerate}
\subsection{Final Note}%
-\label{sub:final_note}
+\label{sub:final_note_on_acceleration}
In wrapping up this Hardware Acceleration section, you may want to refer to the following to determine the current supported formats:
\begin{figure}[htpb]
\centering
\includegraphics[width=\linewidth,keepaspectratio]{images/Fenstergrundposition-en.png}
- \captionsetup{labelformat=empty, textformat=empty}\r
+ \captionsetup{labelformat=empty, textformat=empty}
\caption[The four windows (cc-by-sa Olaf)]{No text}
\label{fig:Fenstergrundposition-en}
\end{figure}
\end{tikzpicture}
\caption{Modify target}
- \label{fig:insertion-points}
+ \label{fig:modify-target}
\end{figure}
To delete the entire set of files listed on the filter rule, highlight the rule line and hit the “Del” button.
Table showing the allowed usage:
-%TODO crate table for below code
-\begin{lstlisting}
+%TODO create table for below code
+\begin{lstlisting}[numbers=none]
target: | eq ge gt ne le lt matches around
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
patterns | <---- strcmp ---------> + filter + nearest
\centering
\includegraphics[width=0.8\linewidth]{images/snapshot.png}
\caption{Snapshot menu and choices}
- \label{fig:}
+ \label{fig:snapshot}
\end{minipage}
\begin{minipage}{.49\linewidth}
\centering
\node (img2) [yshift=2cm, xshift=-1cm, rotate=0] {\includegraphics[width=0.07\linewidth]{images/reticle.png}};
\end{tikzpicture}
\caption{Grabshot reticle \& orange box}
- \label{fig:}
+ \label{fig:grabshot_recticle}
\end{minipage}
\end{figure}
\hfill
\begin{minipage}{.29\linewidth}
\centering
- \includegraphics[width=0.99\linewidth]{images/overlays_list1.png}
+ \includegraphics[width=0.99\linewidth]{images/overlays_list2.png}
\caption{Note Titles box hot spot }
- \label{fig:overlays_list1}
+ \label{fig:overlays_list2}
\end{minipage}
\hfill
\begin{minipage}{.29\linewidth}
\centering
- \includegraphics[width=0.99\linewidth]{images/overlays_list1.png}
+ \includegraphics[width=0.99\linewidth]{images/overlays_list3.png}
\caption{Cam/Proj XYZ toggle to fine tune}
- \label{fig:overlays_list1}
+ \label{fig:overlays_list3}
\end{minipage}
\end{figure}
-
\subsection{Sound Level Meters Window}%
\label{sub:sound_level_meters_window}