text:
What improvements can I make to my FFMPEG script?
I am trying to create an FFMPEG script for some of my emulated game captures. I normally use Virtualdub2 (formerly Virtualdubmod) to upscale and trim my game captures for YouTube. With my laptop gone and the nearest area where can I use Virtualdub2 is at my library. My Chromebook does not use Windows programs anyway and my old XP computer is too slow (I need more memory, an SSD drive and a new Pentium 4 processor). I was hoping to create an FFMPEG script that I can use to automate my process. I want to know what I can do to improve the script as I mostly upscale the emulated game captures from Genesis, Super Nintendo, Nintendo games for YouTube. I could try AVISynth but I am still trying to learnt he process. Here is the script in question:

ffmpeg -i input -vf "scale=iwX:ihX" -sws_flags neighbor -pix_fmt yuv420p -c:v libx264 -preset slower -crf 16 -c:a libopus -b:a 128k

I am mostly aiming for lossless with a Slower compression, HD 720 (4x upscaling) and nearest neighbor (pointresize). I want to put it in an mp4 container with aac or libopus for audio sound. I also wanted to have aspect ratio correction as well. What do you think of my script? Or can it use some improvements? I mostly got my ideas from these sites right here.

you can add -vf "scale=iwX:ihX:force_original_aspect_ratio=decrease,pad=max(iw\,ih*(16/9)):ow/(16/9):(ow-iw)/2:(oh-ih)/2" to your script to correct aspect ratio and pad the video.
You can also add -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" to speed up your video and audio2.

I am not really aiming for 16:9 as much as I am aiming for 4:3.


text:
How to cut video, add audio and burn subtitle while cropping video all in one command - ffmpeg
Currently I have the following command,
which cuts the video, adds audio and burns subtitle into the video.
-ss 00:00:30 -t -i video.mp4 -i audio.wav -vcodec copy  -acodec copy -map 0:0 -map 1:0 -vf subtitles=subtitle.srt

but I need to crop the video before the subtitle is added. I know it is possible to crop video using the command:
-vf crop=405:720

or using
-filter:v crop=405:720

but I am unable to use it in conjunction with the above statement. What would be the best approch to get the desribed outcome?

crop uses 4 variables crop=405:720:0:0 where 0:0 is the x,y coordinates of the 405:720 crop
also ... I doubt it you can codec copy, because there is a change in size of the frames, therefore you need to reencode

I was able to find the answer:
ffmpeg.exe -ss 00:00:30 -t 00:00:10 -i video.mp4 -i audio.wav -c:a copy -map 0:0 -map 1:0  -vf "crop=405:720,subtitles=subtitle.srt"  output.mp4

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

sort: votes


text:
How to have stylize and generate effects visible on top of text that is being used for track matte in After Effects?
I am currently using Adobe After Effects 2023 and am having difficulty finding a solution on how to add effects to the text layer that is being used for a track matte.

I would like for the pattern of "S" (made by an image that gets distorted throughout) to stay, but I would also like to include the effects that are on the other letters that make them a little 2.5D, similar to Photoshop with embossing and lighting. I am now trying to find a way to make it so the text with those effects ("T" and so on) is available on top of the style of the letter "S". Basically, I'd like the solid colors on the other letters to no longer be #EEEEEE but transparent.
I see the eye icon is turned off for the text layer being used for track matte so I assume the effects on it are not visible. The one thing I am starting to work on for another try is making those similar effects that are constant in Adobe Illustrator by checking which opacity would work on top of the colors on "S" and making a gradient mask. Either way, if there is any solution to just using AE for this, that would be lovely.

If you're using layer styles and/or some rasterising video effects, you'll need to pre-comp those layers before applying track mattes to them.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
ffmpeg command to convert interlaced video to progressive without any loss of quality
Can anyone provide me with the ffmpeg code to convert deinterlaced 80's video to progressive video without any loss of quality - ideally where I could deinterlace only the interlaced fields(I use mediainfo to determine that) and basically preserve all the information in the video.
Thanks
Simon

'without any loss of quality' is not really possible. You're going to have to interpolate half of each field, and no matter how you do that you're going to introduce signal loss. If you mean no perceptible loss of quality then you're asking a more realistic question.

FFMpeg video filter documentation mentioned supporting deinterlacing filters

bwdif: Bob Weaver
estdif: Edge Slope Tracing
kerndeint: Donald Graft’s adaptive kernel
mcdeint: Apply motion-compensation
nnedi: neural network edge directed interpolation
w3fdif: Weston 3 Field
yadif: yet another

and the MSU result includes

bwdif

kerndeint

mcdeint

nnedi

w3fdif

yadif

The best among all FFMpeg filters is the rank 13 NNEDI

MOS: 0.511
PSNR: 37.099
SSIM: 0.954
VMAF: 93.246
FPS on CPU: 1.910

However, i would prefer to the rank 14 Bob-Weave Deinterlacer due to the FPS on CPU: 46.450
At last, people had done the screen captures of using those filter, you may take a look for reference
P.S. forget to mention, here is the Bing Chat answer


text:
After Effects: How to keep text same width through changes
Using After Effects, I am trying to do a countdown of 5 minutes with a setup like this: 5m 00s, 4m 59s, 4m 58s... I have the countdown already set up with Slider Control. However, I'm trying to use a mask for each character separately, which I also mostly have under control, except I realized that the text moves when the width of the text box changes as the text changes, for example, 2m 00s vs 1m 59s because of the width of the character "1" is smaller than "2" in the font I am using. Is there a way I can make the text box width, specifically each character's placement, not change even while Slider is in use? I have already gotten started on creating changes to the mask each time it changes, but I have a feeling it will be a lot of work.

Option 1 - use a fixed width font, and make sure the text layer you create is left aligned. You'll need to select the text in your layer before you switch the paragraph to left alignment.
Option 2 -  Do something like this (I'm sure there's a nicer way to do it), but from looking at this script for countdown timers, and this script for finding the right character, I hacked up this:
Make a text layer for each character.
Make sure each text layer is left aligned.
Put this in the source text expression of each character you want to control:
st = 300;
t = st - time;
c = timeToTimecode(t);
c = c.substring(4,8)
output = c.charAt(3);
output

Change the “charAt” variable for each position. Eg 0 is the furthest right character, and (3) would be the furthest left character (the minute).


text:
After Effects: Workflow advice, working from/updating archived projects
I have a question about optimizing my workflow in regards to archiving. I feel like there must be a better way method to what I’m doing at the moment. What I currently do, after I’m done working in a .aep file, is clean up my project, organize my Project panel, get rid of any unused or redundant compositions/files etc., and finally use File > Dependencies > Collect Files…, to put everything in one place, and have everything linked up in a concise, local location.
This works great imo. I was wondering however whether it was possible to, say, when working from this new .aep file – adding new files/directories to it, maybe removing some – ‘update’ it in such a way that the directory setup doesn’t change, but all the additional files get added to this directory.
Am I using the Collect Files… function wrong? Is it something only used for preparing files for passing them on? Is there a way of working that comes close to what I’m describing? Very curious to hear your guys input or workflow advice. I feel like there’s a better way of working that I’m not utilizing.
Thanks in advance, and kind regards,
Armand

This isn't the right answer, but it's what I do:
Keep everything for your project in a single folder.  Everthing.  Even if it means duplicating things from other projects or from templates that you use all the time.
Regularly back up the folder to another drive.  Use Chronosync to do this.  It works very reliably, and can do incremental backups intelligently.
When you're done, keep your backups somewhere sensible and delete from your working drives.
This isn't the most space-efficient way to work, but it means you reliably never lose anything.
Collect files takes forever and is complicated.  Chronosync means pressing a single button then forgetting about it.


text:
FFMpeg - How to delete parts of a video that (partially) match an image
I have videos that include ad breaks whereupon the frames include a big logo in the middle (and text saying ad break). I have extracted one of those frames as an image.
I want to run an ffmpeg command to delete those ad breaks (to reduce the size of the video), but still haven't found how.
After researching those parts, I think I have a command which identifies those frames that match the extracted image (based on https://superuser.com/a/1615601/1784971)
ffmpeg -i input.ts -i image.png -filter_complex "blend=all_mode=difference,blackframe=amount=0:threshold=1,metadata=select:key=lavfi.blackframe.pblack:value=10:function=greater,metadata=print:file=ads.txt" -an -v 0 -f null -

Sample output
frame:0    pts:0       pts_time:0
timecode=20:00:05:10
lavfi.blackframe.pblack=13
frame:1    pts:1502    pts_time:0.0166889
timecode=20:00:05:11
lavfi.blackframe.pblack=13
frame:2    pts:3003    pts_time:0.0333667
timecode=20:00:05:11
lavfi.blackframe.pblack=13
frame:3    pts:4505    pts_time:0.0500556
timecode=20:00:05:12
lavfi.blackframe.pblack=13
frame:4    pts:6006    pts_time:0.0667333
timecode=20:00:05:12
lavfi.blackframe.pblack=13
frame:5    pts:7508    pts_time:0.0834222
timecode=20:00:05:13
lavfi.blackframe.pblack=13
frame:6    pts:9009    pts_time:0.1001
timecode=20:00:05:13

Now I don't know how to tell ffmpeg to delete/ignore those frames. Would the -select option work? If so, how to combine -select with the filter above? Those videos also have audio so I'm looking for a solution that keeps that in sync.
Thanks,


text:
How do I adjust my cursor to normal size in Medal?
Why is my cursor non existent? I'm trying to get it to the right size. The cursor should align exactly with the circle (inside the circle with no overlap, but the exact same size). That's how it looks for me, but it looks different once Medal clips it. How do I change this?

Are you talking about https://medal.tv/ ? What platform are you using? What version, etc.

Yes, windows Medal.tv. Didn't say anything else about the version


text:
Is there a way to decrease blurriness in video so that the text is readable?
I have a video of a lecture but the resolution is not great and I can't really read what's written on the blackboard. Is there a way to artificially increase the resolution or decrease blurriness? It doesn't have to be perfect, just so that I can read the text. Preferably in After effects since that's the one editor I have, but anything else will do as well.

Have you looked at the "Sharpen" effect, which increases contracts.


text:
Can you fix videos with "error: more than 5 seconds of late video" without re-encoding with ffmpeg?
I have obtained a video, ffprobe for it shows:
$ ffprobe test-000000.mp4
ffprobe version 4.2.7-0ubuntu0.1 Copyright (c) 2007-2022 the FFmpeg developers
...
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test-000000.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.29.100
  Duration: 00:01:25.76, start: 0.040000, bitrate: 187 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 608x448, 186 kb/s, 8.98 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler

mediainfo for the same shows:
$ mediainfo test-000000.mp4
General
Complete name                            : test-000000.mp4
Format                                   : MPEG-4
Format profile                           : Base Media
Codec ID                                 : isom (isom/iso2/avc1/mp41)
File size                                : 1.92 MiB
Duration                                 : 1 min 25 s
Overall bit rate                         : 187 kb/s
Writing application                      : Lavf58.29.100

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L3
Format settings                          : CABAC / 4 Ref Frames
Format settings, CABAC                   : Yes
Format settings, Reference frames        : 4 frames
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 1 min 25 s
Bit rate                                 : 186 kb/s
Width                                    : 608 pixels
Height                                   : 448 pixels
Display aspect ratio                     : 4:3
Frame rate mode                          : Variable
Frame rate                               : 8.979 FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.076
Stream size                              : 1.90 MiB (99%)
Writing library                          : x264 core 155 r2917 0a84d98
Encoding settings                        : cabac=1 / ref=1 / deblock=1:0:0 / analyse=0x3:0x3 / me=dia / subme=1 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=12 / lookahead_threads=2 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=1 / keyint=25 / keyint_min=2 / scenecut=40 / intra_refresh=0 / rc=crf / mbtree=0 / crf=35.0 / qcomp=0.00 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / pb_ratio=1.30 / aq=1:1.00
Codec configuration box                  : avcC

When I start playing this video with vlc, it starts playing fine for 5-6 seconds, and then I get suddenly:
...
[00007f066cc1bad0] avcodec decoder error: more than 5 seconds of late video -> dropping frame (computer too slow ?)
[00007f066cc1bad0] avcodec decoder error: more than 5 seconds of late video -> dropping frame (computer too slow ?)
[00007f066cc1bad0] avcodec decoder error: more than 5 seconds of late video -> dropping frame (computer too slow ?)
[00007f066cc1bad0] avcodec decoder error: more than 5 seconds of late video -> dropping frame (computer too slow ?)
[00007f066cc1bad0] avcodec decoder error: more than 5 seconds of late video -> dropping frame (computer too slow ?)
...

I think also, the video at that point was showing a still frame for quite a long time (screen capture from a PC desktop), so it's quite possible the capturing process did not insert keyframes there or something.
So, I was wondering, is it possible to fix this kind of an error message without reencoding (in ffmpeg that would be -vcodec copy), aside from inserting keyframes if that is necessary (though I'm not sure, maybe inserting keyframes does count like re-encoding in greater extent than -vcodec copy?)? If not, what would be the best way to fix this problem with ffmpeg, so I end up with minimal changes in existing quality?

Will just note, that I experienced this on one machine's vlc; when I tried on what would be presumably the same vlc version on the same OS (Ubuntu 20.04) but on a different machine, I did not get that error.
Found also these threads:

vlc problems. [solved] / Multimedia and Games / Arch Linux Forums
#8075 (ability to play video successfully depends on encoding fps) – FFmpeg

... that imply this error might be due to graphics acceleration, and not something to do with the encoding of the video, or ffmpeg or vlc per se.


text:
How can high quality custom animation video be rendered in cloud in a reasonable short time?
I would render videos like this in cloud:
https://previews.customer.envatousercontent.com/h264-video-previews/6505acb5-647e-4740-a3ec-efe9ccaffe7e/40871529.mp4
I heared about AWS EC3 and Workspaces.
Important, some part of the movie is changing rendering by rendering, but most of it remains the same.
I would renderer only a 5-10 sec video, but not longer then 30 sec.
I do not insist to use After Effect, but I need high quality solution.
Would you suggest me alternatives?

Seems to just be a duplicate of Render video in the cloud?

This really does not offer any more detail than your last attempt at asking this question.  I'm also not really sure how well it's going to fit on this site.  There is nothing special about "the cloud", it's just "other people's computers".  Rendering on cloud compute resources would be no different than any other form of network rendering farm and would depend entirely on what rendering nodes are supported by your software of choice.
If you want to ask about how to use render nodes for a particular product, I'd suggest asking about how that product's render nodes work.


text:
Why X265 conversion is very slow on some devices
When I am converting my video using FFMpeg, I am using x265 to do the compression. But the issue is this conversion is much much slower. But while I am using my iPad 6th Generation, this works much faster. So I want to know the reason behind this.
Note : X264 is working fine on both devices.
Thank you.

iPad is probably using Apple's h/w H265 encoder, not x265.

@Gyan no , im using the command to use x265

I found my answer.
The issue was ffmpeg was only using two thread and two pools. I had to trigger the parameter "-x265-params" to enable more thread and pools as my device capability.


text:
AI / Automatic assisted mask with face/body detection for clone effect video?
I'd like to very closely mask my head for this 'clone effect' multilayered camera shot.
Is there an efficient tool I can use which will detect a human figure/face and mask based on that?
Should I just use the motion tracking within FCP and assign the transform of a spherical head shaped draw mask to that tracker?
How best can I 'cut out' my head/body against the background footage to sell the clone illusion?

I would do this using After Effects and the built in RotoBrush tool.
Apply Rotobrush to each overlaying layer to make the layers behave naturally with each other.
It will take some time, but I reckon it's what is usually used to make videos like this.
Runway also has some very cool looking AI rotobrush-type tools, but I haven't used them.

I would break up the mask into a couple of pieces. Easier to handle the fine-tuning.
There are plugins that can track this. You have to try and see which works best.
Rotoscoping is still one of the things that need a lot of work by hand. Sometimes it's just you have to sit and do it.


text:
Can FFmpeg perform audio phase subtraction?
I can do audio phase subtraction in Adobe Audition like so:

How can I do this with FFmpeg? Is it possible?
I've googled for audio phase subtraction, and looked at https://ffmpeg.org/ffmpeg-filters.html, nothing seems to work for me.
I want to do phase subtraction in batches and support for stereo audio.

You can do this in something like Audacity, but why the need for batch processing? It's the kind of thing that only works if you have absolute phase-alignment to start with*. I struggle to see a use case you would have multiple examples of this type of overlay with identical start-points/phase alignment. It makes the whole question feel like a bit of an XY Problem *[I didn't watch the whole thing, but did the guy tell you it took him 20 minutes to phase-align his example before he started the video?]

See the aeval filter.

@tetsujin I want to compare audio compression using different codecs, with perfectly aligned audio files. Additionally, I want to compare audio encoding across various scenarios, which is why I need to perform this task in batches.

I have found a solution:
ffmpeg -i input0.wav -i input1.wav \
  -filter_complex \
  "[1]    aeval  = -val(0) | -val(1)                     [a]; \
   [0][a] amerge = inputs=2,pan=stereo|c0<c0+c2|c1<c1+c3 [b]" \
  -map "[b]" -c:a flac output.flac

This command subtracts input1.wav from input0.wav and assumes that both inputs are stereo.
See https://trac.ffmpeg.org/wiki/AudioChannelManipulation for manipulating audio channels.

Note: the examples assume the files are the same length and that various defualt options are desirable.
Invert the phase with volume filter
FFmpeg ^
-i audioReference.wav ^
-i audioTarget.wav ^
-filter_complex [1]volume=-1[streamInverted];[0][streamInverted]amix ^
audioDelta.wav ^
-hide_banner -loglevel level+info

Subtract the mask with amix filter
FFmpeg ^
-i audioReference.wav ^
-i audioTarget.wav ^
-filter_complex "[0][1]amix=weights=1 -1" ^
audioDelta.wav ^
-hide_banner -loglevel level+info ^

Note well: the space-delimited values in the weights parameter of the amix filter. Pay attention to quoting and escaping.
Invert the phase with aeval filter
FFmpeg ^
-i audioReference.wav ^
-i audioTarget.wav ^
-filter_complex [1]aeval=-val(ch):c=same[streamInverted];[0][streamInverted]amix ^
audioDelta.wav ^
-hide_banner -loglevel level+info

Test by subtracting the signal from itself
FFmpeg ^
-i audioReference.wav ^
-filter_complex [0]asplit[original][clone];[clone]volume=-1[test];[original][test]amix ^
audioInterfered.wav ^
-hide_banner -loglevel level+info


text:
Why this SCART adapter only works for some video tapes?
In order to digitalize video tapes (K7) recorded with a camcorder, I used a SCART to hdmi converter (I think it's this model https://www.amazon.co.uk/Converter-Upscale-Adaptor-Monitor-Projector-Black/dp/B08HVNYH4X?&linkCode=ll1&tag=bluecine-21&linkId=2524a257eefa7b5f01ed7778adf49231&language=en_GB&ref_=as_li_ss_tl), in between my VHS tape reader and an hdmi to usb acquisition card.
This work nicely to record Disney tapes, but if I use instead a K7 recorded from the camcorder, I get from the SCART to hdmi converter a blue screen with a "no output" message (if my memory is good). I tried to plug the scart converter to an hdmi screen directly, same message. However, I tried to replace the SCART converter with another SCART to HDMI device (actually it's a device used to record scart or hdmi inputs to a hard drive to save them for later use… but for some reasons I don't have access to this device anymore) and it's working…
Any idea why my original SCART to HDMI converter is working only for Disney tapes but not for manually camrecorded tapes?

Is the camcorder set to PAL vs NTSC or something like that?  If you list the models of all the devices you're using (camcorder, VHS machine etc), you might get better answers

Thanks for your answers. Since I live in France I would expect it to be PAL, but I might be wrong: how could I even check? I don’t even know which camcorder was used to record the video. Regarding the VHS machine, I’m not next to it right now, but I’ll let you know when I have access to it later.

France used yet another analogue  video encoding system called SECAM, so you could definitely be having a format conversion issue if some tapes aren’t working. https://en.wikipedia.org/wiki/SECAM

Oh good to know, thanks a lot, I guess it make sense… I thought that the VHS machine reader would convert it to the same format irrespective of the K7 input format, I guess it’s not what happens? Is it dependent on the VHS reader, or are all readers just forwarding the format of the K7 ? (i.e. could it be that on another VHS reader this works fine?)

Secam L (which was the broadcast format for Analog Color in France) does have differences in the video signal to PAL though both are 625 lines, it is likely this did not trigger the digitizer. You could check if there are settings for your digitizer to select line/field rate and or Color system. Ironic as the complexity of SECAM meant that a large amount of production was shot and edited in PAL and then transcoded for transmission. SECAM L being much more suitable for the use of fewer higher power transmitters and longer range reception in France. NTSC was much easier with no ABBA as you had in PAL...

Thanks a lot. By digitizer do you mean the Scart to HDMI device? If so it only has a 720p/1080p switch. But according to this website (that sells the same product as the one I use), this converter is supposed to handle both secam and pal (and more) https://www.amazon.fr/Goldoars-Convertisseur-P%C3%A9ritel-HDMI-Adaptateur-Support/dp/B082X4CSYM/ref=sr_1_10?keywords=convertisseur+pal+secam&qid=1683152971&sr=8-10 Do you think it’s a mistake in the description? But if secam is used only to broadcast but not to record individual videos, isn’t it a bit strange that the camcorder outputs to secam?

If it says SECAM / PAL then it should work. I presume as you are in France, it would be SECAM used in France (Soviet and Middle Eastern SECAM are different. Can you give the Camcorder details.  It is possible that the camera tapes have degraded over the years and the sync may be too ragged for the output to be locked into.  If you could find a monitor and play the tape direct to see what you have. These modern devices that blue screen or send messages do not help in diagnosis. If the tapes are over 10 years old or have been stored near magnets my money would be degradation.

Thanks! So I don’t have the camcorder details, as it’s coming from some videos made by a friend of the family of my partner 40 years ago… I just have the tape, and no idea how to even check if it’s secam/pal or other. However, the tape was working perfectly: I could easily read it directly from the Scart TV, or even using a device initially made to record TV shows on a hard drive (it was also forrmwarding scart to HDMI out, so I used this device to record the tape back then… but I will likely have other tapes to copy, and sadly, for some reasons I don’t have access to this device anymore).


text:
After Effects: Add a Null to a point of two path's intersection
I'm looking to position a null at the intersection of two paths. I'm creating a bending elbow rig with irregular shapes, and I wanted to be able to place something in the crease of the elbow as it moves.
Hopefully this image helps; as the shape rotates, the point at which the intersection of the path changes, and I'd like to be able to automatically track that point of the intersection where the cross is, which follows the slight curvature of the path.
This diagram maybe over complicated by the fact that there are two places where the paths cross (at the back of the elbow) too.
Thanks

Have you looked at using Duik for rigging? https://rxlaboratory.org/tools/duik-angela/


text:
FFmpeg dnn_processing with tensorflow backend: difficulties applying a dnn filter on an image
I am trying to perform a video segmentation for background blurring similar to Google Meet or Zoom using FFmpeg, and I'm not very familiar with it.
Google's MediaPipe model is available as a tensorflow .pb file here (using download_hhxwww.sh).
I can load it in python and it works as expected, though I do need to format the input frames: scaling to the model input dimension, adding a batch dimension, dividing the pixel values by 255 to have a range 0-1.
FFmpeg has a filter that can use tensorflow models thanks to dnn_processing, but I'm wondering about these preprocessing steps. I tried to read the dnn_backend_tf.c file in ffmpeg's github repo, but C is not my forte. I'm guessing it adds a batch dimension somewhere otherwise the model wouldn't run, but I'm not sure about the rest.
Here is my current command:
ffmpeg \
    -i $FILE -filter_complex \
    "[0:v]scale=160:96,format=rgb24,dnn_processing=dnn_backend=tensorflow:model=$MODEL:input=input_1:output=segment[masks];[masks]extractplanes=2[mask]" \
    -map "[mask]" output.png

I'm already applying a scaling to match the input dimension.
I wrote this [masks]extractplanes=2[mask] because the model outputs a HxWx2 tensor (background mask and foreground mask) and I want to keep the foreground mask.

The result I get with this command is the following (input-output):

I'm not sure how to interpret the problems in this output. In python I can easily get a nice grayscale output:

I'm trying to obtain something similar with FFmpeg.
Any suggestion or insights to obtain a correct output with FFmpeg would be greatly appreciated.
PS: If I try to apply this on a video file, it hits a Segmentation Fault somewhere before getting any output so I stick with testing on an image for now.


text:
Extracting multiple video streams using FFmpeg
I have a video file that contains 4 streams, 3 videos streams and one steam for metadata.
Stream Info:
Input #0, matroska,webm, from 'output_master.mkv':
Metadata:
title           : Azure Kinect
encoder         : libmatroska-1.4.9
creation_time   : 2021-05-20T12:11:15.000000Z
K4A_DEPTH_DELAY_NS: 0
K4A_WIRED_SYNC_MODE: MASTER
K4A_COLOR_FIRMWARE_VERSION: 1.6.110
K4A_DEPTH_FIRMWARE_VERSION: 1.6.79
K4A_DEVICE_SERIAL_NUMBER: 000123102712
K4A_START_OFFSET_NS: 298800000
Duration: 00:00:40.03, start: 0.000000, bitrate: 480934 kb/s

Stream #0:0(eng): Video: mjpeg (Baseline) (MJPG / 0x47504A4D), yuvj422p(pc, bt470bg/unknown/unknown), 2048x1536, SAR 1:1 DAR 4:3, 30 fps, 30 tbr, 1000k tbn (default)
Metadata:
  title           : COLOR
  K4A_COLOR_TRACK : 14499183330009048
  K4A_COLOR_MODE  : MJPG_1536P
Stream #0:1(eng): Video: rawvideo (b16g / 0x67363162), gray16be, 640x576, SAR 1:1 DAR 10:9, 30 fps, 30 tbr, 1000k tbn (default)
Metadata:
  title           : DEPTH
  K4A_DEPTH_TRACK : 429408169412322196
  K4A_DEPTH_MODE  : NFOV_UNBINNED
Stream #0:2(eng): Video: rawvideo (b16g / 0x67363162), gray16be, 640x576, SAR 1:1 DAR 10:9, 30 fps, 30 tbr, 1000k tbn (default)
Metadata:
  title           : IR
  K4A_IR_TRACK    : 194324406376800992
  K4A_IR_MODE     : ACTIVE
Stream #0:3: Attachment: none
Metadata:
  filename        : calibration.json
  mimetype        : application/octet-stream
  K4A_CALIBRATION_FILE: calibration.json

I am using this command to extract the first stream:
ffmpeg -i output_master.mkv -c copy  -map 0:v:0 out_1.mkv

For the other two streams, I am using this command:
ffmpeg -i output_master.mkv -c:v ffv1 -pix_fmt gray16be -allow_raw_vfw 1 -map 0:v:1 out_2.mkv
ffmpeg -i output_master.mkv -c:v ffv1 -pix_fmt gray16be -allow_raw_vfw 1 -map 0:v:2 out_3.mkv

I do not know if I am using the right commands to extracting the video streams.

It seems that you extracted correct video streams (you may omit the v: part as the all 3 first streams are video streams). What's your problem?

When I am extracting the stream, the stream information gets changed for all the streams. For example, Original Stream #1 info: Stream #0:1(eng): Video: rawvideo (b16g / 0x67363162), gray16be....., and after extracting the stream, it changes to Stream #0:1(eng): Video: rawvideo, rgb555le, 640x576,... I do not want to change anything.

It would be nice from you to append your comment directly to your question. The stream properties are changed because it will be transcoded (i.e. decoded and then encoded with ffv1 codec, as you specified in  -c:v ffv1 option). Use -c:v copy instead, but without other options for changing the stream's properties.


text:
How can I simulate a single car crash without ruining a vehicle?
I'm filming a relatively low budget horror film with a few friends, so we don't have any fancy equipment for this. The shot is supposed to be a guy driving then suddenly swerving the car off the road, maybe into a tree or, even better, ending upside down. Is there a good looking way to do this?

If you can record at 5× the normal frame rate, using a 1/25th scale model car will look somewhat realistic.
Things that roll over or bounce, or even fall off a cliff, will appear correct.
Yes, it will still look fake and cheesy, but perhaps that's what you want.


text:
Global variable scoping in Davinci Resolve Fusion?
The code below is a Null.fuse node, packed with debugging statements.
I'm running it under Davinci Resolve 18.1.4 beta 9.
print("Debug: script start")
print(test)
test = 0
print(test)

FuRegisterClass("ScopeTest", CT_Tool, {
    REGS_Name = "ScopeTest",
    REGS_Category = "Color",
    REGS_OpIconString = "fCL",
    REGS_OpDescription = "ScopeTest",
    REG_OpNoMask = true,
    REG_NoBlendCtrls = true,
    REG_NoObjMatCtrls = true,
    REG_NoMotionBlurCtrls = true,
    })

function Create()
    print("Debug: Create start")
    print(test)

    InImage = self:AddInput("Input", "Input", {
        LINKID_DataType = "Image",
        LINK_Main = 1,
        })

    OutImage = self:AddOutput("Output", "Output", {
        LINKID_DataType = "Image",
        LINK_Main = 1,
        })

    InButton = self:AddInput("Button", "Button", {
        INPID_InputControl = "ButtonControl",
        INP_DoNotifyChanged = true,
        INP_External = false,
        })

    test = 1
    print(test)
    print("Debug: Create end")
end

function Process(req)
    print("Debug: Process start")
    print(test)

    local img = InImage:GetValue(req)
    OutImage:Set(req, img)

    test = 2
    print(test)
    print("Debug: Process end")
end

function NotifyChanged(inp, param, time)
    print("Debug: Notify start")
    print(test)
    test = 3
    print(test)
    print("Debug: Notify end")
end

print(test)
test = 4
print(test)
print("Debug: script end")

My expectation is for the global test variable to be 3 after pushing the button, and for it to be still 3 when entering Process.
This is what I observe in the console instead:
[...]
Debug: Notify start
3
3
Debug: Notify end
Debug: Notify start
3
3
Debug: Notify end
Debug: Process start
2
2
Debug: Process end

I'm very confused by test still being 2 after entering Process.
Any help appreciated!


text:
Split mp4 video from URL (stored on AWS s3) with ffmpeg without re-encode, causes an issue with the start point
I am building an API endpoint as part of which i am signing an AWS s3 url to a video file encoded with mp4, then using ffmpeg to split the provided video by url to a time range (for example from second 4.0 to second 12.0), and pipe it to a stream which is directly returned to the user.
I am running into an issue where the video is split starting on the 10 second mark. In the command below it is splitting from 0-14 sec instead of 6-14. if i specify 12-18 it will split from 10-18 etc..
As part of this process this is the ffmpeg command i am using to split the video (omitting the full signed S3 url and writing to a file instead of a pipe).
ffmpeg -protocol_whitelist file,http,https,tcp,tls,crypto -ss 6.0 -to 14.0 -i https://XXXXXXXX.s3.amazonaws.com/stopwatch.mp4 -movflags +frag_keyframe+separate_moof+omit_tfhd_offset+empty_moov -f mp4 -c copy output.mp4

If i try to re-encode the video instead of using -c copy splitting works perfectly well, but is quite a lot slower.
This is the command i use to initially encode the videos and make them uniform as I upload them to AWS S3. I can control the encoding process and change if needed to be able to do the splits correctly.
ffmpeg -i video.mp4 -vf scale=1280:-2 -c:v libx264 -movflags faststart -preset slow -crf 24 -r 25 -c:a aac -b:a 128k

From the ffmpeg docs:
-ss position (input/output)
When used as an input option (before -i), seeks in this input file to position. Note that in most formats it is not possible to seek exactly, so ffmpeg will seek to the closest seek point before position. When transcoding and -accurate_seek is enabled (the default), this extra segment between the seek point and position will be decoded and discarded. When doing stream copy or when -noaccurate_seek is used, it will be preserved.

So this looks like intended behaviour, I also found out that mp4 will have IFrames set on every 10 seconds (250 frames on 25fps in my case) where the fastseek (-ss) option will seek on remote videos to the nearest Iframe and use that as a starting point.
Is there a way to change this behavior? Add IFrames to at least 1 second so i can split accurately at least to 1 second? If so are there any drawbacks to doing that? Is there another option to avoid re-encoding the segments?
I was thinking i can do multiple splits and a concat where i split-re-encode 6-10sec then split-copy 10-14 then concat the 2 segments to get 6-14sec video.
What i find strange is that with the same video provided as a local file reference to ffmpeg it splits it correctly if i simply do:
ffmpeg -ss 6.0 -to 14.0 -i stopwatch.mp4 -c copy output.mp4


text:
How to fix a presumably HDR video file that displays super washed out in all video players?
How do I fix a presumably HDR video file that displays super washed out in the Linux video player totem, the cross-platform player VLC, and also in Handbrake's video preview? All colors are extremely muted and gray.
I think the most obvious fix would be some way to fix the metadata, since I'm assuming somehow the colors are interpreted as SDR by every piece of software. I'm on Linux, so I think the preferred tool to somehow fix the embedded color profile would be the ffmpeg command line. But I have no idea what to do for this, I'm not very familiar with color profiles. It's an MKV file.
As a second approach, I want to re-encode it anyway at a lower bitrate, so if there's a way to fix this in Handbrake via a new encode I would find that useful too. However, Handbrake's color settings seem minimal and don't even have a way to manually readjust contrast and brightness for any eyeballed attempt to fix this, let alone any "this is a broken HDR file" setting.

Was the footage straight from a camera, or is it an edited, finished video?
If it's from a camera, it may have been shot using a gamma curve, such as Slog3.  This is where the image is recorded looking "washed out" and corrected afterwards during the editing/grading/post-production phase.  If this is the case, you can correct it in any modern video editing software, like Adobe Premiere or Davinci Resolve.
https://en.wikipedia.org/wiki/Gamma_correction

It's an edited finished video. I assume any video editing software could fix it with some color filter and re-encode, but I was hoping for something that either doesn't re-encode it all, or which alternatively works in Handbrake since there I know good encode settings for an overall good quality in acceptable time which with other UIs I often find very tedious to figure out. I should also note, I would prefer not to buy an editing software just for this one broken file, I assume Premiere or Resolve are not free.

Resolve is free, so long as you don't need to integrate external hardware.


text:
ffmpeg QP: AMD Radeon (Vega7) hevc_vaapi results in lager files than hevc_nvenc - why?
I've switched from an RTX 3070 to an AMD Radeon Vega7 APU (4600G/5600G). I'm trying to tweak the ffmpeg parameters, so that the transcode output results in a similar quality AND file size. hevc_vaapi with -qp 25 or greater results in worse quality and / or larger files.
Why am i failing - and is it actually me who's failing? ;)
Here are my command lines
NVENC (edit: i've got these parameters from EposVox's GitHub scripts, look him up on YouTube, he knows what he's doing - i've altered them to support subtitles)
ffmpeg -hwaccel auto -i "$1" -map 0:v -map 0:a -c:v hevc_nvenc -rc constqp -qp 24 -b:v 0K -c:a aac -b:a 256k -map 0:s -c:s copy "ff_out/$1.hevc_nvenc.qp24.mkv"

VAAPI
ffmpeg -vaapi_device /dev/dri/renderD128 -hwaccel vaapi -i "$1" -map 0:v -map 0:a -vf 'format=nv12,hwupload' -c:v hevc_vaapi -qp 24 -c:a aac -b:a 256k -map 0:s -c:s copy "ff_out/$1.hevc_vaapi.qp24.mkv"

and a directory listing for file size comparison
-rw-rw-r-- 1 user user 1,8G Apr  2 04:01 eval2.mkv
-rw-rw-r-- 1 user user 374M Feb 16 18:17 eval2.mkv.hevc_nvenc.qp24.mkv
-rw-rw-r-- 1 user user 787M Apr  2 04:19 eval2.mkv.hevc_vaapi.qp20.mkv
-rw-rw-r-- 1 user user 709M Apr  2 04:33 eval2.mkv.hevc_vaapi.qp21.mkv
-rw-rw-r-- 1 user user 641M Apr  2 04:47 eval2.mkv.hevc_vaapi.qp22.mkv
-rw-rw-r-- 1 user user 522M Apr  2 05:01 eval2.mkv.hevc_vaapi.qp23.mkv
-rw-rw-r-- 1 user user 483M Apr  2 05:15 eval2.mkv.hevc_vaapi.qp24.mkv
-rw-rw-r-- 1 user user 443M Apr  2 05:48 eval2.mkv.hevc_vaapi.qp25.mkv
-rw-rw-r-- 1 user user 2,7G Apr  2 04:07 eval3.mkv
-rw-rw-r-- 1 user user 532M Feb 23 19:46 eval3.mkv.hevc_nvenc.qp24.mkv
-rw-rw-r-- 1 user user 1,5G Apr  2 04:23 eval3.mkv.hevc_vaapi.qp20.mkv
-rw-rw-r-- 1 user user 1,3G Apr  2 04:36 eval3.mkv.hevc_vaapi.qp21.mkv
-rw-rw-r-- 1 user user 1,2G Apr  2 04:49 eval3.mkv.hevc_vaapi.qp22.mkv
-rw-rw-r-- 1 user user 936M Apr  2 05:02 eval3.mkv.hevc_vaapi.qp23.mkv
-rw-rw-r-- 1 user user 851M Apr  2 05:15 eval3.mkv.hevc_vaapi.qp24.mkv
-rw-rw-r-- 1 user user 762M Apr  2 05:48 eval3.mkv.hevc_vaapi.qp25.mkv
-rw-rw-r-- 1 user user  15G Mär 28 06:49 eval4.mkv
-rw-rw-r-- 1 user user 5,7G Mär 28 07:05 eval4.mkv.hevc_nvenc.qp24.mkv
-rw-rw-r-- 1 user user 9,7G Apr  2 07:23 eval4.mkv.hevc_vaapi.qp24.mkv
-rw-rw-r-- 1 user user 8,7G Apr  2 08:15 eval4.mkv.hevc_vaapi.qp25.mkv

I've tried varying the -qp parameter and expected a similar file size.


text:
frame rate vs extracted frames
Newbie here. This is my input.mp4 video, according to VLC:

codec:  H265 – MPEG-4 AVC (part 10) (avc1)
Encoder:    Lavf58.29.100
FPS:    70.476432
Resolution: 1824 x 1216
Duration:   0m31s

I need to convert the video into a sequence of images. Is it possible to predict given the information above, how many frames I will get?
I tried two methods:

Using OpenCV (basically with the command cv2.imwrite(name, frame, [cv2.IMWRITE_TIFF_COMPRESSION, 1]))
Using ffmpeg (ffmpeg -i input.mp4 $filename%05d.tiff)

With OpenCV I get 2246 TIFF files (~14 GB). With ffmpeg I get more than 17k TIFF files but I had to stop the operation (see below) when it had already generated ~49GB of files.
You can tell that I am not an expert in this since initially I thought that my conversion should be 2185 TIFF files (from 2185 frames, i.e. FPS times Duration). But then I read another post and changed my expectation.
Anyway, is there a reliable way to know how many frames I should expect when exporting my video in a lossless file format?

Detail about ffmpeg: I had to stop the operation because it was taking forever and finding lots of duplicates (I don't know why, will make a separate post). Last lines shown in the operation were as follow:
More than 1000 frames duplicatedN/A time=00:00:01.04 bitrate=N/A dup=976 drop=0 speed=0.0308x
More than 10000 frames duplicated/A time=00:00:10.74 bitrate=N/A dup=9989 drop=0 speed=0.0265x
frame=17673 fps= 26 q=-0.0 Lsize=N/A time=00:00:17.67 bitrate=N/A dup=16428 drop=0 speed=0.0262x

Your video looks to be variable frame rate, and its maximum frame rate looks to be fairly high. Which is what ffmpeg will use as target frame rate in constant frame rate mode for the output.
To keep 1:1 correspondence between input and output frames, add -fps_mode passthrough. For ffmpeg versions older than 5.1, add -vsync passthrough.

thanks a lot, it works! I also found some other ways to do it (see https://superuser.com/questions/1781258/avoid-duplicate-frames-in-ffmpeg). However my original question remains,  is there a reliable way to know how many frames I should expect when exporting my video in a lossless file format? I export to 2246 frames, and I have no idea where that number comes from.


text:
Add a "CallOut" that follows an object with a line in DaVinci Resolve
I spend many of hours, getting this, done, but I never succeeded:
In a video with rather small moving objects I wanted to have a "Call Out" (i.e. a text label with a line leading to the object to be tracked) to label the moving object.
As IMHO the text readability will be better if it doe not move with the object, I wanted the text to be static.
Resolve has a CallOut, but it seems it's not easy to misuse it for my purpose (read later on).
The exist Youtube tutorials making the whole callout follow the object, but that's not what I want.
I tried to construct my own callout, but I never got it working.
So I started to examine the built-in Call Out:
I realized that the square at the line-end can be controlled via a Publish2, so I created my own simplified macro from the original Call Out.
There I can move the line's end by changing a position, but when I connect that position to my tracker, the line does not move, or moves just for a short moment.
Some Details
Here is my simplified macro, showing how the line can be moved (I exaggerated the colors for clarity):

Finally here's the simplified macro code (Resolve adds 1s to the name for each modification, so don't ask about the name)
{
    Tools = ordered() {
        MyCallout4111 = MacroOperator {
            Inputs = ordered() {
                Input1 = InstanceInput {
                    SourceOp = "Text1",
                    Source = "StyledText",
                },
                Input2 = InstanceInput {
                    SourceOp = "Text1",
                    Source = "Font",
                    ControlGroup = 2,
                },
                Input3 = InstanceInput {
                    SourceOp = "Text1",
                    Source = "Style",
                    ControlGroup = 2,
                },
                Input4 = InstanceInput {
                    SourceOp = "Text1",
                    Source = "Red1Clone",
                    Name = "Color",
                    ControlGroup = 3,
                    Default = 1,
                },
                Input5 = InstanceInput {
                    SourceOp = "Text1",
                    Source = "Green1Clone",
                    ControlGroup = 3,
                    Default = 1,
                },
                Input6 = InstanceInput {
                    SourceOp = "Text1",
                    Source = "Blue1Clone",
                    ControlGroup = 3,
                    Default = 1,
                },
                Input7 = InstanceInput {
                    SourceOp = "Text1",
                    Source = "Alpha1Clone",
                    ControlGroup = 3,
                    Default = 1,
                },
                Input8 = InstanceInput {
                    SourceOp = "Text1",
                    Source = "Size",
                    Default = 0.0591,
                },
                Input9 = InstanceInput {
                    SourceOp = "Text1",
                    Source = "CharacterSpacingClone",
                    Name = "Tracking",
                    Default = 1,
                },
                Input10 = InstanceInput {
                    SourceOp = "Publish2",
                    Source = "Value",
                    Name = "Value C",
                },
                Input11 = InstanceInput {
                    SourceOp = "Line_BG",
                    Source = "TopLeftRed",
                    Name = "Color",
                    ControlGroup = 7,
                    Default = 0.535,
                },
                Input12 = InstanceInput {
                    SourceOp = "Line_BG",
                    Source = "TopLeftGreen",
                    ControlGroup = 7,
                    Default = 0.535,
                },
                Input13 = InstanceInput {
                    SourceOp = "Line_BG",
                    Source = "TopLeftBlue",
                    ControlGroup = 7,
                    Default = 0.535,
                },
                Input14 = InstanceInput {
                    SourceOp = "Line_BG",
                    Source = "TopLeftAlpha",
                    ControlGroup = 7,
                    Default = 1,
                },
            },
            Outputs = {
                Output1 = InstanceOutput {
                    SourceOp = "Text1Opacity1",
                    Source = "Value",
                },
                Output2 = InstanceOutput {
                    SourceOp = "Publish2",
                    Source = "Value",
                },
                MainOutput1 = InstanceOutput {
                    SourceOp = "KeyStretcheronForeground",
                    Source = "Result",
                }
            },
            ViewInfo = GroupInfo { Pos = { 0, 0 } },
            Tools = ordered() {
                Text1 = TextPlus {
                    ExtentSet = true,
                    CtrlWShown = false,
                    NameSet = true,
                    Inputs = {
                        Position7 = Input { Value = 1, },
                        ExtendHorizontal7 = Input { Value = 0.89, },
                        ExtendVertical7 = Input { Value = 0.053, },
                        ElementShape7 = Input { Value = 2, },
                        GlobalOut = Input { Value = 5000, },
                        Width = Input { Value = 1920, },
                        Height = Input { Value = 1080, },
                        UseFrameFormatSettings = Input { Value = 1, },
                        ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
                        Center = Input {
                            SourceOp = "Publish1",
                            Source = "Value",
                        },
                        LineSpacing = Input { Value = 0.693, },
                        Name8 = Input { Value = "White", },
                        Opacity1 = Input {
                            SourceOp = "Text1Opacity1",
                            Source = "Value",
                        },
                        Position1 = Input { Value = 1, },
                        StyledText = Input { Value = "Sample", },
                        Font = Input { Value = "Open Sans", },
                        Style = Input { Value = "Light", },
                        Size = Input { Value = 0.0591, },
                        VerticalJustificationNew = Input { Value = 3, },
                        HorizontalJustificationNew = Input { Value = 3, },
                        ElementShape8 = Input { Value = 2, },
                        ExtendHorizontal8 = Input { Value = 0.1, },
                        ExtendVertical8 = Input { Value = 0.19, },
                        Position8 = Input { Value = 1, },
                    },
                    ViewInfo = OperatorInfo { Pos = { 45, 120.683 } },
                },
                Publish1 = PublishPoint {
                    CtrlWZoom = false,
                    CustomData = {
                        Path = {
                            Map = {
                                ["Setting:"] = "Templates:\\Templates.drfx\\Edit\\Titles\\"
                            }
                        }
                    },
                },
                Text1Opacity1 = BezierSpline {
                    SplineColor = { Red = 179, Green = 28, Blue = 244 },
                    CtrlWZoom = false,
                    KeyFrames = {
                        [4] = { 0, RH = { 6, 0 } },
                        [10] = { 1, LH = { 8, 1 } }
                    }
                },
                Polygon1 = PolylineMask {
                    DrawMode = "ModifyOnly",
                    DrawMode2 = "InsertAndModify",
                    CtrlWShown = false,
                    NameSet = true,
                    Inputs = {
                        Filter = Input { Value = FuID { "Fast Gaussian" }, },
                        BorderWidth = Input { Value = 0.0018, },
                        WriteLength = Input {
                            SourceOp = "Polygon1Length",
                            Source = "Value",
                        },
                        MaskWidth = Input { Value = 1920, },
                        MaskHeight = Input { Value = 1080, },
                        PixelAspect = Input { Value = { 1, 1 }, },
                        UseFrameFormatSettings = Input { Value = 1, },
                        ClippingMode = Input { Value = FuID { "None" }, },
                        Polyline = Input {
                            Value = Polyline {
                                Points = {
                                    { Linear = true, X = 0, Y = 0, RX = 0.0525445223067593, RY = -0.0416169894737017, PublishID = "Point1" },
                                    { Linear = true, X = 0.157633566920278, Y = -0.124850968421105, LX = -0.0525445223067593, LY = 0.0416169894737017, PublishID = "Point0" }
                                }
                            },
                        },
                        Polyline2 = Input {
                            Value = Polyline {
                            },
                            Disabled = true,
                        },
                        Point0 = Input {
                            SourceOp = "Publish2",
                            Source = "Value",
                        },
                        Point1 = Input {
                            SourceOp = "Publish1",
                            Source = "Value",
                        },
                    },
                    ViewInfo = OperatorInfo { Pos = { -97.176, 91.5131 } },
                },
                Polygon1Length = BezierSpline {
                    SplineColor = { Red = 141, Green = 167, Blue = 243 },
                    CtrlWZoom = false,
                    KeyFrames = {
                        [10] = { 0, RH = { 22.9066666666667, 0 } },
                        [32] = { 1, LH = { 19.0933333333333, 1 } }
                    }
                },
                Publish2 = PublishPoint {
                    CtrlWZoom = false,
                    CustomData = {
                        Path = {
                            Map = {
                                ["Setting:"] = "Templates:\\Templates.drfx\\Edit\\Titles\\"
                            }
                        }
                    },
                    Inputs = {
                        Value = Input { Value = { 0.657633566920278, 0.375149031578895 }, },
                    },
                },
                sRectangle1_5 = sRectangle {
                    CtrlWZoom = false,
                    CtrlWShown = false,
                    Inputs = {
                        Width = Input {
                            SourceOp = "Publish3",
                            Source = "Value",
                        },
                        Height = Input {
                            SourceOp = "Publish3",
                            Source = "Value",
                        },
                        Angle = Input { Value = 45, },
                    },
                    ViewInfo = OperatorInfo { Pos = { -225.629, 8.70111 } },
                },
                Publish3 = PublishNumber {
                    CtrlWZoom = false,
                    CustomData = {
                        Path = {
                            Map = {
                                ["Setting:"] = "Templates:\\Templates.drfx\\Edit\\Titles\\"
                            }
                        }
                    },
                    Inputs = {
                        Value = Input { Value = 0.009, },
                    },
                },
                RenderDot = sRender {
                    ExtentSet = true,
                    CtrlWShown = false,
                    NameSet = true,
                    Inputs = {
                        GlobalOut = Input { Value = 5000, },
                        Width = Input { Value = 1920, },
                        Height = Input { Value = 1080, },
                        UseFrameFormatSettings = Input { Value = 1, },
                        ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
                        Input = Input {
                            SourceOp = "sRectangle1_5",
                            Source = "Output",
                        },
                    },
                    ViewInfo = OperatorInfo { Pos = { -225.629, 53.8624 } },
                },
                Bitmap1 = BitmapMask {
                    CtrlWShown = false,
                    NameSet = true,
                    Inputs = {
                        EffectMask = Input {
                            SourceOp = "Polygon1",
                            Source = "Mask",
                        },
                        Filter = Input { Value = FuID { "Fast Gaussian" }, },
                        MaskWidth = Input { Value = 1920, },
                        MaskHeight = Input { Value = 1080, },
                        PixelAspect = Input { Value = { 1, 1 }, },
                        UseFrameFormatSettings = Input { Value = 1, },
                        ClippingMode = Input { Value = FuID { "None" }, },
                        Image = Input {
                            SourceOp = "Transform2_5",
                            Source = "Output",
                        },
                    },
                    ViewInfo = OperatorInfo { Pos = { -97.176, 124.767 } },
                },
                Transform2_5 = Transform {
                    CtrlWShown = false,
                    Inputs = {
                        Center = Input {
                            SourceOp = "Publish2",
                            Source = "Value",
                        },
                        Size = Input {
                            SourceOp = "Transform2_5Size",
                            Source = "Value",
                        },
                        Input = Input {
                            SourceOp = "RenderDot",
                            Source = "Output",
                        },
                    },
                    ViewInfo = OperatorInfo { Pos = { -225.629, 124.767 } },
                },
                Transform2_5Size = BezierSpline {
                    SplineColor = { Red = 254, Green = 144, Blue = 123 },
                    CtrlWZoom = false,
                    KeyFrames = {
                        [32] = { 0.00100000004749745, RH = { 33.3333333333333, 0.334000000031665 }, Flags = { Linear = true } },
                        [36] = { 1, LH = { 34.6666666666667, 0.667000000015832 }, Flags = { Linear = true } }
                    }
                },
                Line_BG = Background {
                    ExtentSet = true,
                    CtrlWShown = false,
                    NameSet = true,
                    Inputs = {
                        EffectMask = Input {
                            SourceOp = "Bitmap1",
                            Source = "Mask",
                        },
                        GlobalOut = Input { Value = 5000, },
                        Width = Input { Value = 1920, },
                        Height = Input { Value = 1080, },
                        UseFrameFormatSettings = Input { Value = 1, },
                        ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
                        TopLeftRed = Input { Value = 0.535, },
                        TopLeftGreen = Input { Value = 0.535, },
                        TopLeftBlue = Input { Value = 0.535, },
                        Line = Input { Value = 1, }
                    },
                    ViewInfo = OperatorInfo { Pos = { -97.176, 167.178 } },
                    UserControls = ordered() { Line = { INP_Integer = false, LBLC_DropDownButton = true, LINKID_DataType = "Number", LBLC_NumInputs = 6, INPID_InputControl = "LabelControl", LINKS_Name = "Line", } }
                },
                Text_Mask = TextPlus {
                    ExtentSet = true,
                    CtrlWShown = false,
                    NameSet = true,
                    SourceOp = "Text1",
                    Inputs = {
                        ShadingMapping7 = Input { },
                        Thickness7 = Input { },
                        Green7 = Input { },
                        AngleZ7 = Input { },
                        ShadingMappingSize7 = Input { },
                        SizeY7 = Input { },
                        Offset7 = Input { },
                        Pivot7 = Input { },
                        SoftnessX7 = Input { },
                        Properties7 = Input { },
                        AdaptThicknessToPerspective7 = Input { },
                        Position7 = Input { Value = 1, },
                        ImageShadingSampling7 = Input { },
                        AngleY7 = Input { },
                        Alpha7 = Input { },
                        JoinStyle7 = Input { },
                        OutsideOnly7 = Input { },
                        Round7 = Input { },
                        Type7 = Input { },
                        SizeX7 = Input { },
                        Softness7 = Input { },
                        ColorBrush7 = Input { },
                        OffsetZ7 = Input { },
                        ShearY7 = Input { },
                        PriorityBack7 = Input { },
                        ShearX7 = Input { },
                        SoftnessGlow7 = Input { },
                        SoftnessOnFillColorToo7 = Input { },
                        Opacity7 = Input { },
                        SoftnessBlend7 = Input { },
                        Red7 = Input { },
                        SoftnessY7 = Input { },
                        ImageShadingEdges7 = Input { },
                        ColorImage7 = Input { },
                        Overlap7 = Input { },
                        Blue7 = Input { },
                        Size7 = Input { },
                        Shear7 = Input { },
                        Rotation7 = Input { },
                        Level7 = Input { },
                        ShadingMappingAspect7 = Input { },
                        ShadingGradient7 = Input { },
                        PivotZ7 = Input { },
                        ColorFile7 = Input { },
                        ShadingMappingLevel7 = Input { },
                        ImageSource7 = Input { },
                        AngleX7 = Input { },
                        LineStyle7 = Input { },
                        ShadingMappingAngle7 = Input { },
                        EffectMask = Input { },
                        SettingsNest = Input { },
                        ImageNest = Input { },
                        ["Gamut.ColorSpaceNest"] = Input { },
                        ["Gamut.GammaSpaceNest"] = Input { },
                        Layout = Input { },
                        LayoutRotation = Input { },
                        Background = Input { },
                        TransformTransform = Input { },
                        TransformRotation = Input { },
                        TransformShear = Input { },
                        TransformSize = Input { },
                        Enabled1 = Input { Value = 0, },
                        Enabled7 = Input { },
                        Enabled8 = Input { Value = 1, },
                        Properties1 = Input { },
                        Softness1 = Input { },
                        Position1 = Input { },
                        Rotation1 = Input { },
                        Shear1 = Input { },
                        Size1 = Input { },
                        TextText = Input { },
                        TabSpacing = Input { },
                        AdvancedFontControls = Input { Value = 1, },
                        ClearSelectedKerning = Input { },
                        ClearAllKerning = Input { },
                        ClearSelectedPlacement = Input { },
                        ClearAllPlacement = Input { },
                        Internal = Input { },
                        CommentsNest = Input { },
                        FrameRenderScriptNest = Input { },
                        StartRenderScripts = Input { },
                        EndRenderScripts = Input { },
                        Properties8 = Input { },
                        Opacity8 = Input { },
                        Overlap8 = Input { },
                        Thickness8 = Input { },
                        AdaptThicknessToPerspective8 = Input { },
                        OutsideOnly8 = Input { },
                        JoinStyle8 = Input { },
                        LineStyle8 = Input { },
                        Level8 = Input { Value = 0, },
                        Round8 = Input { },
                        Type8 = Input { },
                        Red8 = Input { },
                        Green8 = Input { },
                        Blue8 = Input { },
                        Alpha8 = Input { },
                        ImageSource8 = Input { },
                        ColorImage8 = Input { },
                        ColorFile8 = Input { },
                        ColorBrush8 = Input { },
                        ShadingGradient8 = Input { },
                        ImageShadingSampling8 = Input { },
                        ImageShadingEdges8 = Input { },
                        ShadingMapping8 = Input { },
                        ShadingMappingAngle8 = Input { },
                        ShadingMappingSize8 = Input { },
                        ShadingMappingAspect8 = Input { },
                        ShadingMappingLevel8 = Input { },
                        Softness8 = Input { },
                        SoftnessX8 = Input { },
                        SoftnessY8 = Input { },
                        SoftnessOnFillColorToo8 = Input { },
                        SoftnessGlow8 = Input { },
                        SoftnessBlend8 = Input { },
                        Position8 = Input { Value = 1, },
                        PriorityBack8 = Input { },
                        Offset8 = Input { },
                        OffsetZ8 = Input { },
                        Pivot8 = Input { },
                        PivotZ8 = Input { },
                        Rotation8 = Input { },
                        AngleX8 = Input { },
                        AngleY8 = Input { },
                        AngleZ8 = Input { },
                        Shear8 = Input { },
                        ShearX8 = Input { },
                        ShearY8 = Input { },
                        Size8 = Input { },
                        SizeX8 = Input { },
                        SizeY8 = Input { }
                    },
                    ViewInfo = OperatorInfo { Pos = { 45, 197.671 } },
                },
                Merge1 = Merge {
                    CtrlWShown = false,
                    NameSet = true,
                    Inputs = {
                        EffectMask = Input {
                            SourceOp = "Text_Mask",
                            Source = "Output",
                        },
                        ApplyMaskInverted = Input { Value = 1, },
                        Background = Input {
                            SourceOp = "Text1",
                            Source = "Output",
                        },
                        Foreground = Input {
                            SourceOp = "Line_BG",
                            Source = "Output",
                        },
                        PerformDepthMerge = Input { Value = 0, },
                    },
                    ViewInfo = OperatorInfo { Pos = { 45, 156.036 } },
                },
                KeyStretcheronForeground = KeyStretcher {
                    CtrlWShown = false,
                    NameSet = true,
                    Inputs = {
                        Keyframes = Input {
                            SourceOp = "Merge1",
                            Source = "Output",
                        },
                        StretchStart = Input { Value = 36, },
                        StretchEnd = Input { Value = 120, },
                    },
                    ViewInfo = OperatorInfo { Pos = { 225, 167.178 } },
                }
            },
        }
    },
    ActiveTool = "MyCallout4111"
}

I have the feeling that it cannot be as hard to do as it seems, but I just don't get it.

Actually I succeeded once I had removed the KeyFrame Stretcher from the standard CallOut and connecting the line position to a tracker position.


text:
change output order of FFprobe
How can I change the output order of FFprobe?
ffprobe -hide_banner -show_streams -show_format space.mkv -of json=c=0 -o output.json creates a json output file with the streams sections first and the format section last.
I need the reverse order (format section first, streams section last).
But reordering the parameters (i.e. -show_format -show_streams) has no effect unfortunately.
This is the output of the command above:
{
    "streams": [
        {
            "index": 0,
            "codec_name": "h264",
            "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
            "profile": "Main",
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 256,
            "height": 144,
            "coded_width": 256,
            "coded_height": 144,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 1,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 11,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "field_order": "progressive",
            "refs": 1,
            "is_avc": "true",
            "nal_length_size": "4",
            "r_frame_rate": "3737/250",
            "avg_frame_rate": "3737/250",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": "0.000000",
            "bits_per_raw_sample": "8",
            "extradata_size": 41,
            "disposition": {
                "default": 1,
                "dub": 0,
                "original": 0,
                "comment": 0,
                "lyrics": 0,
                "karaoke": 0,
                "forced": 0,
                "hearing_impaired": 0,
                "visual_impaired": 0,
                "clean_effects": 0,
                "attached_pic": 0,
                "timed_thumbnails": 0,
                "captions": 0,
                "descriptions": 0,
                "metadata": 0,
                "dependent": 0,
                "still_image": 0
            },
            "tags": {
                "HANDLER_NAME": "ISO Media file produced by Google Inc.",
                "VENDOR_ID": "[0][0][0][0]",
                "DURATION": "00:10:53.276000000"
            }
        },
        {
            "index": 1,
            "codec_name": "aac",
            "codec_long_name": "AAC (Advanced Audio Coding)",
            "profile": "HE-AAC",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": "44100",
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "initial_padding": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": "0.000000",
            "extradata_size": 25,
            "disposition": {
                "default": 1,
                "dub": 0,
                "original": 0,
                "comment": 0,
                "lyrics": 0,
                "karaoke": 0,
                "forced": 0,
                "hearing_impaired": 0,
                "visual_impaired": 0,
                "clean_effects": 0,
                "attached_pic": 0,
                "timed_thumbnails": 0,
                "captions": 0,
                "descriptions": 0,
                "metadata": 0,
                "dependent": 0,
                "still_image": 0
            },
            "tags": {
                "HANDLER_NAME": "ISO Media file produced by Google Inc.",
                "VENDOR_ID": "[0][0][0][0]",
                "DURATION": "00:10:53.409000000"
            }
        }
    ],
    "format": {
        "filename": "space.mkv",
        "nb_streams": 2,
        "nb_programs": 0,
        "format_name": "matroska,webm",
        "format_long_name": "Matroska / WebM",
        "start_time": "0.000000",
        "duration": "653.409000",
        "size": "5252652",
        "bit_rate": "64310",
        "probe_score": 100,
        "tags": {
            "title": "SpaceX Starship explodes on first launch attempt",
            "COMMENT": "https://www.youtube.com/watch?v=gk1BViilFFk",
            "COMPATIBLE_BRANDS": "iso6avc1mp41",
            "MAJOR_BRAND": "dash",
            "MINOR_VERSION": "0",
            "ARTIST": "CNN",
            "DATE": "20230420",
            "DESCRIPTION": "SpaceX’s Starship, the most powerful rocket ever built, took off from a launch pad on the coast of South Texas, but exploded midair before stage separation. #CNN #News",
            "SYNOPSIS": "SpaceX’s Starship, the most powerful rocket ever built, took off from a launch pad on the coast of South Texas, but exploded midair before stage separation. #CNN #News",
            "PURL": "https://www.youtube.com/watch?v=gk1BViilFFk",
            "ENCODER": "Lavf60.4.101"
        }
    }
}

The order is hardcoded :(

If you know this to be the case (and as a bonus can demonstrate it), please post this as an answer. Assuming there is no way to change the result with FFprobe itself, I will accept this as the correct answer.

Why downvote? This is an important question for me.

The order in which sections are printed is hard-coded and insensitive to user specification.
This is the layout in the source.
if (do_read_frames || do_read_packets) {
...
}

if (do_show_programs) {
...
}

if (do_show_streams) {
...
}
if (do_show_chapters) {
...
}
if (do_show_format) {
...
}


text:
FFMPEG merging videos Non-monotonous DTS in output stream 0:1
When i use this command it in generally works with no issues but I get this warning and the video is super long (should be 20 or 30 seconds and is 24 minutes)
ffmpeg -f concat -safe 0 -i manual.txt -c copy C:\Users\Eric\Downloads\manual_merge\asdf.mp4

this is the output from the command promp
[mp4 @ 000001b34d593fc0] Non-monotonous DTS in output stream 0:1; previous: 608569, current: 12201; changing to 608570. This may result in incorrect timestamps in the output file.

how do i fix this warning?


text:
How to make a 4 point path follow an object at either end? (How to make a fake node graph)?
I am trying to simulate a node graph like this where a path with 4 points (start, 2 middle, end) adapts to the movement of an object connected to the start and end:

If you move a node at the link above you can see this demonstrated. So far I've followed this tutorial using a beam but this is 2 points - not 4 - with no support for curved paths.
How can I simulate this node graph effect?

This is a tricky one to do without plugins.  I've used ConnectLayersPro to achieve this kind of thing, with the curves set to Step mode:

If anyone knows how to do it using expressions (and maybe the built in Beam plugin?) I'd love to know.


text:
Is splitting a video for export a good technique?
Currently, I'm making a video that I intend to upload to YouTube. I used After Effects and Premiere Pro for this. Since it's a video that's almost 2 hours long, the export takes me about 16 hours according to my PC specifications:
11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz, 2419 Mhz (I'm using the integrated GPU) Installed physical memory 8.00 GB.
The first question is, is it normal to have such high export times? From all the video tutorials I've seen, I haven't seen export times as high as mine, but I suppose it's due to the added effects and the length of the video.
Exporting for 16 hours straight is very inconvenient for me because I plan on continuing to upload videos, and if I have to leave each video for 16 hours or more, that means the laptop battery will deteriorate, and I also use the computer for university work. The solution I've come up with is to slice the video into several parts, export them, and then join them with ffmpeg, which I understand does not perform rendering (or something like that).
When I did it, it came out correctly, and there were no issues. The second question is that I would like to know if this technique has a name and how to do it correctly. I would also like to know if there are any disadvantages to doing it this way. I exported in H.264 at 1080p and 24 fps, and then I joined them, but there may be a better way to do it.
I'm asking this question because before attempting it, I searched the internet and didn't find much information about this technique. The information I found mentioned that there would be problems between frames because a frame contains information about its next frame, but I found that it worked for me, and in case of problems, the cut can be made just at scene changes so that it doesn't affect much.

On my 5 y.o comp, I've had a 3 min video that took ~25 mins to encode to h264 in an old AE. I made following calculation: 25/3 (min.et/min.vt) * 120 (min.vt) = 1000 (min.et), which is 1000/60 = 16.6 (h.et). Here min.et, min.vt and h.et represent minutes-encoding-time, minutes-video-time and hours-encoding-time, respectively. 16h to encode a 2h video doesn't seem overly long to me.

I've seen a few names used, but generally speaking you're talking "parallel encoding", Netflix and others dealing with large volumes of video data do this, you can dig into a lot more detail in their blog https://netflixtechblog.com/high-quality-video-encoding-at-scale-d159db052746
Given your described render times, it's certainly a good solution to prevent having to re-encode pieces over and over if you only change only part of your sequence, you just have to trade off against the manual disassembly/re-assembly times to do it this way, Netflix have built their own custom software for these tasks, I'm not aware of anything off the shelf for end users to automate this.


text:
When multiple windows are captured simultaniously can OBS capture only cursor in currently active window?
I am making a small video for some of my colleagues where I show them how CI/CD with GitLab and Kubernetes works (software development stuff). For that purpose I would like too keep 4 windows visible at all time.
I am running OBS on Linux so I use xcompose for the Window Capture entities (WC). Respectively I added 4 separate WCs each with "Capture cursor" enabled.
Once I started recording the video I immediately realized that this was not the best way to set things up. In my head I imagined that the capturing of the cursor would only appear in the currently active window. Instead I have 4 WCs with each displaying my cursor and its motion across the screen. Needless to say this looks highly unprofessional not to mention distracting and disables me from e.g. pointing things out separately based on the WC I am currently viewing on my computer.
I cannot put all windows on my screen, since my screen is not really that big (just in case someone suggests that :D).

If you want to keep recording all windows at same time(e.g. in same Scene) and they overlap this won't work(to my knowledge). Should be working if they don't, as it is for me in OBS Studio - 30.0.2-1.
Alternatively, you can use Tools -> Automatic Scene Switcher
Put each window in separate workspace if you wish.

Create separate scene for each Window Capture entity(WC)
In Automatic Scene Switcher create rules (select Scene you want to switch to when Window name gets focus)
Start/Activate Automatic Scene Switcher


text:
How to make a "Video Wall"
I'm currently trying to make a "video wall". It should look something like this.
I have Final Cut Pro but the process was more tedious than I'd originally anticipated.
Is there a better, preferably free (no plugins) way to easily to this?

I would use Motion and make a template with Drop Zones and then fill the zones with videos in FCP.


text:
What type of issues does Sony FR7 have with NDI?
What issues does Sony have, if any, with the NDI protocol?
Is the image as good if it was recorded in camera?
I appreciate any help you can provide.
Here is a list of the items Im researching

Sony FR7
Sony FE 16-35MM
NDI License (maybe)
Tricaster Mini 4k (maybe with HDMI or the NDI option)
Netgear GMS4212UX // M4250-10G2XF-POE++


text:
How to test ffmpeg for streaming encoding at 1x?
I would like to test ffmpeg for encoding a stream on my VM to see how much CPU % it uses, and how many cores. I don't have streams going, but I plan to use webcams to provide the stream in the future. How should I go about doing this?
I have test mp4 files I could provide.
Should I:
Is there a way to tell ffmpeg to only encode at 1x speed (ie only do 30fps per second for encoding)?
Or do I have to create a stream first and have ffmpeg encode the stream? I found SRS (Simple Realtime Server) https://github.com/ossrs/srs. I was going to start a stream from there and have ffmpeg ingest it. But it seems complicated I was wondering if there was an easier way by doing #1? Or is there an easier way to do #2?
So far I have tried to get ffmpeg running, but have encountered some errors. The SRS is complicated to setup, so I have not tried it yet.

Add -readrate 1 before -i  to limit ingest speed to 1x.

Why all the synthesizing of your final process instead of actually using your process tools?


text:
Extract and consolidate specific parts of a clip
I've been looking for a way to Extract and consolidate specific parts of a clip in the timeline.
I've thought of marking the parts of the clip that I want, make a subclip out of it, lift that specific part and replace it with the previously made subclip and then nest the subclip and export it using the project manager option and selecting the nested sequence. However since I've just recently started in Adobe Premiere I was wondering if there was a more efficient way of simplifying this process.
If anyone could point me into the right direction I'd really appreciate it!


text:
Is it good practice to have a film's supporters contact film festival program directors?
I admit, I'm not sure this Q&A site is right for this question, as my question does not deal with technical aspects of film production... But the site description says, "Q&A for engineers, producers, editors, and enthusiasts spanning the fields of audio, video, and media creation," so I hope this is the right spot.
I recently helped a friend produce a short zombie comedy. Throughout the making of the film we have grown a small local cult following.
Now, we are ready to submit the film to film festivals. Is it good practice to ask our supporters to contact the program director of each film festival showing their support for the inclusion of our film into their festival?
My background in website design, so my thought was to make a simple form letter, where each supporter would simply enter their name and email address to have the email sent to the program director.
My worries, I don't want to show my lack of knowledge in the film festival arena, hurt the chance of the film's inclusion or be disrespectful to the the festival.
Thank you.

Without being able to find a definitive answer, I logged into my Withoutabox account and began emailing festival directors and simply asking them.
Being that there is no absolute format to how films are chosen for festivals, I received a WIDE range of replies, including:

Support from fans would help if the fans are local to the festival
who would be likely to purchase festival tickets.
Attendance of the filmmakers to the festival is likely to boost
probability of acceptance.
Would affect chances negatively.
Would affect chances positively.

I suppose, all in all, it is beneficial to email each festival and simply ask the program/festival director.

Informally, I would think this would be a bad idea - you really don't want to annoy the directors by spamming them with emails.
I speak to a lot of festival directors on behalf of my band (music, not video, but I feel the principle holds true anyway) and what they want to see is evidence of your following, examples of your work, and positive evidence that you will bring in a crowd.
So of high value are:

Social networking - creating 'the buzz' - on Twitter, Facebook etc - not just from you, but form supporters
Targeting high profile supporters or sponsors to provide advertising, merchandise etc
Providing a simple bio and materials for the festival to review and then use

And above all making it easy for them to put on your material and attract a crowd - don't annoy them, just show them why it makes sense.

Thanks for the reply and your points are good, much along my same lines of thought. I gave an upvote, but I am also hoping for a more authoritative answer.

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/


text:
Favoriting/Subclipping with Long Clips in Timeline in FCPX
I'm editing a project where I have 5 very long clips.  I'm going through, favorite-ing the good portions ("subclipping" per se) and then organizing my clips from those subclips.
A problem I'm running into however, is that I would like to have finer control over my in and out points, so I would like to open my long clips in the timeline, so I can use the scrubber over a larger area.  But when the clip is "opened in timeline" I can't favorite portions of it.
Is there any workaround to this?  Or a different solution to my problem?

Your event browser needs to be in filmstrip view for this to work. Press [⌥⌘1]  Then you can Zoom in [⌘+] or out [⌘-] to whatever granularity you like.

I would recommend to use JKL to scrub in the Viewer, directly in the Event Library. Press L to play forward at 1x. Press another time to play at 2x and so forth.
Press K to stop playback.
L plays backwards. Multiple invocations result in faster playback.
Hold down K and press L to go one frame forward, K + J to go one frame backward.
Maybe you can give it a go and see if that work out for you. If not go with Jason Conrad's suggestion.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/


text:
What is the benefit to using multiple RED rocket cards?
Could someone please explain to me when it might be necessary to use multiple RED rocket cards in the same computer?  Does an additional card significantly improve workflow speeds for lower resolution video (such as 1080p), or is an additional card only useful 2k, 4k, etc?

The RedRocket card provides encoder and decoder support via specialized hardware that can do particular calculations well.  Having multiple cards doubles the amount of calculations that can be done.  Since at least some of the calculations can be done in parallel, having multiple cards increases the amount of processing power available.  It probably wouldn't be much of an additional advantage after hitting real time, but could probably allow for better scrubbing.

I believe you would see better results encoding rather than decoding but essentially this...


text:
Are there any good video editing programs with a command line interface?
I am currently looking for a video editing program which I can control via the command line. The main feature I need is the ability to add some overlay text. Is there anything out there that can do this?
My ideal platform would be Linux, but I would be open to using Windows or OSX if need be.

FFmpeg (wiki) is one option; you can achieve what you want either with the subtitles filter (see also here) or the drawtext filter.
The subtitles filter requires ffmpeg to be compiled with --enable-libass and drawtext requires it to be compiled with --enable-libfreetype. If you're on Linux, the former is fairly likely to be the case, though the latter may not be. Also, beware than Debian and its derivatives (including Ubuntu et al) are using the forked tool avconv, from the libav project (see here for a summary of the situation); some people have reported problems with avconv vs ffmpeg. I would recommend using ffmpeg, mainly because there seem to be more ffmpeg users than avconv users on the SE network, so you'll be able to get better help here.
If the version in your repos is not compiled to do these, you can grab a static build from the FFmpeg website, or you can compile it yourself, following one of the guides on the ffmpeg wiki, making sure to use the correct flags.

Avisynth (wiki) is a script-driven app and in conjunction with filters should be able to do the work.

Related, AvxSynth is a Linux port of AviSynth as AVISynth, while very powerful (I was just learning it last night.), is Windows only.  It does appear you might be able to get it to run in WINE though.

While ffmpeg has editing capabilities it is not specifically designed for editing, and it does not work like an NLE; it takes input(s) and produces output(s), instead of doing non-destructive edits on multiple source files.
Melt however, based on the mlt framework which powers kdenlive, is designed as a

"powerful, if somewhat obscure, multitrack command line oriented video
  editor…"

A melt command can do the same job as the timeline in a NLE. Here's an example from their website that plays an edited collection of shots from the source files a.dv, b.mpg and c.png:
$ melt a.dv in=50 out=100 b.mpg out=500 c.png out=500

There is also the capability add effects, and you can also create edits as XML files.

Is there a windows build for Melt or is it Linux only?  I was looking at it last night for a tool I've been building to do some automated editing, but ended up working with AVISynth because I couldn't find a Windows build.  (Granted, the ideal platform for this particular question was Linux, so this is a great answer.)

I think it's source-code only for windows. But for mac users it's available via hombrew (>brew install mlt).

@stib according to the features page it's also available on Windows through MinGW (and on Mac through Macports for those without homebrew).

I created a cross-platform Node.js based CLI tool for making simple video edits. It is more opinionated and limited than mlt, but it aims to have lots of easy to use components and transitions, and sane default values.
editly \
  title:'My video' \
  clip1.mov \
  clip2.mov \
  title:'My slideshow' \
  img1.jpg \
  img2.jpg \
  title:'THE END' \
  --audio-file-path /path/to/music.mp3

It also supports a more sophisticated edit spec as JSON and can easily be called from JavaScript.
https://github.com/mifi/editly/

I made a production-grade low-level audio/video FFMPEG-based micro-engine a few years back:
https://github.com/costa/ffmprb
and I've been maintaining it since.
It has a command-line interface -- with rudimentary Ruby scripting required at the moment, and I'm working on a cleaner FS+CLI support.


text:
How to gradually colourize an object in after effects
I'm rather new to AE but I believe I have the rotoscoping under control.
How can I gradually (each frame more) colourize an object in a video. So that at first the whole video is black and white and then one object starts to get more and more colour starting from a certain point and allow the colour to spread back to the whole object.
Thanks a lot!

I can't give you AE specifics, but one general method would be to have a mono layer and an otherwise identical color layer, keying the color over the mono using a matte layer that you draw on. As portions of the matte layer are turned white, or shades of white, the color layer is revealed.

Set an adjustment layer, mask it to cover what you want, use the Hue/Saturation color effect, and set the saturation to zero...then on your layer push the e key, and then select the stop watch next to the saturation of the effect. go to where you want it in color, and set the saturation amount.  Done


text:
How to assign roto to another layer in After Effects
I'm rather new to AE but I have to do some complicated things for school since we came up with such a hard concept.
I have rotoscoped a part of the main footage, now how can I apply this roto mask (at least that's how I understand roto's function) to a solid layer?
My solid layer is something I painted on and I want it to stay within the bounds of the rotoscoped object.
Any help on this would be great!
Thanks.

Put a layer underneath it and set the lower layer's "TrakMat" to "Alpha Matte".  If you don't see the "TrkMat" dropdown menu to the right of the source name, click the "Toggle Switches/Modes" button at the bottom of the screen.

You can use track mattes, you can also go to your first key frame copy the mask and paste it on the solid, this will also work


text:
How to mask out brush in After effects
I've run into a little snag.
I can't seem to mask out some of the brush that I've used on a an empty layer.
I create the mask but it simply doesn't mask out anything, it does however mask out pixels when I did some experiments.
How can i get this done?
Thanks!

Create a white solid, mask out what you want with that...then use it as an alpha matte to mask out what you do not want.

I imported my masks from Mocha AE, thus I got myself a vector mask and with that I would like to mask out some things including brush strokes. Any ideas on this one?

Yes just as I said above, apply that mask to a solid put it above the layer you want the mask applied to, then go to your layer select your track matte pull down (you may need to toggle to your trackmattes) and then select either alpha or alpha inverted


text:
How do you make videos like this one?
Other than drawing skills, what software does one need to make videos like this one?
http://www.dunnhumby.com/in/about-us-what-we-do

In order for this question to be answerable, you will need to provide your OS and what software you already have or are familiar with.  Also, you will need to give a better idea of exactly what you are trying to accomplish.

In the year 2016, that link does not go anywhere that shows a video.  Can you provide a Youtube link?

It was one of those videos where someone really quickly draws up each they are talking about as they get to it, and then move on to the next drawing when they move to the next sentence. I'll try and find something like that.

It appears like it is a combination of traditional hand animation or possibly Flash or Illustrator combined with After Effects for compositing and camera motion.  The images appear to use a Draw On style followed by an animated wipe to remove them.  This is then overlaid over the background and camera motion is added by panning and zooming the entire image.


text:
What is the best way to record from a single fixed camera?
I run a video system at my church that consists of two fixed robotic cameras among other things. The person who installed this equipment didn't have experience with video production, only display, so instead of a video mixer we have video input switchers, needless to say that doesn't work well for recording. The end result is that currently I'm only recording from a single camera.
An example of my work is here: http://www.mbcdet.com/media/. I'll disclose this is a Christian sermon so if you don't agree with what is said in the video I understand but I would appreciate if the feedback is pertinent to the question, thanks.
I know that ultimately recording from the second camera at the same time and mixing the inputs is a good way to go, or purchasing a video mixer and mixing the video inputs real time is also a good way to go. What I'm looking for is an answer on recording the video from a fixed camera in a way that doesn't seem boring, so to speak.

We actually get quite a few questions from church A/V tech's here.  I personally am one of the main A/V tech's at my church and also do A/V production work with a couple of Christian youth conferences in my area.

There isn't really a good answer to that.  There isn't a whole lot you can do with a fixed shot and making adjustments on a live shot is always a danger of being distracting, even when controlling it by hand as an experienced operator.  Making adjustments via a Pan Tilt Unit while the camera is live is going to be anything but smooth and will be very distracting.
I'd recommend either recording from both to edit in post or picking up one of the Black Magic Studio ATEM's (under $1000 HD video switcher with built in H264 encoding).

You're preaching to the choir :-) I've never come across the ATEM, it's been a few years since I've looked for new hardware.

Yeah, I generally pimp it for small organizations because it is so extremely cheap compared to anything else out there.  It does require a computer, but most churches in particular (and other non-profits) are already using a computer for non-linear editing, so they normally have the hardware available to make it work.  The next cheapest switcher I know of is over $1000 for a cheap SD switcher.