text:
Frame-accurate cuts with ffmpeg for 29.97 fps
I want to cut a video into many segments and then stitch them back together. To account for videos that have a framerate of 29.97 I cut them into 100-second videos via ffmpeg -ss 0 -t 100 which works well for the most part and outputs videos that have a duration of 100 seconds and 2997 frames.
I've noticed that for some video sources with a (constant) frame-rate of 29.97 it'll output a video with a duration of 100.034 and 2998 frames instead of the expected 100 and 2997. For subsequent segments (e.g. ffmpeg -ss 100 -t 100) it will output a video with a duration of 100.67 and 2999 frames.
The issue is that this results with segments that have overlapping frames and when I stitch the segments back together I have a video that is longer than its source and will be out of sync with the audio.
I noticed that for those problematic videos if I use ffmpeg -ss 0 -t 99.999 and ffmpeg -ss 99.999 -t 99.999 etc. it'll output videos of precisely 100 seconds and 2997 frames which solves the problem.
My question is why am I seeing these inconsistencies and how can I approach this in a reliable way that will work for all videos.
Full command:
ffmpeg -ss 0 -t 100 -i "./input.mov" -map V:0 -c:v libx264 -vf scale=-2:240 out.mp4

Logs:
ffmpeg version 2021-01-12-git-ca21cb1e36-full_build-www.gyan.dev Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 10.2.0 (Rev6, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-lzma --enable-libsnappy --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libdav1d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libglslang --enable-vulkan --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
  libavutil      56. 63.100 / 56. 63.100
  libavcodec     58.116.100 / 58.116.100
  libavformat    58. 65.101 / 58. 65.101
  libavdevice    58. 11.103 / 58. 11.103
  libavfilter     7. 95.100 /  7. 95.100
  libswscale      5.  8.100 /  5.  8.100
  libswresample   3.  8.100 /  3.  8.100
  libpostproc    55.  8.100 / 55.  8.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from './input.mov':
  Metadata:
    major_brand     : qt
    minor_version   : 512
    compatible_brands: qt
    encoder         : Lavf58.35.100
  Duration: 00:07:09.83, start: 0.000000, bitrate: 37022 kb/s
    Stream #0:0: Audio: pcm_s16le (sowt / 0x74776F73), 44100 Hz, stereo, s16, 1411 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
      vendor_id       : [0][0][0][0]
    Stream #0:1: Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, stereo, s16, 1536 kb/s
    Metadata:
      handler_name    : SoundHandler
      vendor_id       : [0][0][0][0]
    Stream #0:2: Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, stereo, s16, 1536 kb/s
    Metadata:
      handler_name    : SoundHandler
      vendor_id       : [0][0][0][0]
    Stream #0:3: Video: prores (HQ) (apch / 0x68637061), yuv422p10le(tv, bt709, progressive), 1920x1080, 32531 kb/s, SAR 1:1 DAR 16:9, 29.97 fps, 29.97 tbr, 30k tbn, 30k tbc (default)
    Metadata:
      handler_name    : VideoHandler
      vendor_id       : FFMP
      encoder         : Lavc58.64.101 prores_ks
Stream mapping:
  Stream #0:3 -> #0:0 (prores (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[libx264 @ 000001a481da7080] using SAR=640/639
[libx264 @ 000001a481da7080] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 000001a481da7080] profile High 4:2:2, level 2.1, 4:2:2, 10-bit
[libx264 @ 000001a481da7080] 264 - core 161 r3033 0d754ec - H.264/MPEG-4 AVC codec - Copyleft 2003-2020 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=7 lookahead_threads=1 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=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=81 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'out.mp4':
  Metadata:
    major_brand     : qt
    minor_version   : 512
    compatible_brands: qt
    encoder         : Lavf58.65.101
    Stream #0:0: Video: h264 (avc1 / 0x31637661), yuv422p10le(tv, bt709, progressive), 426x240 [SAR 640:639 DAR 16:9], q=2-31, 29.97 fps, 30k tbn (default)
    Metadata:
      handler_name    : VideoHandler
      vendor_id       : FFMP
      encoder         : Lavc58.116.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
frame=    1 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   0x
frame=  140 fps=0.0 q=41.0 size=       0kB time=00:00:02.86 bitrate=   0.1kbits/s speed=5.72x
frame=  273 fps=272 q=41.0 size=       0kB time=00:00:07.30 bitrate=   0.1kbits/s speed=7.28x
frame=  423 fps=281 q=41.0 size=     256kB time=00:00:12.31 bitrate= 170.4kbits/s speed=8.17x
frame=  571 fps=284 q=41.0 size=     512kB time=00:00:17.25 bitrate= 243.2kbits/s speed=8.58x
frame=  715 fps=284 q=41.0 size=     768kB time=00:00:22.05 bitrate= 285.3kbits/s speed=8.77x
frame=  853 fps=283 q=41.0 size=     768kB time=00:00:26.66 bitrate= 236.0kbits/s speed=8.84x
frame=  986 fps=280 q=41.0 size=    1024kB time=00:00:31.09 bitrate= 269.8kbits/s speed=8.84x
frame= 1117 fps=278 q=41.0 size=    1280kB time=00:00:35.46 bitrate= 295.6kbits/s speed=8.82x
frame= 1263 fps=279 q=41.0 size=    1536kB time=00:00:40.34 bitrate= 311.9kbits/s speed=8.93x
frame= 1435 fps=286 q=41.0 size=    1536kB time=00:00:46.07 bitrate= 273.1kbits/s speed=9.18x
frame= 1584 fps=287 q=41.0 size=    1536kB time=00:00:51.05 bitrate= 246.5kbits/s speed=9.25x
frame= 1734 fps=288 q=41.0 size=    1536kB time=00:00:56.05 bitrate= 224.5kbits/s speed= 9.3x
frame= 1880 fps=288 q=41.0 size=    1792kB time=00:01:00.92 bitrate= 240.9kbits/s speed=9.34x
frame= 2013 fps=286 q=41.0 size=    1792kB time=00:01:05.36 bitrate= 224.6kbits/s speed= 9.3x
frame= 2178 fps=289 q=41.0 size=    1792kB time=00:01:10.87 bitrate= 207.1kbits/s speed=9.41x
frame= 2338 fps=291 q=41.0 size=    2048kB time=00:01:16.20 bitrate= 220.2kbits/s speed=9.49x
frame= 2484 fps=291 q=41.0 size=    2048kB time=00:01:21.08 bitrate= 206.9kbits/s speed= 9.5x
frame= 2646 fps=293 q=41.0 size=    2048kB time=00:01:26.48 bitrate= 194.0kbits/s speed=9.57x
frame= 2814 fps=295 q=38.0 size=    2304kB time=00:01:32.09 bitrate= 205.0kbits/s speed=9.65x
frame= 2981 fps=297 q=41.0 size=    2304kB time=00:01:37.66 bitrate= 193.3kbits/s speed=9.72x
frame= 2998 fps=296 q=-1.0 Lsize=    2533kB time=00:01:39.93 bitrate= 207.7kbits/s speed=9.86x
video:2498kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.416280%
[libx264 @ 000001a481da7080] frame I:17    Avg QP:28.16  size:  6543
[libx264 @ 000001a481da7080] frame P:849   Avg QP:35.09  size:  2215
[libx264 @ 000001a481da7080] frame B:2132  Avg QP:37.45  size:   265
[libx264 @ 000001a481da7080] consecutive B-frames:  3.6%  3.8%  2.5% 90.1%
[libx264 @ 000001a481da7080] mb I  I16..4: 34.4% 48.6% 17.1%
[libx264 @ 000001a481da7080] mb P  I16..4:  1.5%  4.4%  0.9%  P16..4: 32.5% 14.7%  9.3%  0.0%  0.0%    skip:36.8%
[libx264 @ 000001a481da7080] mb B  I16..4:  0.1%  0.1%  0.0%  B16..8: 18.5%  2.0%  0.4%  direct: 1.3%  skip:77.6%  L0:46.9% L1:42.6% BI:10.5%
[libx264 @ 000001a481da7080] 8x8 transform intra:60.5% inter:61.4%
[libx264 @ 000001a481da7080] coded y,uvDC,uvAC intra: 40.1% 47.4% 14.3% inter: 11.4% 6.1% 0.6%
[libx264 @ 000001a481da7080] i16 v,h,dc,p: 52% 15%  8% 24%
[libx264 @ 000001a481da7080] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19% 16% 36%  3%  5%  5%  6%  5%  4%
[libx264 @ 000001a481da7080] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 28% 21% 14%  4%  7%  7%  9%  5%  5%
[libx264 @ 000001a481da7080] i8c dc,h,v,p: 66% 11% 15%  8%
[libx264 @ 000001a481da7080] Weighted P-Frames: Y:25.8% UV:12.1%
[libx264 @ 000001a481da7080] ref P L0: 59.9% 23.7% 14.8%  1.5%
[libx264 @ 000001a481da7080] ref B L0: 69.1% 19.4% 11.5%
[libx264 @ 000001a481da7080] ref B L1: 94.4%  5.6%
[libx264 @ 000001a481da7080] kb/s:204.50

Full command and logs missing.

@Gyan I've added the command and logs. Hope that's helpful. Thanks!

Use the segment muxer instead. At 29.97 fps, 100 seconds doesn't contain a whole number of frames.

@Gyan Thanks.
Are you saying that at 29.97 fps 100 seconds does not contain whole frames because 30000/1001 = 2.9997003? if so what's the logic? does ffmpeg round it to the next frame? and if so can I rely on 99.999 to be consistent with producing 2997 frames for 100 seconds of 29.97 fps?

I was not familiar with segment muxer but giving it a glance seems like it will over-complicate my process as my process entails distributing the processing of each segment to another machine or machine process which enables reduced transcoding time via running them in parallel and since the segment muxer doesn't seem to support outputing a single segment and will need to process them all, this would mean that I first need to split the source file into smaller files via stream copying and then transcode each segment individually. I prefer to avoid the management of this extra complexity.

I meant 30000/1001 = 29.97003

It seems that there are at least 2 ways to achieve this:

As Gyan mentioned in the comments, by using the segment muxer which is designed for segmenting videos. For my use case his method was not practical.

Using cuts that are multiplications of 100 seconds (100, 200, 1000, etc.) which will ensure that each cut ends at precisely the end of a frame (2997 * n) and hence at precisely the desired time (100 * n).

For method 2, I'm not sure why but in some scenarios even when the source video appeared to have a constant frame rate of 29.97 fps the cuts would not be accurate (off by 1-2 frames). To fix this I had to ensure the source was transcoded with -r 29.97 -vsync cfr which then resulted in accurate cuts.


text:
Why can't I render these videos without audio being out of sync?
I've pulled out all guns to merge 13 episodes into one video, failing and staring at a brick wall. I've rendered on KDenlive in Linux and Davinci Resolve on Windows.
I even screen recorded the whole damn thing in OBS, still audio out of sync and midway it just starts choking, stuttering and leaving gaps without audio XD
When I play the original videos in VLC, they play just fine. My problem is simply that I don't know what is causing issues here.
Here's the mediainfo output of all the episodes, hoping somebody more savvy can see the culprit in it.
https://pastebin.com/3mQ4Q1wV

The issue was, the videos had a variable frame rate which choked up the editors.
The solution was using Handbrake to encode the videos with a constant frame rate.

source: Stack Exchange

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

sort: votes


text:
Remove silence from video (stay synced + audio fading (if possible))
Goal:
Remove silent parts from video (while complying with the constraints below)
Constraints:

Keep audio and video in sync.
Don't remove silent parts smaller than x seconds.
nice2have: treat sound with duration < x seconds as silence
nice2have: add audio fading effect at cut points (with the length of x seconds, video can be hard-cut). Example:
super nice2have: only re-encode video at cut points

What I tried so far:

silenceremove: removes silence, but

❌ does not keep AV sync.
✅ I think start_duration did this trick
✅ I think stop_duration did this trick
~
~

`silencedetect:

I couldn't get this to work. I expected, that I could get some "frame stamps", that I could use to automatically get the video cut by ffmpeg.

I tried the software Reaper, which can actually do the job. However,

It needs to re-encode the whole video
The saved video is huge ( = very poorly compressed). Therefore I need another full reencoding.
The process is manual

Misc:

Currently I'm using the following line to normalize audio. I would like to combine the silence removing with this one:
ffmpeg -i "input.avi" -af loudnorm -codec:v copy "output.mp4"

Questions:

Is this possible in ffmpeg only?
How would a command for that look like?
If not ffmpeg: are there other tools, that would accomplish the task?

Just to clarify, when sound is removed, the video part of the same length should be removed too and you'd have a hard cut, right? Maybe this helps for combining multiple video chunks into a file without reencoding: https://stackoverflow.com/questions/7333232/how-to-concatenate-two-mp4-files-using-ffmpeg

Also, apparently Reaper can be automated, you can start it by command line and autorun an action after opening when you have the sws-extension installed and use the "project startup" action. However, I have never tried it.

@Matt Yes, same video length should be cut. Hard video cuts are no problem. Concatenating videos would be ok, if I'd have a way to cut out all parts without silence. Reaper: Reaper enforces a re-encoding of its created result. I.e. a 1.5h video takes about 1.5h to 2.5h to process (too slow).

Based on a ffmpeg users IRC conversation, looks like silenceremover doesn't keep the presentation timestamps after doing its thing, probably because it was thought to be used only for audio, so the muxer afterwards has no way to know that some frames should be dropped. So no, ffmpeg is not going to work like this.
I found a few github repos doing this kind of thing, and I had the best result with this one. Looks like it might even do some of you nice-to-haves.

Not all constraints are met, but the following python+ffmpeg script removes silences:
https://github.com/DarkTrick/python-video-silence-cutter

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


text:
How to rename recovered video files based on date and duration?
Realizing that I had not copied trip videos before I had reformatted and reused the memory card made me first bang my head against the desk, then trying to recover what's still left on the card.
I tried two different programs, putting the results in two different folders.
The second program seemed to recover more files than the first one did, but at closer inspection many of those files were just tiny fragments of one video.
So I try to make a "union" of all those fragments.
Unfortunately the recovery process destroyed the creation dates of the files (Most files were AVCHD (BDMV, m2ts), a few were MP4).
After having previewed all the fragments, I'd like to rename the files using a common pattern like
YYYY-MM-DD_HHMMSS@HHMMSS (year, month, day, hour, minute, second plus duration) or YYYY-MM-DD_HHMMSS-HHMMSS using creation date and time as well as ending time (starting time plus duration).
Sorting those files by name I should easily find duplicates and overlaps.
Despite of that renaming using exiftool, I wonder whether someone has mastered a similar challenge before.
Other software I have available is EDIUS 8 and the free version of Davici Resolve.
I don't know (or how) whether they could assist aligning all those fragments in to one sequence, but that is very much what I want eventually.

Asking elsewhere I got an answer: https://exiftool.org/forum/index.php?topic=12073.msg65253#msg65253


text:
Davinci Resolve with fast CPU but Slow GPU
Currently I am rocking this setup:
Nvidia GTX 1080
32GB DDR3
SATA SSD

I have the posibillity to switch to a PC with these Specs:
3900x
R9 290
64GB DDR4 3600
NVMe Gen4 SSD

The main things I do my PC is programming and video editing.
I am using DaVinci Resolve, which heavily utilizes the GPU and CPU, would I have a disadvantage using the much older slower GPU, but with a much much faster CPU?
Or would editing be smoother with the much faster CPU?
I am editing mostly 4K:30 footage and rendering to 1080p:30 with basic color grading and effects.

Since you're delivering 1080p, there's no need to edit in 4K.  You'll get better performance in Resolve if you leave your timeline at the lower resolution, even if you're using 4K source footage.  It automatically uses 1/4 debayer if you happen to be using RAW footage, and will use less resources for compressed codecs as well.  Image scaling automatically uses highest quality available, too.  But using a 4K timeline to edit   will slow down Resolve and requires more vRAM per frame.

From what I've read, Resolve very much depends on your GPU power -- speed and VRAM. I believe there's a preference to turn off at least some GPU usage, but that's probably more of a workaround for something crashing rather than something to be done on a normal basis.
Probably the best place to ask would be the Black Magic forums and over there, Carsten Sellberg answered a similar question with:

In Resolve the CPU is used to run the app, disk I/O and compression and decompression of codecs.
Resolve does all its image processing in the GPU on the graphics card. More CUDA/OpenCL Cores are better.
There are two factors that is important for the Graphics card. The first is, that it have enough vRam to hold a single video frame. For 4K is the absolute min 6 GB of vRam, but min 8 GB of vRam or more are recommended.
The other factor is the CUDA/OpenCL performance. Higher CUDA/OpenCL performance gives a faster Resolve.


text:
DaVinci Resolve delivers distorted 1920x1080 videos
I'm new to DaVinci Resolve, and new to video editing too.
I used the newest version of DaVinci Resolve 16. I used OBS Studio to record some game/desktop footage at 1920x1080 and 30 fps. I then imported said footage into DaVinci with no issues and edited it. Everything was normal. However, after rendering, the result looks wrong (see the image below)

The output video canvas seems to be 1920x1080, but the actually image is squeezed.
My project settings for the timeline are:
- 1920x1080.
- Pixel ratio is square -- I have a few options (square, 16:9, 4:3 and cinema), but when I choose 1920x1080, the 16:9 and 4:3 checkboxes stay dark and I can't select them.
I tried also to change the "Clip attributes", which include PAL 16:9 and NTSC 16:9. None of it worked.
I used the "Youtube 1080P" rendering option preset.

I don't think it's a limitation of the free version.  Check all the project and system settings in Davinci. There are a lot of them - maybe one of them is set to something other than 1920x1080

I figured out the problem. I was confused about the project settings of 19201080 with pixel ratio "square", I thought this is somehow wrong, but I was wrong. The "square" is just the pixel width height ratio, not related to the 19201080 setting, I didn't know the pixels can be rectangle.   So the problem is, I set imported footages pixel ratio 16:9 and project pixel ratio square, so the export result is not rignt, when I change the footage pixel to square, result is fine.

You can answer your own question here. You should. It improves visibillity. Re: pixel aspect ratio; until you're spending >$10K on anamorphic lenses, or unless you're using ancient camcorders, you can leave this at square.


text:
Can I assign multiple language-dependent audio tracks to youtube video?
(similar to Does YouTube allow multiple soundtracks)
I have prepared a video that has subtitles for two different languages, and I have isolated audio-only track for these two languages, too.
The base video has no voice output.
So I wonder whether I can construct a video on youtube to have it all, sub-titles per language and audio-tracks per language.
According to How to Check If You Have YouTube's Multi-Language Audio Feature I don't have the multi-language audio feature.
My audio is all "5.1" in case it matters.

Unfortunately, this isn't currently possible. YouTube has been incredibly slow with this rollout, and it's still not available to most channels.
The best way to approach this is probably to upload two separate videos, marked with their separate languages (maybe linking to each other in the description).
Also, it seems that you're suggesting a use case where the base video has audio but no dialogue, and you want YouTube to mix in either language's dialogue? That's not the intention of their multilingual feature, you're supposed to upload entirely separate audio tracks for each language.

The original has separate audio tracks for voice comments (one per language), and all the other tracks are fed to a common bus (say "audio"). The final language audio tracks were created by mixing the "audio" bus with the specific language track, so each of the language-specific audio tracks is complete (i.e.: sound plus voice).


text:
Rendering problem
I have a very big problem with rendering my video in Davinci Resolve 17.
Every time i render a video it doesn't start at the beginning and it's rendering 1 clip only.
I am trying to finish a 3 minute video, but when IO render, I only get 20 seconds video.
Same thing to copy/paste adjustment clips:
Whenever I paste the adjustment/text I had copied, then it'll paste only at 1 spot, and that spot is also where the render starts, and that clip is the only clip that's getting rendered.
I hope someone can help me to finish my project.

On the Deliver page there is an option to process Single Clip or Individual Clips.  Choose Single clip. It is in the left-side menu close to the area where you choose the path and output options.

Also, make sure you don't have any in-out areas selected on your timeline page or it will just render that out. Alt+X will clear all in-out points.

@Kerby you should accept (and up-vote) the answer if it helped.


text:
Edges look wrong when compositing layer with blur and transparency
I'm trying to composite layers from an animation I made with Blender in After Effects. The problem I'm running into is that the motion-blurred edges are either receding, or becoming discolored, depending on the settings I choose.
I'm using a 32bit OpenEXR Multilayer file and the EXtractoR plug-in to select the layers. I'm also using Color Profile Converter.
For whatever reason, the edges look more accurate when UnMult is checked, but the colors get messed up.
Pictured below is the combined render (from Blender), which I'm using as the basis to compare my composite to. Beneath that is how my composite looks without, and then with UnMult checked.


text:
In After effects how can I store the start and end point values of a gradient on one layer to generate the opposite values in another layer
my composition width is 4480
I have 2 layers with a gradient ramp on each
once I've entered the start and end position of the gradient on the first layer I need to have the opposite equivalent start and end position values of that gradient generated in the second layer's gradient.
So with a comp width of 4480 if gradient 1 start x is 1000 and end x is 1250 then gradient 2 start x should be 3480 and end x is 3230. The Y is going to have a fixed position.
Ideally I'd like to tie in the start x and end x of the first graident to an expression control such as a slider so i can  adjust the position of the points simultaneously.

This is very similar to your other question:
In After Effects how can I generate the value of an opposite x position and then send that value to an effect on another layer?
The answer is the same. Use a pick whip to link two controllers together.

yes i tried the answer on the other question but that seemed to duplicate the output of the first gradient onto the other layer, if i change the start point on  gradient 2 as on the answer on the other question then it shifts the two x's apart so i figured i must be asking the question incorrectly. I'm obviously a bit lost when it comes to pickwhipping two controllers together to get the desired outcome


text:
How to search for a sound in a video
I want to make a compilation video of Tesla FSD Beta's disengagements. When FSD Beta disengages, it makes a particular sound. I would like a piece of software I can use without having to code that will show me the timestamps of each time the sound is heard. Ideally, it would be a video editor or something similar which could also allow to trim the video. I would prefer if it was free or at least free trial.

If you are curious to what it sound like, https://youtu.be/IVn06N-1fCA?t=483

I'm not aware of any easy software to do that, but I'm posting anyway, since it could be useful to others as well.
There are open source projects that attempt to do what you require, basically by applying what @Jason Conrad said in his answer.
One of them is craigfrancis/audio-detect that you can find on GitHub. You first need to generate samples of the sound that you want to detect, and generally the more you have the better the performance of the algorithm will be. This can be done quite simply with the command that you find in the readme.
After that, the actual processing can be run, which takes the samples you extracted and tries to find instances of the same sound in an input file.
It's pretty easy to run both operations if you know a little about command line. Unfortunately, there's probably no magic solution for this task.

You'd probably want to download them, and process the audio, so that you could search faster than realtime.  Doing that without a paid, premium subscription might violate YouTube's Terms of Service, and it might even violate the TOS WITH a premium subscription, so be sure you study those carefully, first.
If you can manage to download them, you might be able to use fast Fourier analysis to fingerprint the sound, and then search the files for it.  You don't necessarily need to know all of the details about the signal processing, as long as you can find a tool that'll help you do it.  I'd recommend having a look at this article as a starting point, and searching online code repositories like GitHub for something that suits your level of engagement and code familiarity.  Even if you don't have any experience coding, you can sometimes find links to helpful google colabs or jupyter notebooks installations.  Here's one I found one earlier today for music segmentation, that will analyze music from YouTube links and spit out Midi keyboard parts, just by clicking through the colab.
If you aren't able to download the files, you could still theoretically use software to analyze the stream of audio coming through your speakers, worst case, but you'll still need to find suitable tools to fingerprint it, and I'm less confident that you'd be able to find an off-the-shelf solution which works that way.

I was hoping for some software which just allow me to put in a sound file and find the timestamps after downloading but what you suggested sounds rather complicated. Anyway, thanks for putting the effort to help me.

Honestly, I feel bad for posting such a crummy answer. The only reason I did is that I think it’s such an interesting question, and I hope somebody can help me help you find a better one.  Anybody know if FFMPeg already has a built-in way to do this?  @gyan?


text:
How to convert Fast Mpeg 4v2 (mp4v) with ffmpeg
I have problem with ffmpeg properly recognizing a video encoded with Microsoft Fast Mpeg 4v2 codec. Apparently it's a software codec. VLC plays the video fine. The codec reported by VLC is:
Codec: MPEG-4 Video (mp4v)
Video resolution: 8192x8192
Frame rate: 7.549296

Additional info that MediaInfo reports:
Codec ID: mp4v-20
Bit rate mode: Variable
Minimum frame rate: 3.429 FPS
Maximum frame rate: 24.000 FPS

However, when trying to read this stream with ffmpeg, it reports the following errors:
$ ffmpeg -v error -i Somefile_01_31_17_08_21.mp4 -f null -
[mpeg4 @ 000002394e221800] [IMGUTILS @ 000000edaf9ff890] Picture size 0x0 is invalid
[mpeg4 @ 000002394e221800] video_get_buffer: image parameters invalid
[mpeg4 @ 000002394e221800] get_buffer() failed
[mpeg4 @ 000002394e221800] thread_get_buffer() failed
[mpeg4 @ 000002394e221800] get_buffer() failed (-22 0000000000000000)
[mpeg4 @ 000002394e1f3300] Context scratch buffers could not be allocated due to unknown size.
[mpeg4 @ 000002394e1f3300] [IMGUTILS @ 000000edafbff450] Picture size 0x0 is invalid
[mpeg4 @ 000002394e1f3300] video_get_buffer: image parameters invalid
[mpeg4 @ 000002394e1f3300] get_buffer() failed
[mpeg4 @ 000002394e1f3300] thread_get_buffer() failed
[mpeg4 @ 000002394e1f3300] get_buffer() failed (-22 0000000000000000)
[mpeg4 @ 000002394e214480] Context scratch buffers could not be allocated due to unknown size.
[mpeg4 @ 000002394e214480] [IMGUTILS @ 000000edafdff6a0] Picture size 0x0 is invalid
(...)
[mpeg4 @ 000002394e247780] video_get_buffer: image parameters invalid
[mpeg4 @ 000002394e247780] get_buffer() failed
[mpeg4 @ 000002394e247780] thread_get_buffer() failed
[mpeg4 @ 000002394e247780] get_buffer() failed (-22 0000000000000000)
Too many packets buffered for output stream 0:1.
[mpeg4 @ 000002394e221800] Context scratch buffers could not be allocated due to unknown size.

ffmpeg -codecs doesn't show it as one of the codecs. This question suggests that this is a standard mp4 codec supported by ffmpeg module in VLC. How is it that ffmpeg module in VLC decodes the video properly but ffmpeg itself doesn't? Any idea how to convert this video to h264/h265?
EDIT
Full log without error:
$ ffmpeg -i SomeFile_01_31_17_08_21.mp4 -f null -
ffmpeg version git-2020-08-07-fab00b0 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 10.2.1 (GCC) 20200805
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libgsm --enable-librav1e --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
  libavutil      56. 58.100 / 56. 58.100
  libavcodec     58. 99.100 / 58. 99.100
  libavformat    58. 49.100 / 58. 49.100
  libavdevice    58. 11.101 / 58. 11.101
  libavfilter     7. 87.100 /  7. 87.100
  libswscale      5.  8.100 /  5.  8.100
  libswresample   3.  8.100 /  3.  8.100
  libpostproc    55.  8.100 / 55.  8.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 00000220cc12d900] decoding for stream 0 failed
[mov,mp4,m4a,3gp,3g2,mj2 @ 00000220cc12d900] Could not find codec parameters for stream 0 (Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 45242 kb/s): unspecified size
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'SomeFile_01_31_17_08_21.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    encoder         : Lavf54.6.100
  Duration: 00:01:11.00, start: 0.000000, bitrate: 45440 kb/s
    Stream #0:0(und): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 45242 kb/s, 7.55 fps, 24 tbr, 24 tbn, 24 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Side data:
      stereo3d: top and bottom
      spherical: equirectangular (0.000000/0.000000/0.000000)
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 195 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Stream mapping:
  Stream #0:0 -> #0:0 (mpeg4 (native) -> wrapped_avframe (native))
  Stream #0:1 -> #0:1 (aac (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
[mpeg4 @ 00000220cc136240] [IMGUTILS @ 000000e95b9ff2b0] Picture size 0x0 is invalid
[mpeg4 @ 00000220cc136240] video_get_buffer: image parameters invalid
[mpeg4 @ 00000220cc136240] get_buffer() failed
[mpeg4 @ 00000220cc136240] thread_get_buffer() failed
[mpeg4 @ 00000220cc136240] get_buffer() failed (-22 0000000000000000)
[mpeg4 @ 00000220cc193300] Context scratch buffers could not be allocated due to unknown size.
[mpeg4 @ 00000220cc193300] [IMGUTILS @ 000000e95bbff530] Picture size 0x0 is invalid
[mpeg4 @ 00000220cc193300] video_get_buffer: image parameters invalid
[mpeg4 @ 00000220cc193300] get_buffer() failed
[mpeg4 @ 00000220cc193300] thread_get_buffer() failed
[mpeg4 @ 00000220cc193300] get_buffer() failed (-22 0000000000000000)
[mpeg4 @ 00000220cc14e040] Context scratch buffers could not be allocated due to unknown size.
[mpeg4 @ 00000220cc14e040] [IMGUTILS @ 000000e95bdff8b0] Picture size 0x0 is invalid
[mpeg4 @ 00000220cc14e040] video_get_buffer: image parameters invalid
[mpeg4 @ 00000220cc14e040] get_buffer() failed
[mpeg4 @ 00000220cc14e040] thread_get_buffer() failed
[mpeg4 @ 00000220cc14e040] get_buffer() failed (-22 0000000000000000)
[mpeg4 @ 00000220cc151400] Context scratch buffers could not be allocated due to unknown size.
[mpeg4 @ 00000220cc151400] [IMGUTILS @ 000000e95bfff520] Picture size 0x0 is invalid
[mpeg4 @ 00000220cc151400] video_get_buffer: image parameters invalid
[mpeg4 @ 00000220cc151400] get_buffer() failed
[mpeg4 @ 00000220cc151400] thread_get_buffer() failed
[mpeg4 @ 00000220cc151400] get_buffer() failed (-22 0000000000000000)
[mpeg4 @ 00000220cc154c80] Context scratch buffers could not be allocated due to unknown size.
[mpeg4 @ 00000220cc154c80] [IMGUTILS @ 000000e95c1ff430] Picture size 0x0 is invalid
[mpeg4 @ 00000220cc154c80] video_get_buffer: image parameters invalid
[mpeg4 @ 00000220cc154c80] get_buffer() failed
[mpeg4 @ 00000220cc154c80] thread_get_buffer() failed
[mpeg4 @ 00000220cc154c80] get_buffer() failed (-22 0000000000000000)
[mpeg4 @ 00000220cc1a9a00] Context scratch buffers could not be allocated due to unknown size.
[mpeg4 @ 00000220cc1a9a00] [IMGUTILS @ 000000e95c3ffa40] Picture size 0x0 is invalid
[mpeg4 @ 00000220cc1a9a00] video_get_buffer: image parameters invalid
[mpeg4 @ 00000220cc1a9a00] get_buffer() failed
[mpeg4 @ 00000220cc1a9a00] thread_get_buffer() failed
[mpeg4 @ 00000220cc1a9a00] get_buffer() failed (-22 0000000000000000)
[mpeg4 @ 00000220cc1aa7c0] Context scratch buffers could not be allocated due to unknown size.
[mpeg4 @ 00000220cc1aa7c0] [IMGUTILS @ 000000e95c5ff300] Picture size 0x0 is invalid
[mpeg4 @ 00000220cc1aa7c0] video_get_buffer: image parameters invalid
[mpeg4 @ 00000220cc1aa7c0] get_buffer() failed
[mpeg4 @ 00000220cc1aa7c0] thread_get_buffer() failed
[mpeg4 @ 00000220cc1aa7c0] get_buffer() failed (-22 0000000000000000)
[mpeg4 @ 00000220cc1aac40] Context scratch buffers could not be allocated due to unknown size.
[mpeg4 @ 00000220cc1aac40] [IMGUTILS @ 000000e95c7ff290] Picture size 0x0 is invalid
[mpeg4 @ 00000220cc1aac40] video_get_buffer: image parameters invalid
[mpeg4 @ 00000220cc1aac40] get_buffer() failed
[mpeg4 @ 00000220cc1aac40] thread_get_buffer() failed
[mpeg4 @ 00000220cc1aac40] get_buffer() failed (-22 0000000000000000)
[mpeg4 @ 00000220cc1aa300] Context scratch buffers could not be allocated due to unknown size.
[mpeg4 @ 00000220cc1aa300] [IMGUTILS @ 000000e95c9ff970] Picture size 0x0 is invalid
[mpeg4 @ 00000220cc1aa300] video_get_buffer: image parameters invalid
[mpeg4 @ 00000220cc1aa300] get_buffer() failed
[mpeg4 @ 00000220cc1aa300] thread_get_buffer() failed
[mpeg4 @ 00000220cc1aa300] get_buffer() failed (-22 0000000000000000)
[mpeg4 @ 00000220cc1ab0c0] Context scratch buffers could not be allocated due to unknown size.
[mpeg4 @ 00000220cc1ab0c0] [IMGUTILS @ 000000e95cbff530] Picture size 0x0 is invalid
[mpeg4 @ 00000220cc1ab0c0] video_get_buffer: image parameters invalid
[mpeg4 @ 00000220cc1ab0c0] get_buffer() failed
[mpeg4 @ 00000220cc1ab0c0] thread_get_buffer() failed
[mpeg4 @ 00000220cc1ab0c0] get_buffer() failed (-22 0000000000000000)
[mpeg4 @ 00000220cc1a9e80] Context scratch buffers could not be allocated due to unknown size.
[mpeg4 @ 00000220cc1a9e80] [IMGUTILS @ 000000e95cdff8a0] Picture size 0x0 is invalid
[mpeg4 @ 00000220cc1a9e80] video_get_buffer: image parameters invalid
[mpeg4 @ 00000220cc1a9e80] get_buffer() failed
[mpeg4 @ 00000220cc1a9e80] thread_get_buffer() failed
[mpeg4 @ 00000220cc1a9e80] get_buffer() failed (-22 0000000000000000)
[mpeg4 @ 00000220cc1e4d40] Context scratch buffers could not be allocated due to unknown size.
[mpeg4 @ 00000220cc1e4d40] [IMGUTILS @ 000000e95cfff550] Picture size 0x0 is invalid
[mpeg4 @ 00000220cc1e4d40] video_get_buffer: image parameters invalid
[mpeg4 @ 00000220cc1e4d40] get_buffer() failed
[mpeg4 @ 00000220cc1e4d40] thread_get_buffer() failed
[mpeg4 @ 00000220cc1e4d40] get_buffer() failed (-22 0000000000000000)
[mpeg4 @ 00000220cc1e3f80] Context scratch buffers could not be allocated due to unknown size.
[mpeg4 @ 00000220cc1e3f80] [IMGUTILS @ 000000e95d1ff8e0] Picture size 0x0 is invalid
[mpeg4 @ 00000220cc1e3f80] video_get_buffer: image parameters invalid
[mpeg4 @ 00000220cc1e3f80] get_buffer() failed
[mpeg4 @ 00000220cc1e3f80] thread_get_buffer() failed
[mpeg4 @ 00000220cc1e3f80] get_buffer() failed (-22 0000000000000000)
[mpeg4 @ 00000220cc1e5f80] Context scratch buffers could not be allocated due to unknown size.
[mpeg4 @ 00000220cc1e5f80] [IMGUTILS @ 000000e95d3ff640] Picture size 0x0 is invalid
[mpeg4 @ 00000220cc1e5f80] video_get_buffer: image parameters invalid
[mpeg4 @ 00000220cc1e5f80] get_buffer() failed
[mpeg4 @ 00000220cc1e5f80] thread_get_buffer() failed
[mpeg4 @ 00000220cc1e5f80] get_buffer() failed (-22 0000000000000000)
[mpeg4 @ 00000220cc1e9640] Context scratch buffers could not be allocated due to unknown size.
[mpeg4 @ 00000220cc1e9640] [IMGUTILS @ 000000e95d5ff670] Picture size 0x0 is invalid
[mpeg4 @ 00000220cc1e9640] video_get_buffer: image parameters invalid
[mpeg4 @ 00000220cc1e9640] get_buffer() failed
[mpeg4 @ 00000220cc1e9640] thread_get_buffer() failed
[mpeg4 @ 00000220cc1e9640] get_buffer() failed (-22 0000000000000000)
Too many packets buffered for output stream 0:1.
[mpeg4 @ 00000220cc136240] Context scratch buffers could not be allocated due to unknown size.
Conversion failed!

EDIT
More logs
% ffmpeg -probesize 100M -analyzeduration 100M -i SomeFile_01_31_17_08_21.mp4
ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
  built with FreeBSD clang version 10.0.0 (git@github.com:llvm/llvm-project.git llvmorg-10.0.0-0-gd32170dbd5b)
  configuration: --prefix=/usr/local --mandir=/usr/local/man --datadir=/usr/local/share/ffmpeg --pkgconfigdir=/usr/local/libdata/pkgconfig --enable-shared --enable-pic --enable-gpl --enable-avresample --cc=cc --enable-alsa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libaom --disable-libaribb24 --enable-libass --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcelt --enable-libcodec2 --enable-libdav1d --disable-libdavs2 --disable-libdc1394 --disable-debug --enable-htmlpages --enable-libdrm --enable-libfdk-aac --enable-libflite --enable-fontconfig --enable-libfreetype --enable-frei0r --enable-libfribidi --disable-gcrypt --enable-libgme --enable-gmp --disable-gnutls --enable-version3 --enable-libgsm --enable-iconv --enable-libilbc --enable-libjack --disable-libklvanc --enable-libkvazaar --disable-ladspa --enable-libmp3lame --enable-liblensfun --enable-libbluray --enable-librsvg --disable-librtmp --enable-libxml2 --disable-lto --enable-lv2 --disable-mbedtls --disable-libmfx --enable-mmx --enable-libmodplug --enable-libmysofa --enable-nonfree --enable-openal --enable-opencl --enable-libopencv --enable-opengl --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-openssl --enable-optimizations --enable-libopus --disable-pocketsphinx --disable-libpulse --enable-librav1e --enable-runtime-cpudetect --enable-librubberband --enable-sdl2 --enable-libsmbclient --enable-libsnappy --disable-sndio --enable-libsoxr --enable-libspeex --disable-libsrt --enable-sse --enable-libssh --enable-libsvtvp9 --disable-libtensorflow --enable-libtesseract --enable-libtheora --enable-libtwolame --enable-libv4l2 --enable-vaapi --disable-vapoursynth --enable-vdpau --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --disable-libxavs2 --enable-libxcb --enable-libxvid --enable-libzimg --enable-libzmq --disable-libzvbi
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x80d0d2000] decoding for stream 0 failed
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x80d0d2000] Could not find codec parameters for stream 0 (Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 45242 kb/s): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'SomeFile_01_31_17_08_21.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    encoder         : Lavf54.6.100
  Duration: 00:01:11.00, start: 0.000000, bitrate: 45440 kb/s
    Stream #0:0(und): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 45242 kb/s, 7.55 fps, 24 tbr, 24 tbn, 24 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Side data:
      stereo3d: top and bottom
      spherical: equirectangular (0.000000/0.000000/0.000000)
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 195 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
At least one output file must be specified

Share full log without -v error

@Gyan added the log

And the log of ffmpeg -probesize 100M -analyzeduration 100M -i SomeFile_01_31_17_08_21.mp4?

@Gyan added the log

Possibly a regression in decoding. Get an older version (< 3.0) and see if it works.


text:
Exported the same video twice with the same settings yields files with different hashes
When I export an Adobe Premiere project to video twice with the same export settings, why does it yield videos with different file hashes?
Shouldn't the files be identical and have matching hashes? Where is the source of randomness coming into the encoding process?

The encoding settings

These two files were encoded using identical settings a few seconds apart, note that the files are not actually identical.

Yes, your observation is correct and everything works fine. Even if settings are identitcal, the file hashes will always be different.
The reason is quite simple: XMP metadata which is embedded in the files.
Such metadata entries which are often different are:

time stamps (not only the date but the time too)

creation date
modified date
metadata date

IDs

document ID
instance ID
original document ID

A bit of binary data in the header is different too. All the rest, meaning the actual video and audio data is the same. The encoding algorithms are working deterministic - that means, given the same input they produce the same output. At least those I've tried for my example. This doesn't have to be true in other cases.

wow, now that you mention it, its obvious. thanks


text:
Moov atom not found on Raspberry Pi platform (Linux)
I have asked this question on innumerable sites but I haven’t been able to get an answer to solve my problem.  The question
Need help to fix a broken MP4 which lacks a MOOV atom
Seems to be on point since I am having a very similar problem.  But mine should be much, much simple.
I am ripping DVDs for personal use to stream on Plex.  The tool I am using is MacX DVDRipper Pro and also MakeMKV.  Both work just fine on my Mac as does HandBrake.  The videos play as expected on the Mac whether the container is mkv or mp4 or run through HandBrake with Web Optimized (moov atom in front of file) or not.  Everything seemed good at this point.
When I move to my RPi4 some work and some don’t.  At first I figured it was an issue with Plex but as I found by running mediainfo, ffmpeg, and AtomicParsley the ones that don’t play on that platform have limited XML information or errors.  Below are links to screen shots.  I can also provide hex pictures if desired.
The following examples are for an episode that works on RPi (moov atom at bottom of file)
https://share.getcloudapp.com/E0u9br9G
https://share.getcloudapp.com/BluYZ1KB
https://share.getcloudapp.com/8Lukjr5Z
The following are the same utilities as above but with an episode that fails on RPi (moov atom at the bottom of the file)
https://share.getcloudapp.com/X6u9Odb2
https://share.getcloudapp.com/BluYZ1DG
https://share.getcloudapp.com/jkuelDEG

Questions about DVD ripping and personal movie/series collections are not production related and therefore off-topic.

I understand but I noticed solutions that may be related in this group.  Is there anywhere other than stackexchange where I can put this since it is specific to video?

Does the latter file run fine on the Mac? If yes, then it looks to be an issue with copying the file onto RPi

There is the Raspberry Pi SE https://raspberrypi.stackexchange.com/ which is relevant if there the issue is related to the Raspberry and for questions on Raspberry specific software. There is also an SE for software recommendations if you want to look for another tool https://softwarerecs.stackexchange.com/ In either case read the help pages to find out what exactly is on topic.


text:
ffmpeg problem with split & combine portions of same video
I'm trying to split & combine multiple portions of the same video file.
Since there are multiple portions that I want to combine, I want to use filtercomplex to do this.
Also, since some of the portions are quite small in duration, I want to use precise timestamps (setpts=PTS-STARTPTS)
The "script.txt" file contains the code below.
[0:v]trim=0.823625:5.88717,setpts=PTS-STARTPTS[v0];
[0:a]atrim=0.823625:5.88717,asetpts=PTS-STARTPTS[a0];
[0:v]trim=6.87858:10.2093,setpts=PTS-STARTPTS[v1];
[0:a]atrim=6.87858:10.2093,asetpts=PTS-STARTPTS[a1];
[0:v]trim=10.5683:11.5989,setpts=PTS-STARTPTS[v2];
[0:a]atrim=10.5683:11.5989,asetpts=PTS-STARTPTS[a2];
[0:v]trim=11.9066:13.2301,setpts=PTS-STARTPTS[v3];
[0:a]atrim=11.9066:13.2301,asetpts=PTS-STARTPTS[a3];
[0:v]trim=14.2123:14.903,setpts=PTS-STARTPTS[v4];
[0:a]atrim=14.2123:14.903,asetpts=PTS-STARTPTS[a4];
[0:v]trim=15.2467:16.5819,setpts=PTS-STARTPTS[v5];
[0:a]atrim=15.2467:16.5819,asetpts=PTS-STARTPTS[a5];
[0:v]trim=17.1012:20.1223,setpts=PTS-STARTPTS[v6];
[0:a]atrim=17.1012:20.1223,asetpts=PTS-STARTPTS[a6];
[0:v]trim=20.9504:22.5714,setpts=PTS-STARTPTS[v7];
[0:a]atrim=20.9504:22.5714,asetpts=PTS-STARTPTS[a7];
[0:v]trim=23.4482:24.8745,setpts=PTS-STARTPTS[v8];
[0:a]atrim=23.4482:24.8745,asetpts=PTS-STARTPTS[a8];
[0:v]trim=25.5697:26.8718,setpts=PTS-STARTPTS[v9];
[0:a]atrim=25.5697:26.8718,asetpts=PTS-STARTPTS[a9];
[0:v]trim=27.5758:27.9942,setpts=PTS-STARTPTS[v10];
[0:a]atrim=27.5758:27.9942,asetpts=PTS-STARTPTS[a10];
[0:v]trim=28.5431:30,setpts=PTS-STARTPTS[v11];
[0:a]atrim=28.5431:30,asetpts=PTS-STARTPTS[a11];
[v0][a0][v1][a1][v2][a2][v3][a3][v4][a4][v5][a5][v6][a6][v7][a7][v8][a8][v9][a9][v10][a10][v11][a11]
concat=n=12:v=1:a=1[outv][outa]

The command that I am using to run ffmpeg with this script file is as below
ffmpeg -i "input.mp4" -c:v libx265 -filter_complex_script "script.txt" -map [outv] -map [outa] "output.mp4"

But after running this command, the output video file is only ~5 seconds long (the very first portion of the input video).
As we can see from the first line of the "script.txt", the start timestamp is ~0.8 and the end timestamp is ~5.8 giving a duration of ~5s for the first piece of the output video.
So, ffmpeg is not joining any other parts of the input video after the first part. I am unable to understand why so.
I am facing this problem since the past couple of months after I updated ffmpeg. The same syntax of script file and command line used to work fine before that. Did any changes in the update alter the syntax that ffmpeg expects for this task?
Any help is much appreciated.

Hey, I tried to edit your answer on a tablet to improve code formatting. I don't know why but it messed  up the whole line. I can't see history and now I am not sure what your output was. Was it "output.txt? Probably not.

Everything seems to work on my end. Just copied the command line assuming output is output.mp4 and have a 22 sec. long video. The question is how did you install FFMpeg. Are you using any non-standard version? This could be important because I used to have a similar issue. There are two version for Windows gyan.dev and BtbN. My script for splitting a video only worked using the second version BtbN. BTW your script works on BtbN.

The output was output.mp4.
This is the result of running ffmpeg -version on my current installed ffmpeg.
ffmpeg version N-113032-g76cd71bf0c-20231219 Copyright (c) 2000-2023 the FFmpeg developers built with gcc 13.2.0 (crosstool-NG 1.25.0.232_c175b21)
I tried the above script file & command line with this version of ffmpeg & got the output video that's only ~5s long.
Then I tried the same script & command line on the ffmpeg build from the BtbN link you suggested & got ~22s long output video. So now the problem has been identified & I can solve it now. Thanks

Thanks to Celdor for identifying the problem.
The build of ffmpeg I had installed on my system was the culprit. Here's the output of running ffmpeg -version in the command line
ffmpeg version N-113032-g76cd71bf0c-20231219 Copyright (c) 2000-2023 the FFmpeg developers built with gcc 13.2.0 (crosstool-NG 1.25.0.232_c175b21)

The problem was solved after I installed the build of ffmpeg from BtbN


text:
5.1 audio on YouTube videos?
How do I get Stereo + 5.1 for YouTube videos?
It has been a long time since somebody made a question about this topic on this forum and lots of stuff have changed since then. So does YouTube support 5.1 audio now, in 2021?

Don't create a new question if there's an older one which is exactly the same. You have the possibility to add answers if you find out anything new (in this case there is no news on 5.1 sound) or with higher reputation add comments. But the one thing you should not do is creating the same question again. We'll close the question as duplicate, you'll see an automatic comment inserted below mine.

Does this answer your question? How do I get Stereo + 5.1 for YouTube videos?

its over 5 years old, youtube isnt flash anymore

I meant, there is no news from YouTube's side. They supported upload of 5.1 back then and still support it today. If you download the audio with youtube-dl you can get a 5.1 track (e.g. https://www.youtube.com/watch?v=DRjbuXjNwrk, try the m4a_dash 48000Hz format). Browser/app playback seems to work only under very specific hardware/software combinations if at all, many people failed to get this working.

On closer inspection, the answers on the linked questions are all not very useful. Still, it'll mess up the site if people repost existing questions. Follow the old one and wait until somebody answers or do your own research & experiments and post your answer. In case you get stuck in the middle you can ask a new detailed question on this topic, e.g. when you have produced a proper 5.1 audio track and upload it with the correct video codec to YouTube and it's still not working, then you can come back and create a question about why it didn't work in your case.

good idea.......

seems like 5.1 videos could be downloaded with youtube-dl, meaning that 5.1 is supported on stuff like TV systems


text:
a software program that allows me to draw on the screen while a video is playing and outputs a new video with the drawings on top of the old video?
As stated in the title, it is as simply as that. I need a piece of software that plays a video and then allows me to draw on top of the video and then the output will be a new video with the draws on top of the old video.
I have a linux mint operating system. I prefer free, of course. But is willing to pay.

You may want to look at collaboration software, rather than video editing software. I believe MS Teams and probably many other programs let you use a whiteboard or annotate a presentation. I think they may -- but I haven't confirmed -- let you share a video and use annotation tools. You might also want to check out Camtasia, although this would not be real-time annotation.

Zoom can do that as well and also support recording, but it's not really a video-editor


text:
Premiere Pro - Copies vs Instances of Graphics
I'm trying to finally transition away from Premiere Pro's Legacy Titles, but I'm having trouble getting used to the "Essential Graphics".
In general I find it confusing that Graphics behave differently than clips, and my main questions at the moment are:

Where can I get an overview of all graphics used in a Project ? The Graphics I've created are not in the Project panel. (But the "Upgraded" graphics Premiere creates automatically, are there!)
How can I create a second instance of a Graphic, so that if I edit one instance, all the instances will be modified? If I Alt-Drag a graphic in the timeline, this will create an independent copy, i.e. that will be edited independently from the first.

Answering my own question, wrapping up a thread from the Adobe Community:

All Graphics used in the active sequence will be visible in the "Text" panel/window, under "Graphics".

If you create a Graphic from scratch, it won't be visible in the Project panel, and if you Alt-drag, this will create an independent copy in the timeline.

Once a graphic is selected, from the "Graphics and Titles" menu, you can "Convert to Source Graphics". This will add the item to the Project Bin, and you can use the same graphic several times

From the Premiere Help:

Source Graphics are modern essential graphics that work in a similar
way to Legacy Titles:

They have a project item.
You can track usage through the metadata column for Video Usage.
Edits made to the project item or an associated track item will ripple through all track items.

Note that if you Alt-drag a Source Graphics, it will be duplicated, creating a new copy of it in the Project Panel.


text:
Premiere pro adds audio pop at beginning of slowed down tracks
In Premiere Pro, I sometimes slow down an Interview to 90% of original speed, in order to make a very-fast speaking person more easy to follow.
So, I adjust clip speed/duration, set it at 90% and select 'maintain audio pitch', as of the below screenshot. However, at each cut, there's an audible 'pop' whenever the interviewee starts speaking. It's impossible to eliminate with audio transitions or by fading in the audio using key frames.

The pop persists even in exports.
The only workaround I have found is toI slow down the audio in Audition (or a different audio processor) and re-import it into premiere. However, this adds a lot of work, especially if there are many cuts.
Is there any way to avoid the audio pops in premiere pro ?
I have a suspect that it's a bug in premiere, as slowing down the audio also adds a sort of "reverb" effect, so probably the algorithm behind such function is not really "clean".

I've never had this happen to me before. One possible reason: maybe there is a DC-offset on your audio recording? This can sometimes cause clicks as the audio clip quickly transitions from "digital silence" to whatever the offset level is on the recording. Slowing these clicks down would make them sound like pops. DC offset should be visible in the waveform, if you open the clips in Audition.
This image isn't from Audition, but it demonstrates what DC offset looks like:

Audition has a repair DC offset function I think. Process your audio files with that, then try your slowdowns & transitions etc in Premiere.

Thank you for this, but I use audio straight out of my GH5, and it records in LPCM, with a noticeable noise floor.  I actually think it's a bug in premiere: slowing down the audio also adds a sort of "reverb" effect, so probably the algorithm which is used is not really "clean".


text:
Develop Davinci Resolve plugin
I need to develop plugin for Davinci Resolve. This plugin must be similar on Premiere Plugin, which can be active in the separate panel (please see screenshot).
In Premiere Pro I can write this panel on the next technology stack: js/ts+html+css+Adobe CEP(platform to interact with Adobe API).
I'm new to Davinci Resolve. Tell me the entry point in Davinci Plugin Developing.

I'm not sure what you want. Can you please edit the question and explain it more clearly?

@Matt Hello! I edited my question

Blackmagic have a developer page and there's links to the forum there: https://www.blackmagicdesign.com/ae/developer/ you might get better answers than on this site.

Ok, thank you @stib

From DaVinci Resolve you can go to Help -> Documentation -> Developer. It will open the folder with available development options for DaVinci Resolve. In linux it is in /opt/resolve/Developer/Scripting/README.txt
Some of types of plugins are: python/lua scripting, OpenFX plugins, Electron integrations, Fusion, Codec plugins, lut.
Explore files, there are examples there. And you can start programming.

authors: Валентин Никин


text:
Premiere export colors
I know I am not the first, but I also have terrible problems with making the export with (latest) Premier Pro in an iMac. I looked through a lot of forums and I cannot find a solution anywhere…
As you can see on the picture, not just that the colors are shifted but also the image / skin colors completely fall apart when I export it…
The higher image is a thumbnail saved from Premiere, lower one is played on VLC (similar to the look on YouTube and other players).
I tried everything I could think of and I am not able to get any better result at all.
I have tried exporting with Premiere and Media encoder.
Using CUDA and software encoding.
Using different codes bitrates for export HD h.264 on 10,35,50mbps, h.265, QuickTime Prores 422HQ, mpeg, jpg export, and it is all more or less the same… every time the skin fell apart.
I tried turning on and off export form previews, render at maximum depth, maximum render quality…
I tried exporting with the LUT from Adobe and it changes color completely in to something else, but the skin still falls apart.
The strangest I think is the difference between save snapshot from the timeline and the frame from jpg export. Does anybody have any idea what to do?
Last resort would be to go frame by frame saving snapshots from program monitor and encoding with something else, but there must be a better way?
Any suggestions??
Thank you.

The underlying problem seems that the P3 colour space monitor that iMacs use is unsuitable for a Rec.709 compliant workflow. This video explains how color spaces work in Premiere: https://mixinglight.com/color-grading-tutorials/demystifying-premiere-pros-color-management-and-finishing-pipeline/ Apparently, there is a workaround. But since I don't have Apple hardware I can't share any experience. Also the article and video where they explain the workaround requires a membership, so I didn't watch the 2nd part: https://mixinglight.com/color-grading-tutorials/premiere-pro-hdr-apple-p3-displays/

@Matt it’s not the P3 color space as much as apples botched interpretation of rec.709.  But apple’s “display P3” is not actual P3, either. The point is, even if he changed his monitor to rec.709, he’d still get a color shift.

Can I just say that whatever they're doing with that angle grinder looks hella dangerous. Where's the guard? And they've got a ring on.


text:
Using the ffmpeg hashframe muxer on encoded frames in real time
I am trying to use the ffmpeg framehash muxer to hash frames as they are being recorded.
I've tried
ffmpeg -nostdin -hwaccel auto -fflags +igndts \
-f alsa \
  -ac 1 \
  -ar 44000 \
  -thread_queue_size 2048 \
  -i hw:2,1,0 \
  -acodec aac \
-f video4linux2 \
  -thread_queue_size 2048 \
  -i /dev/video0 \
  -vcodec libx264 \
  -preset ultrafast \
  -tune zerolatency \
  -s 1280x720 \
  -r 30 \
  -t 00:00:05 \
-f avi - \
| ffmpeg -nostdin -hwaccel auto \
-i - \
-f framehash out/out.md5 \
out/out.avi

The first ffmpeg command creates the streams (audio/video) and pipes to a second ffmpeg command in the avi format, which uses the framehash muxer then writes the avi file. The idea of using the piped command is that instead of the hashframe muxer using the rawvideo stream, it uses the encoded stream... That being said, hashframe seems to be using the rawvideo stream, and I can't get the mapping right.
I've tried -map 1:0 -map 1:1 \ before the framehash, because I saw this with a channel of mpeg4 and mp3.
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> rawvideo (native))
  Stream #0:1 -> #0:1 (mp3 (mp3float) -> pcm_s16le (native))
  Stream #0:0 -> #1:0 (h264 (native) -> mpeg4 (native))
  Stream #0:1 -> #1:1 (mp3 (mp3float) -> mp3 (libmp3lame))
Output #0, framehash, to 'out/out.md5':
  Metadata:
    encoder         : Lavf58.29.100
    Stream #0:0: Video: rawvideo (NV12 / 0x3231564E), nv12, 1280x720, q=2-31, 331776 kb/s, 30 fps, 30 tbn, 30 tbc
    Metadata:
      encoder         : Lavc58.54.100 rawvideo
    Stream #0:1: Audio: pcm_s16le, 16000 Hz, mono, s16, 256 kb/s
    Metadata:
      encoder         : Lavc58.54.100 pcm_s16le

Anyways, when I compare the output files, (by running ffmpeg -i out/out.avi -f framehash out/out1.md5 the hashes don't match. Any idea how I can fix this problem?
Thanks!!!

Framehash output from stream
Framehash output from file

Use the tee muxer.
ffmpeg -nostdin -hwaccel auto -fflags +igndts \
-f alsa \
  -ac 1 \
  -ar 44000 \
  -thread_queue_size 2048 \
  -i hw:2,1,0 \
-f video4linux2 \
  -thread_queue_size 2048 \
  -i /dev/video0 \
  -map 1 -map 0 \
  -vcodec libx264 \
  -preset ultrafast \
  -tune zerolatency \
  -s 1280x720 \
  -r 30 \
  -acodec aac \
  -t 00:00:05 \
-f tee "[f=framehash]out/out.md5|[f=avi]out/out.avi"

Thank you! This works! I am using ffmpeg -hide_banner -fflags +genpts -i out/out.avi -c copy -f framehash out/out1.md5  to confirm the hashes. The hashes seem to line up, except the first and third frames are switched between the framehash files. The hashes keep the order throughout the rest of the file. Any ideas here? I updated the question with a screenshot comparing the two files.

Check the stream #.

Stream 0 is video

Yes, check the stream # on each line that you are comparing.

I checked again and for the 5 second avi formatted video there are some miss-matched frames. When I tried with mp4 everything matches. I posted two pastebins with the two avi framehash file. Any idea why this is happening with the avi format?


text:
In FFMPEG's H.265 encoder, which CRF value leads to "visually lossless" results?
I am trying to shrink some videos from 1920x1080 to 1280x720 and to achieve a reasonable compromise between video quality and file size. I have decided to give FFMPEG's H.265 encoder a try, and now would like to know which CRF value I should use to get "visually lossless" results.
I know that this term may be misleading, but I have taken it from FFMPEG's H.264 documentation. In the section about the CRF value:

Consider 17 or 18 to be visually lossless or nearly so; it should look the same or nearly the same as the input but it isn't technically lossless.

Furthermore, in FFMPEG's H.265 documentation, in the section about the CRF value:

The default is 28, and it should visually correspond to libx264 video at CRF 23, but result in about half the file size.

So I have learned that a H.265 CRF 28 should produce roughly the same visual results as a H.264 CRF 23.
Question:
Does that mean that a H.265 CRF 22 should produce roughly the same visual results as a H.264 CRF 17?
In other words, is the following statement correct: If I encode a video with H.264 with a CRF of N, do I get the same visual result if I encode the same video with H.265 with a CRF of N+5, independent of N? Or does that formula only apply for N=28 and N=23, respectively, since this is the example the FFMPEG H.265 documentation gives?

The suggestion provided by @Gyan is approx 21 here - https://video.stackexchange.com/questions/16664/what-crf-or-settings-i-should-choose-for-h265-in-order-to-achieve-a-similiar-qua

considering that in ffmpeg every +6 in crf means half the bitrate
and considering that hevc is 50% more efficient than avc
a crf of 23-24 will lead to visually-lossless compression in ffmpeg with libx265.


text:
Why would MP4 compression show up as noise because of a low bitrate when digitizing a Super 8 film reel to digital?
I'm looking to digitize a couple of Super 8 film reels using what's called a Wolverine digitizer/converter, which is a device that allows a person to digitize Super 8 film. However, while researching what the reviews had to say, I stumbled upon this paragraph:

[In regard to the image posted by user Laurent Bellier on 8mm Forum regarding the Wolverine device] Neat Video and other software plugins can help lessen the prominence
of the compression artifacts. But they can never recover the detail
lost to those artifacts in the first place. It's a garbage in->garbage
out type situation. The problem with these machines is they produce
mp4 files that are bitrate-starved. Compression artifacts are the
result when there is too much detail for the capture settings to
reproduce accurately. Yes you can make them look a little bit better
but that does not fix the actual underlying problem: that detail was
never captured by the wolverine in the first place--it's permanently
lost.

I'm already somewhat familiar with the concept of bitrate. Bitrate, if I understand correctly, is the amount of information from a video that is being shown on the screen per second. That is why it is generally better to watch a movie on Blu-ray rather than on Netflix because Netflix uses compression algorithms that are much more aggressive since internet speeds are a limiting factors. By watching the Blu-ray version, you are experiencing the movie at a higher "fidelity," since it's being shown at a higher bitrate. In other words, the Blu-ray offers a "truer" version of the movie compared to the Netflix version.
But what I don't understand is what bitrate has to do with MP4 compression artifacts.
Also, what is meant by bitrate in the above case?
The way the above paragraph uses the word "bitrate," isn't bitrate the amount of information that is being captured per second from each frame before the video file is created before applying MP4 compression?
If my understanding of the way the word bitrate is used in the above paragraph is correct, what does the person mean when the person says that the Wolverine device creates MP4 files that are "bitrate-starved"? Does the phrase "bitrate-starved" mean that the device is recording each frame at a low bitrate?
If bitrate-starved means that the device is recording each frame at a low bitrate, what is the cause of this? Is a low bitrate caused by the machine scanning each frame too quickly, resulting in a low bitrate? Is a low bitrate caused by the light source not being bright enough to capture all of the information in each frame resulting in a low bitrate?
And, finally, what do MP4 compression artifacts have to do with a low bitrate of an uncompressed video file? Does it have to do with there being too little information (low bitrate) in each frame? Is that what the person means by "bitrate-starved"?
I really need help with this. I need to know the pros/cons of buying a consumer device vs. going with a professional service. The consumer device is cheaper but riskier as it uses the sprockets to move the film frame by frame, which can further damage old film.

There’s also the issue of colour depth. A lot of consumer devices only use 8 bits of data to define the colour of each pixel. Some use less data to define red and blue pixels compared to green pixels as a way of reducing the amount of information that needs to be stored. This also reduces the ability to do image correction afterwards, regardless of overall bandwidth of the file.

Yep, I'm already familiar with the concept of color depth. I have a scanner that I plan to use to scan a bunch of old family photographs. Assuming the device does not use less data for the red or blue pixels, 8 bits means 2^8 possible colors per channel. Since there are 3 channels that's 2^82^82^8 colors. But what I don't understand is that even if I could find a device that stored more than 8 bits per channel, wouldn't there be no way of even representing those added colors on a computer monitor? So, if your computer monitor can't show these colors, what's the point of scanning >8 bits?

Because the image’s colour is defined with greater precision. So you as the grader get to decide what information is shown on screen and what is discarded when you grade your image. Eg you can pull more detail out of darker shadows if you need to make the image brighter, even though you couldn’t see that detail in the original ungraded image on your screen.

I don't own this scanner, but looking at the specs, it appears to record in MJPEG mode, scanning one frame at a time.
The MJPEG codec records each frame of video as a JPEG image.  So each frame is compressed using JPEG, which is a lossy compression process.
It then (I think?) has some software which can take the large MJPEG files and compress them further using mp4 h264? compression.
MJPEG is a bit like a flick book of JPEG images - each one is compressed individually - there is no compression across multiple frames.  This means it takes up more space than mpeg-4 compression which does analyse across frames, and so can compress videos further.
With all lossy compression systems, the more detail there is an image, the harder it is to compress it efficiently.  So if an image has lots of speckles and noise on it (like old film often does), this will either make the file much larger, or if the compressor is trying to target a given file size, the areas of low detail will become blocky.
What doesn't tend to happen with video compression is added noise.  By noise, I mean randomised pixels at different brightnesses or colours to the desired signal.  Noise tends to be an analogue artefact (e.g. grain in film or transmission noise ("snow") in an analogue tv picture).  Digital compression systems are terrible at compressing noisy images because every pixel is different (look at this HBO logo as a good example).

Thank you so much for answering, I wasn't sure anybody would. According to this user who bought the exact same scanner and had one of his MP4 files analyzed (its the 5th post down) using an automated service, the scanner uses the AVC codec aka h.264. However, according to the link of the user manual you posted, if you look on page 3 of the PDF, under features, it simply says that it encodes using "MPEG-4."

When the manual says "MPEG-4," do they really mean h.264 given that h.264 is sometimes called MPEG-4 Part 10?

Video files have wrappers and codecs. The .mp4 part of the file name refers to the wrapper. You can have many different codecs inside a video file- eg different ones for audio and video tracks. But mp4 files most commonly use h264 as the codec.

A lot of other things will affect the quality of the transfer, not least the optical quality of the signal path - eg the size and quality of the lens and the sensor. The bandwidth limitation of how the files are encoded will also affect the quality. Without having one to play with it’s tricky to offer any more advice.

Help me understand your 4th paragraph. I thought MJPEG and MPEG-4 were two opposing compression standards, and so it wouldn't be advisable to use them both together, but the scanner's manual clearly states that the machine uses MPEG-4, with no mention of MJPEG, and in your reply you state that the scanner uses MJPEG, so which is it? Are you saying that this particular scanner uses both MJPEG and MPEG-4 compression together?

I may be wrong about that - initially I thought I saw MJPEG mentioned on the amazon page, but looking now I can only see mp4 mentioned

I just have a few more questions. Correct me if I'm wrong, but assuming this device encodes video using h.264, isn't h.264 mainly a delivery codec, rather than a codec meant to allow for editing in post? For instance, I already know this device doesn't allow you to turn off auto-white balance, although it does allow you to adjust exposure somewhat, so if I ever wanted to adjust the white balance in post, wouldn't the use of this codec make it hard to adjust things like white balance, exposure, or even do any kind of color correction without the whole process being destructive to the MP4 file?

Yes you are right. It’s definitely not designed for use by editors or anyone who wants to manipulate footage afterwards.

Part 1: OK, h.264 is not a codec designed for editing, but if the scanner gets the auto-white balance wrong, is it even worth trying to edit the files in post, or do you consider it a hopeless endeavor?

Part 2: Also, since the term bitrate is a relatively new term in my vocabulary, could you clarify what that forum member, in the passage that I quoted, meant when he said that this device creates MP4 files that are "bitrate-starved"? I know from software that allows you to rip audio CDs to create MP3 files that you can often specify the bitrate at which you want to rip those CDs, anywhere from 65kps (low-quality) up to 245kbps (high-quality), and I'm assuming, that in this case, "bitrate" is synonymous with the level of MP3 lossy compression. Is that correct?

Part 3: If so, then when the forum member, in the passage that I quoted, claims that the compression artifacts that can be seen in the resulting video file are the result of the too-low bitrate that these devices use, does that mean that once the scanner has captured the information in a frame, when the scanner, finally, decides to encode that information as a video file using h.264, that the reason so many compression artifacts can be seen are the direct result of these devices using a higher-than-normal level of lossy compression, or, in other words, a low bitrate?

Part 4: Is that what the term bitrate means, low bitrate=high level of compression, high bitrate=low level of compression? I'm just trying to understand what the term bitrate means. Correct me if I'm wrong but the information in the frames has been captured, it's just that a lot of that information is being thrown out because of lossy compression (low bitrate) in order to create a more-manageable file size, right?

Yes exactly. High bitrate = less compression, so more of the original image is retained. You can still colour correct lossy images, but you will quickly start to see artefacts from the compression as soon as you adjust the colours even a small amount from the original. This is because the algorithms to reduce the image were throwing away much of the details that you are now trying to reintroduce when you adjust the image through colour correction.

I think I got it. So, when that forum member wrote, "Yes you can make [the compression artifacts] look a little bit better but that does not fix the actual underlying problem: that detail was never captured by the wolverine in the first place--it's permanently lost," that's not entirely true. The information was captured, it's just that a lot of the information got thrown out because of the low bitrate setting.

Last question and then I'll let you go. What do you think is the reason for the low bitrate encoding? According to the Amazon product listing page for the machine, the first person who answered this question about the machine suggested that it has to do with the speed at which the machine has to encode (20 fps). Is that a plausible explanation?

Don’t know. Cost, I guess? Maybe simplicity for users who want small files as they’re easier to deal with.


text:
Does digitizing Super 8 film at 4K resolution make any sense?
You often/used to hear that "35mm film is 4K, 16mm film is 2K, and Super 8 film is 720p," so why do I often see services such as this one offering to digitize Super 8 film at 4K?
If all of the information on a Super 8 film has already been captured at 720/1080p then what's the point of digitizing the film at higher resolutions such as 4K?
I realize that when a 4K display receives a 1080p input that the display will have to upscale the picture using methods such as interpolation. But if one were to output a Super 8 film at 4K resolution to be displayed on a 4K display, wouldn't you be filling the 4K display with empty pixels given that all of the information on the Super 8 film has already been captured at 720/1080p?

Are you talking real super-8 film, as in silver-based emulsion? Or a digital "super 8" format? For film, the highest digital capture resolution should be used (for the highest quality reproduction); film in general is higher "resolution" because its images are formed from microscopic silver grains. For digital video, of course, there would be no reason for digitizing at all.

@user8356 Not sure what you mean by silver-based emulsion, I mean I know what an emulsion is, but I grew up entirely in the digital era, so these terms predate my time. When I say Super 8 film, I mean analog Super 8 film reels from the 70's. Are you saying 4K still makes sense for Super 8 film? If it does, then I'm not sure what I should do, since I couldn't find any Super 8 film converters that can output in 4K, that would allow me to do it myself. There are services which use specialized machine that can output in 4K, but they are expensive. What do you suggest I should do?

@user8356 ...Save up to have someone do it for me, or purchase a converter that can output in 1080p and do it myself?

@user8356 Services, such as this one, offer to digitize Super 8 film at 4K, but they charge $0.90/foot. If I do some simple math, 33 3-in reels at 50 feet of film per reel times $0.90/foot = 33 x 50 x 0.90 = $1485 vs. buying a converter from an established company that can only output in 1080p for $299.95 such as this one. What do you suggest I do? Save up to have it done for me in 4K or get a converter that can only output in 1080p and do it mys

When you digitize an analog source, the highest resolution is usually best. However, as you show, the cost of 4K digitization is too high. There is nothing wrong with digitizing at 1080p. It should look good on a large monitor or TV, and file sizes won't be as huge as 4K. Also, the original focus and exposure of the film might not be that good, so no need to use 4K for quality that isn't there. You could have a pro service digitize a real at 1080p so you can compare their results to the quality you get doing it yourself. I do not know if home film digitizer will produce good 1080p results.

Calling super-8 720p is confusing. There are no rows of pixels, only grains of emulsion, scattered in a random pattern on the base.
That said, film does have an upper bound on its resolving power, in other words, the smallest detail it can reproduce. Kodachrome could resolve 96-135 lines per millimeter, which can be roughly converted to 180-270 pixels per mm (it takes two pixels to resolve a line). A super-8  frame is 3.3mm high, so the vertical resolution is somewhere between 540 and 810 pixels. So as a back-of the envelope description of its resolving power 720p is a good approximation.
So if you capture super-8 in HD you will be getting enough resolution in your digital file that all of the image that is present on the super-8 frame will be preserved. Higher resolution will just give you more detail of the grain. It won't look worse, but it won't look a whole lot better.
What I would be more concerned about was the fidelity of the colour, and the quality of the transfer. A well transferred, lower resolution transfer will beat a poorly done higher resolution transfer any day. You can just project the film on a wall and film it, but it's probably going to look dreadful.

Thanks for taking a stab at answering the question. I didn't think anybody would and only noticed now that you answered the question, although I was able to glean some useful information from just the comments. My question, though, wasn't just about digitizing analog Super 8 film, it was also about the whole point of outputting an analog source at higher resolutions in general, i.e. scanning an analog photograph or digitizing Super 8 film.

Specifically, why does outputting an analog source at higher resolutions produce a better picture quality, however slight, on higher resolution screens than just outputting at a lower resolution and letting the higher resolution screen fill in the pixels using interpolation? That was really the question I needed to have answered.

A 4k scan will probably look better on a 4k screen than a 1080p scan digitally up-scaled. The extra resolution will be coming from the source, rather than an interpolation algorithm. But it will just be more detailed globs of grain, rather than actual image.


text:
Does digitizing a reel of (analog) Super 8 film at 1080p result in a lower *perceived* resolution/sharpness because of the said medium's film grain?
I've read online--though I forget the exact source--that when one wants to digitize a reel of Super 8 film and create a computer video file out of it at a resolution of 1080p that the final video file looks more like a 720p video file than it does as a 1080p video file because of the film grain that's present on the Super 8 film. Is this correct?
Edit: To further clarify, I've read that when a display, say a 1080p display is fed 720p content, the display will upscale the 720p content, which will soften the image. I'm wondering if something similar happens when Super 8 film is digitized at 1080p because of the inherent nature of the medium, where a 1080p video file will look similar to a 720p video because of the film grain. Or am I conflating both the concepts of sharpness with individual pixel clarity?


text:
Offsets in HLS video segments
I am streaming video from a camera to a process that monitors the stream for specific events. I am able to connect to the camera, download the m3u8 playlist, fetch the individual AVI video segments and start working on them.
However, I have noticed that the individual video segments have repeating frames, as if the streaming is inserting some kind of delay for synchronisation purposes.
Unfortunately, there is nothing in the video segments, or the m3u8 file to denote some kind of sync offset and how much that offset might be so that I can seek to that frame and start processing each segment from its particular offset.
When I try to access the video segments via ffmpeg, it reports a range of frames as "missing". Python libraries such as PyAV or pims do not complain for missing frames but I suspect that these repeated frames (appearing as a long pause) at the beginning of the video segments might be filled in by the libraries themselves if they detect some kind of error with the file.
I have also gone through rfc8216 which does mention "discontinuities" but these are marked at the level of segment. My problem here is not with discontinuities from segment to segment, but discontinuities WITHIN the content of a given video segment.
Is there something I may be missing here? What is the origin of these repeated frames and how would I be able to obtain a number of video segments from the camera that when played back, do not suffer from these long intermitent pauses?
EDIT:
Here is the output of ffprobe with -report added. The bit that I am a bit worried about is:
    Input #0, mpegts, from 'stream_0.avi':
      Duration: 00:00:05.89, start: 58029.795556, bitrate: 346 kb/s

...provided that, that start is an offset into the file where the "useful" content starts (?).
EDIT2:
Here is the ffmpeg report. I think the cur_dts errors are "filled" in automatically with the value of the first available frame.
The point here is to get some kind of "handle" to these offsets so that I can take them into account when going through the frames across segments and effectively go through an "un-interrupted" sequence of frames just as it would be received from the camera.
Indeed, the files are not plain AVI, they are MPEG-TS.
EDIT3:
Here is the newest report on a different capture segment. The previously captured segments were indeed showing as covering an interval of 6 seconds but carried just 2 frames.
These "corner cases" are indicative of the kind of information I would need at the point of processing, just like a video player does.
So, the point here is not so much "just playing the video" or getting access to its frames in the right way, but also being aware of all these little issues which would affect the processing as well. For example, here we have 2 "samples" (2 frames) out of a 6 second window. If this is a glitch of the camera or the network, I would like to get a hint about it because it would help with the processing.

When I try to access the video segments via ffmpeg, it reports a range of frames as "missing" --> Rerun with -report added. Share link to report file.

@Gyan thank you, please see update

That's a ffprobe report, not ffmpeg. You have to run ffmpeg -i SEGMENT -f null - -report .`BTW, your input has extension AVI but is actually MPEG-TS. The non-zero start time is perfectly normal.

@Gyan Please see "EDIT2". I am already finding this helpful, so at some point, please make sure you post this in some form of an answer. Your "...MPEG-TS.." comment was helpful in finding TS-DUCK and more importantly the "Intro to MPEG-TS" which I am going through at the moment. I was handed AVI files, no library complained when opening them, I did not think twice about it :)

@Gyan Any ideas about the ffmpeg report?

Only 2 video frames are shown as decoded. Run ffmpeg -copyts -i SEGMENT -an -vf showinfo -f null - -report and share report.

@Gyan Thanks, this is useful. There were indeed 2 frames in that segment which may have been some kind of a glitch (?). Please see EDIT3. This is more representative of the kinds of errors I got before (from ffmpeg) that were showing that a number of frames were missing.

@Gyan The missing frames seem to be genuine. That is, even if you discarded the long(ish) periods of time where a single frame is repeated, the remaining segments are not consecutive. I did a longer capture to confirm this and there are random discontinuities throughout. Which means that the frames are genuinely missing from the stream and nothing can be done about it :( Except if there is something else I may have missed here?


text:
Correct cable for Elmo TRV-16G output
I have an Elmo TRV-16G that I'm trying to connect to an Elgato video capture device. I'm trying to confirm that I'm purchasing the correct cable for the connection.

It appears to have two BNC connections for video and single RCA for audio. But, what's throwing me off is the gen-lock label? I've not run across that before. I'm looking to get a 2-BNC to single S-Video cable. Does that seem like the proper setup? I found a manual for the TRV-16 but it only shows a single RCA jack for video and another for audio, so it wasn't any help.

Here's the cable I'm considering

does yours also have an s-video output? If it does, this might work better. Genlock is a clocked output to provide video clock to any input device that uses it. In this example he uses the S-video out https://www.youtube.com/watch?v=D0GPhV_XNrA

Thanks for replying. No, the only connections it has are the three shown. I'm thinking that the two BNC are the S-Video out, but trying to confirm before I spend money on an adapter.


text:
DaVinci Resolve - Text solid fill not shown in preview
I'm using DaVinci Resolve for quite a while. However, after I bought a new higher-spec laptop and downloaded the latest non-beta DaVinci Resolve 18.6, I found that the solid fill of texts of my previously editted video can't be shown in preview, while I'm sure that the solid fill is "enabled".
I'll never overexpress my gratitute for the solution to this.


text:
Gradual light transition
I have a hdr timelapse that combines images shot with 5ev3 brackets and 3ev3 brackets. because of this there is visible light transition in the middle of the video. What would be the easiest way to fix this and make it gradual? I already tried deflicker plugins, but it doesn't help. Video example is on this link:

UPDATE
Leaving here my solution for this problem:
In case when you transition from 3HDR images to 1Image
I managed to do this in a pretty simple way and the result also seems to be pretty good. Since each HDR has 3 images (0ev, -3ev and +3ev), i just took out from the last 24 HDR image sequence images with 0ev ONLY, and created new clip only from those. Then I did opacity transition for these 24 images from 0% (image 1) to 100% (image 24). Then I overlayed this sequence in the video at the exactly same time that those HDR frames appear. Result - perfect gradual transition!
In case that transition is from 5HDR to 3HDR, same thing - just take 3hdr images instead of 1.

Easiest way:
Overlap the two videos slightly and crossfade.
Slightly trickier:
Animate feathered masks across them to make the transitions more subtle - easiest in After Effects
Another option:
Try to match the colour in the last frame of sequence 1 and the first frame of sequence 2 in a colour grading plugin (e.g. using Lumetri in Premiere)
LR Timelapse might also have options that help with this.

I think first 2 options would be noticeable since it would interrupt the flow? I will check more the  lumetri as you said - that one seems to be what I need here. thanks.

Given that it's a locked off shot, you'd be amazed what you can get away with. But it would reduce the overall duration obviously