text:
Questions on workflow: 12G-SDI to 500Mbps to RTSP stream
(Background: I'm relatively familiar with using ffmpeg and libx264 to produce videos on demand, but I'm quite new to live streaming)
I'm currently tasked with a project to compress a 4K camera's raw 12G-SDI or 6G or 3G feed and live-stream the compressed feed through RTSP over UDP. I also need to decide which equipments to purchase. The requirements are as follows:

The compression target can be one of the following: 100Mbps, 200Mbps, 500Mbps, 800Mbps. The target will not be changed on the fly once set.
Codec must be h.264 or h.265.
The latency from camera to RTSP output needs to be <1s.
No budget limit, although < $25K would be better.

Currently I'm thinking of the following setup:
4K camera -> capture card -> Linux PC (compression) -> RTSP
My questions are:

Are blackmagic ursa mini 4K and decklink card able to do the first 2 stages respectively?
Is ffmpeg + libx264 able to perform real-time compression at such a high bitrate? If not, any recommendation for hardware encoding card?

Thanks!

I've worked through a similar project over the last 6 months, and performed more tests than I can keep track of now.  So this is a little fresh for me.  With your questions:

4K camera -> capture card -> Linux PC (compression) -> RTSP

This will work well

Are blackmagic ursa mini 4K and decklink card able to do the first 2
stages respectively?

Yes

Is ffmpeg + libx264 able to perform real-time compression at such a high bitrate?

It's possible, but I'm going to say that whichever way you spin it, you're likely going to arrive at getting a hardware card.

If not, any recommendation for hardware encoding card?

nVidia Quadro cards are excellent.  Anything with a Maxwell GM204 chipset or higher.  Even a sub $1000 card will open up the world of possibilities, especially when it comes to hardware accelerated resizing, format conversion, and producing multiple outputs.
A note about libx264
I advise care getting advice from anyone who hasn't used it for the purposes you're trying.  The theoretical and unit tests don't always account for everything.
libx264 is an excellent encoder.  It's well known it produces superior quality encodes than say a hardware accelerated h264 encoder for the same bitrate.  It also has a whole heap of specific options that can maximise efficiency and produce a video with multiple 264 layers that is friendly to all types of clients.
The strength of libx264 isn't realtime encoding though.  Yes it has zerolatency tuning options, and crf modes to reduce cpu demand, but every small change can make a major impact on encoding time.  The difference between doing a 2560x1440 encode and a 3840x2160 encode is drastic.  The difference between a yuv420p and yuv444p is also drastic.
Also, importantly, many of the options that make the significant difference in libx264 are lookahead options, these unashamedly prfioritize the end product as opposed to the performance of getting to the end product.
No implementation of x264 that I know of, does threading very well.  You can have a rack server with 200GB ram, and 24 actual CPU cores, and max them out very quickly.
One of the "gotcha"'s of libx264 is that you can seemingly have it running so well that it looks like a video player - i.e. - you plug something into the SDI port, and it shows up on the network player.  Amazing.  You can have it running for days... Then all of a sudden when the input signal becomes very complex (i.e. low lighting, stage effects like haze, fast detailed motion, fades and transitions, etc.), all of a sudden the roof comes tumbling down reveal 35 issues that look like one.  You remove the issues one by one, and by the time you have it running a treat, you may decide that x264 isn't going to cut it.
Having said that - running at a higher bitrate, requires less compression, and does run noticeably better than at low bitrates.
Given the cost of hardware cards, the doors they open up, and putting that up against the scope of your project, I would highly recommend getting one, whether you use it or not.
At high bitrates - the benefits of libx264 are negated - in fact - h264_nvenc can do realtime 2pass encoding, with spacial and temporal motion filtering and lookahead.  Since you want less than 1s latency, you may not use these, but they are included in some low latency presets.
Blackmagic
The decklink SDK works well with linux.  It's simple to configure card options, change inputs, and using the tools provided you build your own capture tools if required.  Even a $199 Decklink 4K Mini Recorder PCIe card works well.
Example pipeline
Blackmagic -> Encoder -> RTSP
From that RTSP signal you could then run all of these at the same time:

RTSP -> Low bitrate preview / wifi stream
RTSP -> Archive
RTSP -> Create RTMP stream -> Send to live streaming site
RTSP -> Create a 1080p stream -> RTSP
RTSP -> Create an adaptive DASH stream with multiple resolutions

Thanks a lot for the detailed answer! It seems I'll be getting a hardware encoder card based on your advices. On the other hand, I'm still not sure about the "Encoder -> RTSP" part. I suppose using ffmpeg and nvenc to encode first, feed the output into ffserver, and output as an RTSP stream is the way to go?

ffmpeg is great.  It needs to be compiled manually with all the nvidia extensions, and also the decklink SDK


text:
Usage of Target and Maximum Bitrate with the H264 Codec in Premiere Pro
When exporting a video using the H264 Codec with a variable bitrate in Premiere Pro, you can set the target bitrate and the maximum bitrate. I would like to know how those work together and if there is any rule of thumb on what to set them to.
So AFAIK, the target bitrate is the average bitrate that the encoder will try to achieve by balancing out parts of the video where more or less information is required respectively. In that case, what is the purpose of the maximum bitrate setting? Is it the highest possible bitrate that won't be ecelled at any point of the video? Or can the encoder actually exceed the average bitrate over the amount speficied as target bitrate and the maximum bitrate is the highest possible average bitrate that the resulting video can have?
Also, how can I determine a good value for the maximum bitrate depending on the target bitrate? Let's say I export with 1, 10 or 20 MB/s (as my target bitrate), what should the maximum bitrate setting depend on?

Sondell spelled it out correctly.
You use the Target to size your final output file, as VBR will be used. AME will then try to average as close as possible to "average out" to your target, yet the actual bitrate could be much lower, or up to your Maximum Setting.
The Maximum Setting is in place because of bottlenecks which exist for playback; for instance, many Blu-Ray players cannot read anything higher than 30 Mbps. DVD Caps around 9 mbps I believe.
The one part that I would like to point out is I recommend always using 2-Pass VBR, never one pass; unless your content is very consistent frame for frame.
AME/PPro lack a "Minimum BitRate"; which is a shame. Using VBR 1 Pass can cause pixelation issues; such as when a camera flash goes off - blowing out to near all white a single discreet frame. As a 1 Pass encode does not pre-analyze the program stream prior to setting the bitrate for a given frame set; a one pass VBR can cause artifacting after a camera flash; or a white or black hard edit to picture.
Also, any flickering type of video as well, such as strobe lights, can also cause this. Basically; if your image goes from flat color (any color) to complex picture/moving image in a 1-2 frame span... there can be trouble.
This occurs because it sees the flash as a blown out white image... thus AME drops the bitrate down very low (think under 0.5 Mbps); because after all; its just a frame of white... high bit rates are not needed.
The issue is that AME, its scheme for how it ramps up and down the bit rate is not fast enough; when using 1 Pass VBR. So after a camera flash goes off; your next frame, or even next two frames; could appear blocky, as the VBR bitrate has not ramped back up fast enough, and the flash lasted for only a single discreet frame.
2 Pass; while it takes longer; does a much better job handling this.
To be perfectly honest; I master nearly all of my content using CBR. While this goes against the mainstream norm; I know what bitrates are needed for what quality I desire; I'm not happy with the 1 Pass Encoder Issues; and 2 Pass is a time consuming render.
There are cases where 2 Pass is necessary; such as long form online content delivery, but for most outputs CBR is fast, clean, and consistent.

You seem to have a good grip on what these parameters are all about.
The target bitrate is what the encoder tries to average throughout the video.
The maximum bitrate is the roof for how high the bitrate can go. How high it can spike.
It's a good idea to leave a substantial amount of headroom, 5-10%, between the target and the maximum bitrate.
Best of luck!

5-10% is an extremely SMALL amount of headroom between the target and max.

source: Stack Exchange

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

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

sort: votes


text:
Easier Way To Narrate Over Paused Frame?
In order to add commentary to a fast moving video I've been pausing the frame by taking a snapshot, saving to a file, recording narration, saving to a file, then manually adjusting the snapshot time. But the process feels clumsy in Windows Movie Maker. That software is also no longer supported by Microsoft.
Ideally I'd prefer to use a simple GUI editor like Movie Maker (ideally with keyboard shortcuts and/or voice control) since I don't have a lot of free time to master an advanced tool. Though if more involved tools are the only way to streamline the process then please share your experience.

Are you sure you don't want to upgrade to a slightly more serious editing suite? Because if you do, there will be a swarm of people waiting to tell you an easy and effective way to do what you're asking.

In that case, which suite would you recommend and how would I do it with that tool?

There is a simple Video editing suite called Camtasia.It is not free but you can try out the trial,If you like it you can purchase it.
It has an "Extend Frame" feature (also available in 7th version) that will allow you to extend a particular frame of video on the timeline as long as you want so that audio narration can continue.
That should achieve the same effect as pausing the video during recording, as in either case you will end up with a static image on the screen while the audio finishes playing out.
Then come in afterwards, play this pre-recorded screen video back... and lay down audio on top *WHILE being able to hit pause on the video, and continue talking, to whichever points in the video require more explanation.You can just simply check it out.

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


text:
How to save each segment as a separate file with DaVinci Resolve?
I have a movie imported into my project. The movie consists of several aikido techniques. I want to slice the movie with blade into several segments, each contains only one aikido technique.
Having cut the video, I want to save each segment into a separate file.
How to accomplish this easily?

Go to the deliver tab and on the left click on the file menu. Above it yopu should see the checkboxes labelled Render [ ] single clip [✓] Individual clips. check the individual clips box, and then check the Use Unique Filenames box. This will output every clip in your sequence as a separate file, with a numeric suffix, eg output_0001.mov, output_0002.mov…

You can either use a custom name or base the name on the original source clip. (This is how you export files from a grade, so that they link to the original footage file.)

Using the built-in exporter with individual clips export doesn't give you processed audio or different layers rendered together. It just renders the source clips trimmed the way you put them in your timeline.
I had this problem and ended up making MediaChopper. It is a small utility program that lets you split the video files based on almost any data.
First, you render the whole video file as usual. Then you export the Edit Index from DaVinci Resolve.
Take these two things, put them in MediaChopper and select which segments you want.
Full disclosure: I made MediaChopper and would love to hear if it's useful for anyone.


text:
Extract person from video
Is there a way to extract a person from a video without having a blue- (or green-)screen?
Any software which can do this?

If you have a frame where the person does not exist, you can use a tool called a difference matte. (You'll need to scroll down to the section titled "Difference Matte Effect" for a description.) It will find a difference between the frame without the person, and the frames with a person and remove areas that are the same, leaving only the difference (in this case the person). As linked, After Effects has such a tool. Many other video editors have it as well.

Thanks, let me just link the following thread, which also mentiones other software for achieving this: https://video.stackexchange.com/questions/4306/difference-matte-keying-software

Final Cut Pro X has a plugin called Pro Removal that can remove moving things from the scene on fixed camera shots.
Also there is a tutorial for After Effects that shows how remove objects from scene using the tracker.
Also you can clean frame by frame using Photoshop or similar if you have a good amount of time to spend or a crew to help you in the task.

Thanks for the answer! Unfornutaley I do not have both programs, so may I ask is there any freeware or open-source program out there that can accomplish this task... would be glad if you can add them to the list!

You could use the compositing tools in Blender to do this. Blender is free.


text:
Embedding another video to "blend" with the environment
Suppose I have a mirror, or a picture on the wall, and I want to run a second video into this.
How could that be achieved? And even in such a way as to correct for perspective?
For example, like in this video.

If you can use a tool like Apple's Motion or FCPX, or Adobe's After Effects, they all have the ability to put the 4 corners of a layer anywhere you want. With Motion or After Effects, you can even track the 4 corners and keep the "TV" image pinned in the right place.
In Motion, you can select a clip and open the Inspector. In the Inspector, press the "Properties" tab. There's a section in the properties called "Four Corner". If you twirl that open, it allows you to set where the 4 corners of the video go. You can put them wherever you like.
FCPX is similar - select the clip, and open the inspector. There should be a section in the inspector named "Distort". This will also let you set the 4 corners of the clip.
In After Effects you can select a layer and apply the built-in "Corner Pin" effect.

This can easily be accomplished using the "picture-in-picture" feature of most editing software. I've used Adobe Premiere and iMovie, and both include that feature.  Premiere has the advantage that you can "mask" a layer, so it is not quite rectangular, in order to fit the shape of the mirror.
Make sure the camera for the main scene is on a tripod and does not move at all. If that camera moves, you will need to animate your picture-in-picture video and mask so it appears to stay inside the mirror's frame.


text:
Lower framerate without re-encode
I'm looking for a way to lower the framerate of an H264 mp4 video without re-encoding the video.
Example: I have a 30 FPS input file and I need it to be 5 FPS. I want to avoid re-encoding because of time constraints and I also don't want to introduce additional compression artifacts.
Is this possible?

When you say you want to lower the framerate do you want the video to slow down, or to keep its current length? If it's the former you could accomplish this by changing the display frmerate in the metadata, if it's the latter then I think you're asking the impossible.

@stib I wanted to drop frames as necessary until target framerate was reached. I understand now that this is not possible because of P and B frames.

No. The video can be slowed down, but frames from an inter-coded codec stream (like H.264) can't be dropped without re-encoding.
Update:
The command below produces a file that plays in Potplayer and ffplay but not in VLC. It works for me on MP4s, Should work on MOVs. Doesn't work with MKV (you should be able to remux to MOV/MP4 and execute).
ffmpeg -discard nokey -i input.mp4 -c copy -vsync 0 I-only.mp4

Timestamps are retained. So each I-frame shows as a freeze frame till it's time for the next one. There may be a way to make this playable in VLC, but I'll try when I have more time.

Let's say that I am interested only in the I-frames. What process would you use to extract them along with their timestamps for later stitching?

Can extra frames be added without re-encoding? Say I want to go from 20fps to 30, just doubling frames where needed? (This question actually refers to webm, but I guess it probably applies too.)

@felwithe, if you wish to add or drop frames, re-encoding is needed for codecs like H264, VP8.


text:
FCPX 10.3 Audio multicam angles names to appear in main timeline?
Is there a way to have the names I give audio multicam angles, appear in the main timeline?
When I expand audio components it just has the name of the whole multicam clip.

Try and make sure Angles is checked:

This solution worked for me and I found it here towards the bottom of the post:
https://larryjordan.com/articles/apple-final-cut-pro-x-multicam-naming-weirdness/

Yes - I also ended up applying Roles to the different voices. Then checked Clip Roles too.


text:
Renaming source files without breaking link in Premiere?
So, I messed up and rushed into a project for work. Instead of giving my files good naming conventions, I worked off a generic file naming convention off the camera. Now I have many edits on premiere but if I want to rename my source files outside of premiere, I find I have to go one at a time.
Otherwise, if I batch rename them all at once I will have no idea what to relink to what in my project. I've searched and haven't found a solution other than renaming the files inside premiere and consolidating the project to copy to new location and selecting to rename media files to match clip names.
I don't like this solution because it means I'll have to use the new premiere files. Much appreciated.

Why would you want to rename the original files? I always leave the original files untouched and just assemble the assets in Premiere. It's more flexible since you can use multiple folders and metadata and you have a more streamlined process as it allows you to prepare your assets for fast assembly/cutting of your movie (see my answer here regarding shot logging/assembly workflows).

Because those original files are using a generic naming convention from the camera. If the files were to go offline and a new editor took over, he'd have no idea which files to connect. Or something could happen to the hard disk and we'd have to use a back up to relink all the media. with bad naming conventions there'd be no way. I should have first renamed those files. It was a really bad mistake.

Actually that's not true, since every filename is unique anyway. Just store the original files with their original name in one folder and import them like that. Premiere will remember the filenames. If you every have to relink them, you just have to relink one manually and Premiere will figure out the rest automatically. Since every filename will be unique (e.g. MVI_0184.mp4 or something like that), it will be no problem to relink them. Just rename and sort the files within Premiere, it will still remember the original filename

Instead, focus on making sure all source files and assets are in one folder (with subfolders) and not spread all over your harddrive. Use good naming conventions for your project folders (eg. 2017_05_14_project_name), this will help you much more in keeping your files and projects in order in the long run

They actually aren't unique with the Canon C100 I'm working with. On a fresh card, it starts the naming convention from 001 and onward. So multiple camera footage could have same file names.
See my answer below. I figured out a fail proof way to rename everything if needed.

I figured it out! It was super easy.
I used Adobe Bridge to batch rename. Very importantly, I left the preserve current filename in XMP metadata option checked.
BUT before clicking rename, I first clicked preview and exported the CSV file and saved it somewhere safe. This file will help you remember the original file name. In this instance I will know that file 001.png was renamed to 120.png. This is very important.
Now in Premiere, all your renamed files will go offline. If all your files in one location on your drive, this next step is very easy. Just link one file and if you can't remember what you renamed it to, the beauty is that you can quickly search your CSV file in many ways like excel. Then just relink your file to the renamed file that way. Premiere will recognize all your other renamed files because you preserved the XMP meta data. And that's it!

I'm afraid you're stuck where you're stuck. Doing a batch rename in bridge will break the links once you re-open the project in PPro... it's a shame they didn't offer a dynamic link for when doing batch renaming which kept the links in tact.
It is possible that using the Trim Project/Reduce Project (Trim for PPro / Reduce for AE) Feature would at the VERY least clear out the clutter. It would eliminate (not delete, just not compile into a new project folder on your disk) unused footage files - clips not in use I stress; and you would be only left with a new project folder that contains the footage/media which is actually used in sequences. Then, you could start working off of that new folder moving forward. Deleting unused/unneeded sequences would reduce this as well...
Chances are, you are only using a fraction of your clips; so this would be a away to at least minimize down the mess.
Then do a batch rename in Bridge on all your original assets, and re-import them into the new trimmed/reduced project.
I would recommend setting decent sized handles when you trim it down; because you may want to make changes to the clip in points and out points which ARE in use at this point.
That I think would be your best bet.

A friend of mine gave me the suggestion to rename the clips in premiere first. Then rename the source files the same. That way I can easily relink the media. Will this work? I'm guessing, worse case scenario I have to relink one clip at a time. I'm wondering if premiere would automatically find the clips.

Renaming files in Premiere does not actually rename the file all you are doing in this instance is changing the symbolic name (https://helpx.adobe.com/premiere-pro/using/organizing-assets-project-panel.html). And if you are willing to do it this way, you might as well go file by file renaming clips and re-linking them in premiere. Premiere will not automatically find the clips if their name has changed, it will only do so if their folder structure has changed and you 'point' it in the right direction.

See my answer. It's very good stuff. Might save your project one day.


text:
Put creatures moving around in your videos
How the guy making the linked videos might have achieved those effects of creatures appearing behind him?
Here are the two videos I am refering to: see this, or this.

Looks like standard CGI stuff. It would be easiest to film the musician against a green screen, and then simply replace the background with computer generated scenery and creatures by using a chroma keyer.
He claims that some of the videos were filmed out doors. I don't know whether he's being cheeky or serious. But even if we take him at his word, you need to generate the creatures in the computer and then composite them into the scene.
In order to make this look good, you need to make sure that the lighting on everything looks correct. If you film the musician against a green screen, you can either put lights on the talent before filming and make sure they match the generated background, or add them in post to match the generated background. It's probably easier to do it during filming.

Looks like masking.  Masking lets you select an areas of the screen to allow video to show through on from another layer while preventing it on other parts.
In the second clip, a very rough mask would be sufficient since it isn't near anything in the foreground and may have just been placed there without any masking.
On the first clip, there is interaction with the foreground, so the guitarist would have had to been masked, with adjustments made frame by frame (possibly automatically, possibly manually) and this mask used to obscure the dinosaur behind the guitarist, but in front of the background.
A green screen is also possible as user1118321 mentioned, but certainly not necessary and some of the lighting queues seem to indicate it was likely shot outside as indicated, otherwise the quality of the green screen work is much higher than the quality of the animation work itself.


text:
Stack videos with ffmpeg without padding
The hstack feature works great, but it pads the videos. That is, it puts black space between them. I use a command like this:
ffmpeg -i 1.mp4 -i 2.mp4  -filter_complex "hstack" out.mp4

How do I remove the black space separating the component videos?
Perhaps related, how do I control the size of the output video? If I could change the width of the output video, I imagine that would make the padding go away. But I couldn't find a way to combine the scale= parameter with hstack.

The stack filters don't insert any padding. Your videos probably have empty space in them. You'll need the crop filter. Show the full console output of your command.

Yes, you're right.  I missed that. Dumb of me. If you put your comment as an answer, I'll accept it. Thanks.

The stack filters don't insert any padding. Your videos probably have empty space in them. You'll need the crop filter to remove the dead space.
The stack filters require the video edge along the join axis to have the same dimensions i.e. height for hstack and width for vstack. So, don't crop those aspects.


text:
green screen to transparent with ffmpeg
ffmpeg does a very good job of getting rid of a green screen, with a command like this:
ffmpeg -f lavfi -i color=c=black:s=606x1080
       -i input.mp4
       -filter_complex
            "[1:v]chromakey=0x70de77:0.1:0.2[ckout];
            [0:v][ckout]overlay[out]"
       -map "[out]"  output.mp4

but it replaces the green screen with solid black, whereas I would like it replaced with a transparent background, alpha = 0.
I tried setting the color to #00000000 (8 zeroes indicating a zero alpha), but that still resulted in a black background.
Strangely, when I set the color to say red, it gives a red tint to many unfiltered areas.
So I would like a transparent background, but I'm also curious what the color option is doing.

Output by MP4 defaults to the H.264 codec for the video. H.264 does not support alpha.
You can output to .mov with a video codec -c:v of png or qtrle. There are others but they have restrictions on resolution and framerate.
You can't use the overlay filter as it doesn't output to a pixel format with alpha. So, just the chromakey filter, and no color source.

Thanks. So something like this? 'ffmpeg -f lavfi -i color=c=#00000000:s=606x1080 -i  input.mp4 -c: png  -filter_complex "[1:v]chromakey=0x70de77:0.1:0.2[out]" -map "[out]"  output.mov'

ffmpeg -i input.mp4 -vf "chromakey=0x70de77:0.1:0.2" -c copy -c:v png output.mov

That indeed works -thanks! But the .mov file is a huge! 2 min of video which is 58MB as mp4 turns into 15GB of mov. And then I need to display it on the web, and it seems only webm will handle alpha channel video in a browser. And that is multiples larger. (Can't give an exact figure because I haven't got it to complete yet!).

VP8 shouldn't be multiples larger. Somewhat, yes. PNG or QTRLE will be much larger; they are intra-frame lossless codecs. QTRLE employ very basic compression. PNG is better.

Tried various permutations. keep getting "Transparency encoding with auto_alt_ref does not work" and "maybe incorrect parameters such as bit_rate, rate, width or height". This was one thing I tried that gave those errors: 'ffmpeg -i input.mp4 -vf "chromakey=0x70de77:0.1:0.2" -c copy -c:v libvpx -b:v 1M output.webm'

Ah, I see from an answer you gave elsewhere that I need to add the '-auto-alt-ref 0'  option, then i get a nice small transparent video. thanks for all your help.

What's the final command?


text:
Is there a downside to increasing ISO and decreasing shutter speed
I'm rather new to filmography, and I just discovered that decreasing shutter speed can minimalist motion blur, which I want none of. I set my SS to 1/10000, but that obviously darkens everything. To compensate for that, I just increased the ISO until it looked normally lit again. It works, but something in the back of my mind tells me there has to be a downside to this.
My camera is a Sony A7S, but I don't think that really matters

Motion blur is good; folks who do CGI will sacrifice hours of render time in order to artificially add motion blur. Why you be hatin' on it?

@stib I do CGI, and part of that is motion tracking so I can add CGI elements to a real video. Motion blur makes it impossible to do motion tracking.

With an A7S, MkI or MkII; the camera is ridiculously incredible in terms of noise hint even at extreme ISOs; that's compared to just a few years ago when everyone was shooting on the 5D MkII.
My recommendation BECAUSE it's the A7s and because the visually acceptable level of noise to the viewer is really not noticed until you go into the extreme ISOs; would be to try to maintain a consistent ISO regardless of whether you are indoors or outdoors, or at least a fairly consistent range.
Shooting at 6400 ISO will have virtually no noise, and if you shoot all your material at a set ISO you will have a consistent grain/noise hint to all your footage. Just keep in mind you gain one stop of light each time you double your ISO.
Shutter speed can be adjusted, along with your aperture; to set exposure; along with ND Filters if you have them.
You should really shoot some tests at various shutter speeds to find the look you are happy with. The standard for film/video is a 180 degree shutter; which provides a slight amount of motion blur when shooting at 24-30fps (48-60 Shutter). When you have a higher shutter; your footage will be more "juddered", that is, each frame will have a higher sharpness value with each step up in shutter speed. This can sometimes be a little distracting.
A great example of this is the D-Day Invasion Scene from Saving Private Ryan; shot at high shutter speeds; there is virtually zero motion blur frame to frame; and it adds to the scene's frenetic; racing feel.

TL;DR: For most cameras, high ISO leads to a lot of graininess, but the A7S significantly less so than most others. However, try shooting test footage at different ISOs and see which ISO you like the most, or how far you can push the camera without the resulting image being too grainy for your liking.
Longer Answer: There is always a trade-off. With ISO, the higher you go, the more noise you get. On most digital video/movie cameras (think Red, Arri, Blackmagic, Aja, etc) a "high ISO," where you will get a lot of noise is pretty low, sometimes as low as ISO 6400.
This is not the case for the Sony A7S (camera model does matter!). Take a look at this PetaPixel article. It describes (and demonstrates with examples)  the incredible low light/high ISO performance of the A7S (no, that's not opinion - the example images demonstrate up to 3 stops better performance compared to other high end imaging systems).
You'll want to carefully review some test footage to see how grainy is acceptable for you, and find that ISO sweet spot, depending on the look you want to achieve.

As well as noise considerations you might also want to research what the sweet spot is for dynamic range. Some cameras get the best dynamic range at ISO800 (5DIIs from memory) others might be higher or lower.


text:
How do I find out about the shutter speed of frames in a video?
I shot a video at 24FPS, and I want to find out what the shutter speed of each frame was. Quicktime Player and VLC's Info panels don't give me this information.
Neither does exiftool. Here's exiftool's output:
ExifTool Version Number         : 10.36
File Name                       : 24 FPS at 480p.mov
Directory                       : /Users/kartick/Desktop/Google Drive/Photos/Comparisons/Night Video Comparison
File Size                       : 7.7 MB
File Modification Date/Time     : 2017:04:18 19:55:15+05:30
File Access Date/Time           : 2017:05:05 06:57:31+05:30
File Inode Change Date/Time     : 2017:04:24 11:25:17+05:30
File Permissions                : rwxr-xr-x
File Type                       : MOV
File Type Extension             : mov
MIME Type                       : video/quicktime
Major Brand                     : Apple QuickTime (.MOV/QT)
Minor Version                   : 0.0.0
Compatible Brands               : qt
Movie Data Size                 : 8037178
Movie Data Offset               : 36
Movie Header Version            : 0
Create Date                     : 2017:04:18 14:25:15
Modify Date                     : 2017:04:18 14:25:38
Time Scale                      : 600
Duration                        : 22.75 s
Preferred Rate                  : 1
Preferred Volume                : 100.00%
Preview Time                    : 0 s
Preview Duration                : 0 s
Poster Time                     : 0 s
Selection Time                  : 0 s
Selection Duration              : 0 s
Current Time                    : 0 s
Next Track ID                   : 3
Track Header Version            : 0
Track Create Date               : 2017:04:18 14:25:15
Track Modify Date               : 2017:04:18 14:25:38
Track ID                        : 1
Track Duration                  : 22.75 s
Track Layer                     : 0
Track Volume                    : 100.00%
Image Width                     : 640
Image Height                    : 480
Clean Aperture Dimensions       : 640x480
Production Aperture Dimensions  : 640x480
Encoded Pixels Dimensions       : 640x480
Graphics Mode                   : ditherCopy
Op Color                        : 32768 32768 32768
Compressor ID                   : avc1
Source Image Width              : 640
Source Image Height             : 480
X Resolution                    : 72
Y Resolution                    : 72
Compressor Name                 : H.264
Bit Depth                       : 24
Video Frame Rate                : 24.004
Matrix Structure                : 1 0 0 0 1 0 0 0 1
Media Header Version            : 0
Media Create Date               : 2017:04:18 14:25:15
Media Modify Date               : 2017:04:18 14:25:38
Media Time Scale                : 44100
Media Duration                  : 22.80 s
Media Language Code             : und
Balance                         : 0
Handler Class                   : Data Handler
Handler Vendor ID               : Apple
Handler Description             : Core Media Data Handler
Audio Format                    : mp4a
Audio Channels                  : 1
Audio Bits Per Sample           : 16
Audio Sample Rate               : 44100
Purchase File Format            : mp4a
Handler Type                    : Metadata Tags
Software                        : ProCamera 10.2
Make                            : Apple
Model                           : iPhone 7 Plus
Avg Bitrate                     : 2.83 Mbps
Image Size                      : 640x480
Megapixels                      : 0.307
Rotation                        : 0

I tried saving a frame to an image file in VLC, but it saved without metadata, so I couldn't figure the shutter speed out.
I know the shutter speed is usually 1/48s (half of 1/frame rate), but this video was shot at night, so I want to check if the camera app used a longer shutter speed.

Could be that the camera didn't record it to the metadata.

Hmm... I tried five different camera apps, and exiftool didn't mention shutter speed for any of them. So is there no way to find out?

If the data was recorded by the camera as EXIF MetaData, Adobe Bridge would reveal the camera settings under the Metadata Panel. You may have to customize within Bridge WHICH metadata you want to look at; because there are literally hundreds, thousands, of types of EXIF data; which could or could not have been embedded; AND at times; you will find what you need hidden in a strange EXIF container.
Simply put; if you don't see a shutter speed setting under MAIN, or CAMERA metadata; the brand camera/type, could have written it elsewhere; so show all; expand all, and scroll down to see if the data is possibly there; hidden in a collapsed field.
If you shot the video at 24fps; you are right in thinking that it likely was recorded at 1/48 / 180 shutter. However; I would think; just based off the engineering / camera / lens type which is built onto the iPhone 7; and how I would engineer the camera to work using, which it does by default-  auto-exposure; that it would rely on aperture priority for exposure; and would thus constantly adjust your shutter speed on the fly based on it's exposure method. So if you did a constant shot from a dark area to bright area; you'd literally see an on the fly adjustment from 1/48 all the way up to 1/4000 or higher. Then aperture might kick in, as the phone as no ND filters to fall back on.
I only add that because usually iPhone footage shot outdoors in bright sunlight looks like it was recorded at HIGH shutter (strobe effect) rather than iris down. The diameter on the lens of an iPhone 7 also would make me think they would use Aperture Priority (constant) as it's practically a pin-hole camera to begin with.
Cheers!

If you shot video with 24 fps, the time for 1 frame is 1/24 sec - this is your maximum shutter speed.
In reality it may be a little shorter - about 1/30 sec.
In cinema film projector every frame is projected twice to avoid perception of blinking - so 1/48 sec is not a shutter speed, but the maximum time for projecting a frame.
Smartphones' movie cameras adjust their shutter speed by light conditions without your consent and awareness. You may consider to use some software to control it, as Manual Camera from iTunes

I know it may be shorter, but I'm trying to find out what the actual value was. For still photos, I can examine the EXIF. What's the equivalent for video? Btw, we're not talking about cinema theatres here.

Which movie camera you used? Has it different recording speeds?

iPhone 7 Plus. Yes, it supports different shutter speeds.

Oh, so it is not a professional movie camera. It adjusts its shutter speed by light conditions without your consent and awareness. You may consider to use some software to control it, as Manual Camera from iTunes.

Again, the goal isn't to control it, but merely to understand what the value used by third-party apps was.

So you have no chance - video files have metadata (something as EXIF for static pictures) but they don't contain info about shutter speed. And as I mentioned, the shutter speed is in most cases variable, it constantly adjust to light conditions.


text:
Quality loss when exporting motion graphics videos in Premiere Pro
I am fairly new to Premiere Pro and I have been having an issue related to exporting my videos. All of the videos I am working on right now are motion graphics/animation videos. For these projects I create high quality images in Flash, export them as PNGs, and then use those images in Premiere Pro to create animations/motion graphics. The issue I'm having is that no matter what export settings I use, some of the images have obvious pixelation on them in the final result, and the colors seem to get slightly darker, even though they look perfect in the editor.
As an example, here is a side by side comparison on the image in the editor, versus a screenshot from the final exported video:

You will probably have to zoom in slightly to see the pixelation, but it's especially noticeable in thered are on the calendar image, on the orange circle attached to the email, and on the awning and sign over the shop entrance.
The pixelation issue seems to be most obvious with the red/orange/yellow colors, but I have also seen it with other high saturation colors and some dark blues.
Does anyone have any advice about why this might be happening and how I could fix it?
I've recently been reading about issues that can be caused by having "broadcast illegal colors". Could this be related?
I know that this issue could be occurring due to my export settings and sequence settings, but no matter what ones I use this still seems to occur. The primary export settings I've used are H.264 with Vimeo 1080p as the preset, since that is where I'm uploading, but I also tried a few others and didn't see any differences. For sequence settings I have also tried a few options including DNX 1080p, AVC-Intra 100 1080p, and Custom settings, but haven found any success.
I also read that I should try exporting with DNX HQ 1080p 29.97, but I don't know what to do with an MXF file, and some of the research Ive done shows Vimeo sometimes has trouble with them, so any advice there would also be appreciated.
Anyway, I think I've rambled enough for now. Any help you can provide would be greatly appreciated, and I'd be glad to answer any questions about the project settings.
Thanks!

There are 2 things causing this issue:

Chroma sub-sampling. This is explained pretty well in this answer.
Compression artifacts - For example, the mark above the "1"on the email notification is due to the way H.264 compresses data. This is known as "ringing" and is quite common with compression.

Some options for dealing with it include:

Avoid using saturated reds and blues especially in areas of high color contrast
Use a codec or codec settings that don't exhibit ringing (easier said than done when you're uploading to a video service that may recompress it)
Use settings to reduce how noticeable it is, such as turning on motion blur when exporting, so when things move, they exhibit softer edges

Unfortunately, the reality is that TV is terrible for pure motion graphics. The subsampling that occurs makes it impossible to have nice crisp lines in saturated colors. And unfortunately, most of the codecs that work on all platforms are made to deliver TV and movies to users.

Thank you for the detailed answer.
So I guess the easiest/most effective solution would be to use less saturated colors, or to decrease the contrast in the scenes overall?
Would you have any suggestions about codecs that may work?

Re codecs: it depends on what you're doing with the video. Part of the job of motion graphics is working within the limitations of the medium. Most delivery formats, aside from theatrical release are going to compress the video to a greater or lesser (usually greater) extent, and most–if not all–will be seen at 4:2:0. So you need to design things that aren't going to turn to custard when the chroma is subsampled.

Thank you very much, but I do have another question. What does the 4:2:0 you mention refer to? Do you have any resources you would recommend regarding the creation of motion graphics and/or understanding chroma subsampling better? This project is probably a bit too far along for me to make any major changes, and the issues are pretty minimal anyway, but I'd love to be more prepared for my next project like this.
Also, sorry for my ignorance, but normally I only design static images for the web and computers in general, so I'm not used to having these particular issues.

@DavidSilverman check out this article on Wikipedia about chroma subsampling. Basically, the codecs will downscale the red and blue channels, essentially making them 1/4 the resolution of the green channel during compression. On decompression they get upscaled, but end up looking more blurry because of it.


text:
Converting Container Problems
Why does it seem to be so difficult to simply change a video's container?
For example, when I download ".avi" & ".mkv" video's from the internet & want to watch them on my Apple devices (iPhone, iPad, Apple TV), I need them to be ".mp4" instead.
I don't want to spend the time to go through the whole "conversion/transcoding" process with apps like Handbrake when it seems you can simply change their containers out with apps like Mkv2Mp4 or the old Video Container Switcher apps in a fraction of the time.
Problem is, when I use those container changing utilities, various problems arise, like...

having mp4's with audio out of sync, or
having mp4's with no audio at all, or
having mp4's with very jittery video.

I love the speed of these container changing apps but why don't the video's play exactly the same since they're not actually converting the codecs & such?

First reason:
Videos / audios in AVI or MKV containers may be encoded by various codecs, and not all them are supported by MP4 containters.
Second reason:
Containers are more than simple boxes for videos, audios, subtitles, etc. with some not so important metadata as author or date/time. They have a lot of unevitable valuable information, e. g. the synchronization between audio and video is possible only due to it.
So there is not a reliable algorithm to convert any AVI -> MP4 or any MKV -> MP4 (and, generally speaking, from one type of container to a different one) without changing the streams (audios, videos, etc.) contained in them - the result may be similar to the one you described.

ah! thank you for that explanation. i got an app called "MediaInfo" (on Mac) & after looking at some video's, i see the differences in the MKV's that the MKV2MP4 app can simply change the container on vs the ones it cannot. and i haven't found any AVI's that have any innards that can be used in an MP4. so i guess i can't just have a global batch tool, i'm gonna have to look at each video & make a decision on which utility to use on it. that's a bummer for speed. i wish i could find a handy easy chart that shows which codecs & containers are compatible etc. anyways, thanks!

Faster than converting and possibly ending up with a file that has problems is to install another player like VLC or KMPlayer, etc.
https://itunes.apple.com/us/app/kmplayer/id835776444?mt=8
VLC is great on PC Desktop but on Android and iOS it's a bit buggy. There are a few 3rd Party Players for iOS that also claim to play everything.

i need mp4's to play on Apple TV & iOS. as far as i'm aware, there's no VLC type options for those. my post isn't about players but thanks for your time anyways.

It is worth mentioning that you don't always have to 'convert/transcode' the file (as you have mentioned), in order to change the wrapper. There is an operation called re-wrap, which re-packages the media from one wrapper to another. This isn't the same as the 'fast container switching' that you have described, as re-wrapping works reliably and is often used in broadcast workflows.
For example, XSquare/XTAccess software allows you to re-wrap media without a licence. If you refer to the list of supported codecs, you will see what re-wraps are possible.

This isn't the same as the 'fast container switching' - what's the difference?

@Mulvya - it isn't the same because you don't get the negative side effects mentioned by the author of the question (no audio out of sync, missing audio or glitchy video). Why exactly is a good question - XTAccess is not GPL, unlike the other piece of software so my statement is based on empirical evidence, not theoretical.

Ok, so XTAccess, as per you, does better remuxing. But they refer to the same process.


text:
Different FPS on different clips (premiere pro)
so I'm editing a video for YouTube and I'm having some trouble.
I want some clips in the video to play at low FPS (8fps or so), they are recorded at 8fps but, I'm speeding them up (I, however, still want them to play at 8fps)
I did it by setting the project fps to 8fps. The actual problem is, other clips, I want them to play at 30 fps but as the project fps are 8, they cannot. If I set project fps to 30, then the videos recorded at 8fps that I have speed up will play at 15fps, 20fps, depending on how much I speed them up, but I want those to play at 8fps always.
Any help?

What you want to use to have a clip play back at a lower frame rate is the Posterize Time effect. It's pretty straightforward and self-explanatory. Just find the effect in the Effects panel under Video Effects → Time → Posterize Time and apply it to your clip. Then select the clip, open the Effect Controls panel and set the Frame Rate parameter of the effect to 8 (in your case). Then you're pretty much done.
To apply that effect to multiple clips at once, you can use an adjustment layer. Create a new adjustment layer (File → New → Adjustment Layer) and put it above your clips in the time line. Then apply the Posterize Time effect to the adjustment layer. It will affect all clips in all video layers below the adjustment layer.

Alright, now I have another problem, my project fps are set to 8fps and I don't know how to change that to 30 again.

@OscarArranz There's no fps setting on project basis in Premiere Pro, the framerate is part of your Sequence Settings. You can change them in the menu under Sequence → Sequence Settings (while your sequence is active). If the Timebase option is greyed out (some of the settings get locked once you have some clips in your sequence, it also depends on your version of Premiere Pro), simply create a new sequence with the correct settings, select everything in your old sequence (CTRL + A), copy it (CTRL + C) and paste it into the new one (CTRL + V).


text:
How to convert a 3D movie to 2D using ffmpeg
I am looking for a way to convert a 3d movie to a 2d movie.
I found a reference on this forum.
http://www.ffmpeg-archive.org/How-to-re-encode-3d-video-to-2d-video-td4676271.html

While you might be able to achieve this by manually using ffmpeg's crop filter, the stereo3d filter is designed specifically for this purpose. You didn't specify the exact 3d format you have. There are several possibilities as documented at the the stereo3d link above. Assuming that input.mkv is the relatively common sbsl (side-by-side left eye on left),
ffmpeg -i input.mkv -vf stereo3d=sbsl:ml -metadata:s:v:0 stereo_mode="mono" output.mkv

will result in a 2d (left eye only) output.mkv. I believe the reason -metadata:s:v:0 stereo_mode="mono" is required to remove the stereo tag is because the metadata isn't piped through the filter system, and ffmpeg otherwise tries to duplicate the metadata of the original. If you don't do this, some players may think your 2d result is still 3d and do weird things.
If you find that the result has the wrong aspect ratio, you can experiment with using stereo3d=sbsl2:ml instead which treats the input as half width side-by-side. If all else fails, you can set the correct aspect with -aspect 16:9 (or whatever you know the correct aspect ratio to be).

Could you explain the stereo3d filter option you are using here? I understand from the ffmpeg documentation that sbsl means side by side parallel (left eye left, right eye right) but what does the :ml signify? I can't seem to locate that information.

The syntax is stereo3d=<input-format>:<output-format>. As per the linked documentation, ml means to output "mono output (left eye only)".

I got errors attempting to use -metadata:s:v:0 stereo_mode="mono" with ffmpeg 2.8.14. It appears that the documentation may have changed since you wrote this answer. Simply removing the aforementioned switches allowed ffmpeg to continue without error. Note that you can avoid re-encoding the audio stream by utilizing the -c:a copy switch.

I found a reference on this forum.
http://www.ffmpeg-archive.org/How-to-re-encode-3d-video-to-2d-video-td4676271.html
ffmpeg -i './a3dmovie.mp4'  -vf "crop=w=iw/2:h=ih:x=0:y=0,scale=w=2*iw:h=ih,setdar=2" -y ./a2dmovie.mp4

The important part is the -vf "crop=w=iw/2:h=ih:x=0:y=0,scale=w=2*iw:h=ih,setdar=2"
It essentially halves the output and rescales as appropriate for the 3d video.
I found this is also useful to test and check the output
ffplay -i ./some3dmovie.mp4  -vf "crop=w=iw/2:h=ih:x=0:y=0,scale=w=2*iw:h=ih,setdar=2"

You can move the index to the front of the file as follows
-movflags faststart

As an adaption of kevmitch's answer, I went with
ffmpeg  -i "foo.mkv" -vf stereo3d=sbs2l:ml -c:a copy "bar.mp4"

Notable difference: It's using sbs2l (instead of sbsl2) and just copies audio streams (works for me). Further reading to stereo3d
Edit: To whom it may concern, in another case I experienced problems with the aspect ratio with the command above. This can be fixed by using something like this command (adapt resolution, setdar and aspect ratio)
ffmpeg  -i "foo.mkv" -vf stereo3d=sbs2l:ml,scale=1920x816,setdar=21:9 -aspect 21:9 -c:a copy "bar.mp4"


text:
Calculate coaxial cable type/grade to transfer digital video signals to a known distance/length
To transfer digital video signals to a known distance/length, like "L", I need to calculate which type/grade of coaxial cable I need to implement.
I was wondering what is the industry/best practice for doing such calculations. Thanks.

Major cable suppliers such as Belden and GEPCO publish guides that correlate at least two factors:

Signal bandwidth or SMPTE standard (standard def, HD, 3G, etc)
Cable length

There are three other factors that make a difference: the quality of the connectors, the quality of the physical installation of the connectors on the cables, and the quality of the signal drivers (distribution amplifiers).
One industry best practice is to use the conservative numbers published in the guide,  using only the best-quality connectors matched with the cable type in question.  The cheapest and/or lightest and/or smallest diameter cable is then selected from the available options.
Another best practice is to use the "up to" numbers published in the guide and then measure whether or not the level of signal loss is acceptable for the given connectors, drivers, and receivers of your actual devices, using the cheapest, lightest, and/or smallest diameter cable that appears feasible.  This can be done before actual installation of the cable, but not before acquiring all the relevant video sources and sinks, and not before actually cutting a maximal length of cable(s) to test it.
Cable manufacturers publish their specifications. Steve Lampen explains about Belden does their calculations and what happens as you approach the high end of the cables maximum length. Best to use those specs for your calculations, not some random number that you find on wikipedia for a "generic" cable.

Pick two, maybe three, different cable "families" to use. Many US projects use Belden 1694A for anything between racks and 1855A within a rack. If you need a plenum cable, use 1695A, not one of the other plenum rated cables. This will keep your connector stock and tooling to a manageable size. Don't try to pick the "best" cable from all of the Belden cables on a cable by cable basis. Definitely don't use the Belden or Gepco lengths for a generic cable. If you are building a permanent facility, it is well worth it to spend the money on high quality cable and connectors.


text:
A Sony Pro camera's spec shows it shots in 29.97fps, does it really mean it?
According to this ffmpeg documentation, it seems one of the 'native' frame rate for ffmpeg is

'ntsc':   30000/1001

while 30000/1001=29.9700... does not equal to 29.97, I wonder if a Sony Pro camera really means it shots in 29.97, not 30000/1001?
If that Sony camera does shot in exact 29.97fps, I suppose we should keep the 29.97fps, should not change the fps of the video file to 30000/1001?

29.97 is shorthand for 30000/1001. There is no 29.970000... frame rate standard. FFmpeg will keep the native framerate (usually), so no need to specify an output -r value.

Thanks! So I can understand that the Sony Pro camera, in fact, shot at 30000/1001 fps.


text:
Which tool is capable to create avi with multiple audio tracks?
What tool may be used for creation of videos (e.g. AVI containers) with multiple audio tracks?
I mean the tracks which may be switched independently, like different languages on a DVD.

FFmpeg, a free command line tool, can do it.
A syntax example can be provided if you describe your workflow.

anything with a GUI maybe?

Any GUI that can do this will just be running ffmpeg under the hood. I don't use one, but I believe WinFF or myffmpeg should work.


text:
Voice over translation with interjections
In a voice over translation (which doesn't need to be lip-synced), like the ones in the news when they interview someone that doesn't speak English, is it ok to keep some interjections if they conveys meaning to the whole sentence?
For instance the following sentence:

I don't know what it has to do with me or anything ha ha ha

The laughs are saying that on the contrary, the person saying those words does know that it has to do something with her.
Is it ok to add those laughs in the voice over, or should I rewrite the sentence to convey the same meaning without using interjections?
It would help if you add a video with a voice over that uses interjections, so I can hear how the speaker handles those.

The difference between a Dub and a Voice-over is that a Dub attempts to match a foreign language with lip movement and fully replace the audio using new words that don't change the meaning (much) whereas a Voice-over attempts to keep the original audio at a low level to preserve the feeling of the original and can be a bit freer with the translation.
Even though a Voice-over keeps the background audio any music may be replaced with something better accepted (as that type of song) by the audience.
Similarly a Dub while attempting to fully replace the audio may include some original audio.
In the specific case of your question and example: >"I don't know what it has to do with me or anything ha ha ha".
"The laughs are saying that on the contrary, the person saying those words does know that it has to do something with her."
In the case of "News" (for English speakers) you would want to translate accurately and add additional words that it is the Reporter's opinion that the interviewee said the comment in a sarcastic manner or to clearly overdo the sarcasm to avoid a misleading translation. Culture plays a complex role in the result.
A Dub would have the Translator do the laugh and a Voice-over would likely have the original laugh but could have the Translator do the laugh with the additional original laugh synced.
There's a knack to it and getting the right feel for both languages and cultures is difficult.
In 'English speaking culture' a bad dub or voiceover can be part of the feeling/amusement of the work in those that know nothing of the other culture/language; that IS appreciated by the listener but may well be seen as butchering the work of Art from the opposite point of view.
Examples from "The Matrix", in Russian:

These seem to work OK but the background could be a bit louder and the Voice-over a bit less dominating. It's more or a mixing issue (or an ardent desire to make the audio more clearly distinguished) and is slightly overdone.
It's a fine Art, to change and not ruin someone else's work. As difficult to explain in general terms as it is to do and undoubtedly done differently in different parts of the world.
One example is untranslated East Indian movie clips and trailers often trend on YouTube in mostly English speaking countries together with many English comments in the Comment Section - no reason to think enough people understand it in North America for it to trend, more of a curiously I would imagine. I only watch sometimes to see why it Trends so well. Others seem to find a lot of humor, even in serious movies.

In this video in particular with English subtitles activated there are a couple of interjections at 0:13 and 0:25. It's clear by the body language that she is trying to be funny making the point across that the book she wrote is autobiographical.

Would it be better to have the voice-over to do the interjections in order to keep the lighthearted feeling in the interview? The problem is that I can't find any examples from where to draw upon, and unfortunately the videos you posted don't have any interjections so I can get a feeling on how those are done.

I accepted this answer although it's worth noticing that the videos don't have any interjections.

@rraallvv - Thanks. I'll remember this question and improve the answer when I spot another example.

@rraallvv - The first (undeniable) Interjection occurs in the first Video at time 0:34. I say "undeniable" because there's an Asian Voiceover (a "hi-yeah") that is used to denote 'Kung-Fu occurring'). Prior to that there is a slapping sound to denote hitting (even when no striking is occurring), all while a Russian themed song plays (to make it more attractive to the listening audience). I believe it's a "fair example", just that it is not well done. That's standard practice as Voiceovers are usually done in Russia and Poland because they (continued next comment) ...

want to save costs. Perfect Dubbing is much more expensive and involves editing and even altering the Frame Rate to match lip movement with the words spoken in the new language. The replacement audio in both those videos is a bit louder than it ought to be (as I noted in my answer, a 'mixing issue' and a desire for clarity) and smears out the constant Interjections. Also see: https://en.wikipedia.org/wiki/Interjection#Interjections_across_languages - I will continue to improve this answer. Has this reply been helpful?

I see... there are indeed some interjections in the voice-over, what I meant was that it appeared to me that there were none in the original (at least noticeable or obvious interjections). However your answer and comments were useful to help me get a better understanding of such matters.


text:
I scaled down a video, but the bit rate does not change
I have a 3000 by 3000 VR video encoded in H264. I scaled down the video by
ffmpeg -i input.mp4 -vf scale=2160:2160 output.mp4

To my surprise, the bit rate of output.mp4 did not decrease (in fact, it increased a little bit).
Is not a scaled down video supposed to have lower bit rate than the original video? What is the mechanism of -vf scale=***?

The scale filter has no effect on the encoder's bitrate control.
Yes, a scaled down video should have a lower bitrate if it is encoded with the same encoder settings as the source. In your command, since no encoder parameters are explicitly set, ffmpeg defaults to encoder x264 with rate-control mode CRF with value 23. Apparently, this results in the same bitrate as the full-sized source. Set a higher value to reduce size.
ffmpeg -i input.mp4 -vf scale=2160:2160 -crf 26 output.mp4

This makes no sense. Why would you have to change crf? That's "constant quality", right? This means that we should expect a lower bitrate on a down scale.

@DigiVisionMedia crf is "constant ratefactor". also, this all is searchable in the web, don't be lazy please.

Wouldn't this make a lesser quality encode?

hmm, need 50 rep to comment... so posting instead. increase crf to reduce bit rate, also reduces quality
decrease crf to increase bit rate, improves quality
+/- 6 crf is about half / double the bitrate (at least for x265). good intro:
http://slhck.info/video/2017/02/24/crf-guide.html


text:
Is it meaningful to raise frame rate, if so what is the best option?
I have a 3000 by 3000 VR video encoded in H264, the frame rate is 30fps. Now I want to raise the frame rate to 60fps, I am using this command
ffmpeg -i input.mp4 -r 60 output.mp4

My questions are:

Is it meaningful to raise the frame rate?
What is the mechanism of -r 60 in the above command? Since there are only 30 frames per second in the original video, where do those additional 30 frames come from?
Is there any better option other than the above command to 'smoothly' raise the fps?

Is it meaningful to raise the frame rate?
Usually, no. Exceptions are if you need to artificially generate slow motion using a robust tool like Twixtor.
What is the mechanism of -r 60 in the above command? Since there are only 30 frames per second in the original video, where do those additional 30 frames come from?
They are simply duplicates of existing frames. Without the use of specific filters, ffmpeg can only duplicate or drop frames when the framerate is changed.
Is there any better option other than the above command to 'smoothly' raise the fps?
ffmpeg now has a motion interpolation filter, which will generate new frames. It can also just do a regular blend if that mode is chosen.
ffmpeg -i in.mp4 -vf minterpolate=fps=60 out.mp4

No, all it will do is waste space and lower the quality of your video.  In theory, it shouldn't take too much additional space as the frames will be 100% copies of the previous frame, but it still will have to re-encode and that re-encode will be another generation of quality loss, which could be significant depending on how compressed your video is already.
Using a higher frame rate only really makes sense if you want to either speed up footage or can actually capture at a higher frame rate.  Increasing the frame rate will either cause the video to take half as long or will invent new frames to fill in between frames.  Exact methods for doing this vary, but frame blending or pull downs where certain frames are duplicated and others not are typical when it isn't an even multiple.
There isn't a better option for increasing it than an even multiple increase, but unless you have some specific reason to need to increase it, it gives you no value as the same thing can be done at run time when playing the video back.

It is difficult to decide which answer is better. Thanks for your information!

It can be useful to raise the Frame Rate if you use expensive Software and get excellent results, then you can replay the double-rate video at half speed to get slow-motion or play it at full speed to get smoother motion - simply copying each Frame serves little or no purpose and blurring two Frames to create the intermediate Frame is not a somewhat identical result but a different (possibly desirable) result.
Short of paying a lot of money and making a large effort there are numerous Solutions which rely on AviSynth (you can use Search Tools to find lots of Info).
A couple of the 'best' (cheap/easy/great) methods are to use MSU's Tools: http://www.compression.ru/video/frame_rate_conversion/index_en_msu.html or MVTools http://avisynth.org.ru/mvtools/mvtools.html .
While you won't get pixel peeking perfect results you should expect 'great' results with little effort and no cost.
There are examples on those Webpages and Search Engines will provide more than we could reasonably teach you here. If you have a specific question once you've setup give us a shout.


text:
Does transcoding always mean quality loss?
Can I transcode video from h.265 to h.264 without loosing quality?
My instinct is that it should be fine, that with approximate quality settings the new files will be the same quality but larger file size.  Or am I wrong, does transcoding from one codec to another follow the principle of "copy of a copy always means lower quality"?

Generally, H.264 and H.265 (as well as others like VP9) are lossy codecs, at least in their default settings with most encoders. This means that whenever you re-encode from one to another (or even in the same codec), you throw away information.
Whether this information loss is visible or not depends on your source material and the chosen settings, of course.
To combat the loss of information, you often need to choose a higher bitrate than what your input is, or a higher constant-quality setting than the default of the respective encoders. There is no "general principle" here – it really depends on what the default bitrates or quality targets are for the encoders you're using.

Can I transcode video from h.265 to h.264 without losing quality?

Yes, you can. There are two ways to do that, depending on how you define "losing quality":

You can enable a lossless mode for these codecs, at least with the x264, x265 or libvpx encoders. This will perform lossless transforms without quantization and disable color subsampling (i.e., 4:4:4 output). The output is mathematically lossless. If you do not have to use H.264 or H.265 specifically, other lossless codecs such as HuffYUV or FFV1 exist.
You can try to find the threshold where any (mathematical) quality loss is not visible anymore to human subjects, that is, within the range of a Just Noticeable Difference. This requires a bit of testing with different settings and repeated viewings. Some codecs are better at this, in terms of their default settings, like ProRes, DNxHD, etc.

For more info, read this: ffmpeg settings for converting still images to video for archival

You mean "H.264 and H.265" in the first sentence, right?

Very informative.  I'm curious to see what the file size difference will be if I convert from lossy to lossless.  I suspect I'll be visually looking for that threshold you mention.

that ffmpeg settings link has really good info, thx vm!

Both h.265 and h.264 are compressed codecs so there will loss; due to compression; whether it's visible to the naked eye or not.
The only way to not lose quality is to output to a lossless codec at 4:4:4.
This results in large files. A common codec for this is Quicktime Animation Codec at 100 Quality. 100% Lossless.

H.264 and H.265 both have lossless modes (@4:2:0/2, not just 4:4:4)

I stand corrected then... I have never tried, is this possible from within the adobe platform or is ffmpeg required?

ffmpeg and x264/x265 standalone- yes; Adobe - don't know but doubt it.


text:
Is there any command show file extensions supported by ffmpeg?
I have a MPEG-TS file input.mpg (I know, the file name does not look like a MPEG-TS file, but that is the file I received and by ffprobe I know it is a MPEG-TS file).
When I transcode the file by
ffmpeg -i input.mpg output.ps

ffmpeg says it is unable to find a suitable output format. But according to Wikipedia, .ps is a valid file extension for MPEG-PS.
How can I know which extension will be recognized by ffmpeg?

There's no single list which has all the extensions supported by muxers in ffmpeg. FFmpeg is modular so each muxer registers the extensions it supports. A utility function then traverses through all registered muxers and tries to match their extensions with that of the output filename specified.
At the command line, you can check the extensions registered to a particular muxer:
ffmpeg -h muxer=mpeg

whose output will have a line like the 2nd line here
Muxer mpeg [MPEG-1 Systems / MPEG program stream]:
    Common extensions: mpg,mpeg.
....

Note that extensions by themselves don't signify anything other than provide a basis to select a muxer. If you want a MPEG Program Stream to have the extension ps, then use
ffmpeg -i input.mpg -f mpeg output.ps

This -f option forces the output format.


text:
encoding with ffmpeg libx265 -pix_fmt gray gives unplayable vid
What am I missing?
I encode an old black and white film clip with ffmpeg libx265 passing -pix_fmt gray. The output is unplayable in both vlc and mplayer (linux), so I assume I'm missing something...
encoding:
ffmpeg -i clip.mkv \
    -c:v libx265 -preset slow -x265-params "crf=24" -pix_fmt gray \
    -c:a libopus -b:a 64k \
    -c:s copy \
    out.mkv

vlc errors:
[00007f8a3ddfe328] blend blend error: no matching alpha blending routine (chroma: RGBA -> GREY)
[00007f8a3ddfe328] core blend error: blending RGBA to GREY failed
... repeated ...

mplayer errors:
Unexpected decoder output format Planar Y800
... repeated ...

ffmpeg encoding output:
ffmpeg version 3.2.4 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 4.9.4 (Gentoo 4.9.4 p1.0, pie-0.6.4)
  configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --docdir=/usr/share/doc/ffmpeg-3.2.4/html --mandir=/usr/share/man --enable-shared --cc=x86_64-pc-linux-gnu-gcc --cxx=x86_64-pc-linux-gnu-g++ --ar=x86_64-pc-linux-gnu-ar --optflags='-march=native -O2 -pipe' --disable-static --enable-avfilter --enable-avresample --disable-stripping --enable-nonfree --enable-version3 --disable-indev=oss --disable-indev=jack --disable-outdev=oss --enable-version3 --enable-bzlib --disable-runtime-cpudetect --disable-debug --disable-gcrypt --disable-gnutls --disable-gmp --enable-gpl --enable-hardcoded-tables --enable-iconv --enable-lzma --enable-network --enable-openssl --enable-postproc --disable-libsmbclient --enable-ffplay --enable-sdl2 --enable-vaapi --enable-vdpau --enable-xlib --enable-libxcb --enable-libxcb-shm --enable-libxcb-xfixes --enable-zlib --enable-libcdio --disable-libiec61883 --disable-libdc1394 --disable-libcaca --enable-openal --enable-opengl --enable-libv4l2 --disable-libpulse --enable-libopencore-amrwb --enable-libopencore-amrnb --disable-libfdk-aac --enable-libopenjpeg --enable-libbluray --enable-libcelt --disable-libgme --disable-libgsm --disable-mmal --enable-libmodplug --enable-libopus --disable-libilbc --disable-librtmp --enable-libssh --enable-libschroedinger --enable-libspeex --enable-libvorbis --enable-libvpx --disable-libzvbi --disable-libbs2b --disable-chromaprint --disable-libebur128 --disable-libflite --disable-frei0r --disable-libfribidi --enable-fontconfig --disable-ladspa --disable-libass --enable-libfreetype --disable-librubberband --disable-libzimg --enable-libsoxr --enable-pthreads --enable-libvo-amrwbenc --enable-libmp3lame --disable-libkvazaar --disable-nvenc --disable-libopenh264 --enable-libsnappy --enable-libtheora --enable-libtwolame --enable-libwavpack --disable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --disable-amd3dnow --disable-amd3dnowext --disable-fma4 --disable-xop --cpu=host --disable-doc --disable-htmlpages --enable-manpages
  libavutil      55. 34.101 / 55. 34.101
  libavcodec     57. 64.101 / 57. 64.101
  libavformat    57. 56.101 / 57. 56.101
  libavdevice    57.  1.100 / 57.  1.100
  libavfilter     6. 65.100 /  6. 65.100
  libavresample   3.  1.  0 /  3.  1.  0
  libswscale      4.  2.100 /  4.  2.100
  libswresample   2.  3.100 /  2.  3.100
  libpostproc    54.  1.100 / 54.  1.100
x265 [info]: HEVC encoder version 2.2
x265 [info]: build info [Linux][GCC 4.9.4][64 bit] 8bit+10bit+12bit
x265 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX AVX2 FMA3 LZCNT BMI2
x265 [info]: Unknown profile, Level-3.1 (Main tier)
x265 [warning]: No thread pool allocated, --wpp disabled
x265 [warning]: No thread pool allocated, --lookahead-slices disabled
x265 [info]: Slices                              : 1
x265 [info]: frame threads / pool features       : 3 / none
x265 [info]: Coding QT: max CU size, min CU size : 64 / 8
x265 [info]: Residual QT: max TU size, max depth : 32 / 1 inter / 1 intra
x265 [info]: ME / range / subpel / merge         : star / 57 / 3 / 3
x265 [info]: Keyframe min / max / scenecut / bias: 23 / 250 / 40 / 5.00
x265 [info]: Lookahead / bframes / badapt        : 25 / 4 / 2
x265 [info]: b-pyramid / weightp / weightb       : 1 / 1 / 0
x265 [info]: References / ref-limit  cu / depth  : 4 / on / on
x265 [info]: AQ: mode / str / qg-size / cu-tree  : 1 / 1.0 / 32 / 1
x265 [info]: Rate Control / qCompress            : CRF-24.0 / 0.60
x265 [info]: tools: rect limit-modes rd=4 psy-rd=2.00 rdoq=2 psy-rdoq=1.00
x265 [info]: tools: rskip signhide tmvp strong-intra-smoothing deblock sao
Output #0, matroska, to 'out.mkv':
  Metadata:
    encoder         : Lavf57.56.101
    Metadata:
    Stream #0:0(eng): Video: hevc (libx265), gray, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 23.98 fps, 1k tbn, 23.98 tbc (default)
    Metadata:
      encoder         : Lavc57.64.101 libx265
    Stream #0:1(eng): Audio: opus (libopus) ([255][255][255][255] / 0xFFFFFFFF), 48000 Hz, stereo, flt, 64 kb/s (default)
    Metadata:
      encoder         : Lavc57.64.101 libopus
    Stream #0:2(eng): Subtitle: subrip (default)
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> hevc (libx265))
  Stream #0:1 -> #0:1 (eac3 (native) -> opus (libopus))
  Stream #0:3 -> #0:2 (copy)
Press [q] to stop, [?] for help
frame= 1439 fps=7.0 q=-0.0 Lsize=    5356kB time=00:01:00.01 bitrate= 731.1kbits/s speed=0.294x
video:4940kB audio:382kB subtitle:1kB other streams:0kB global headers:2kB muxing overhead: 0.629434%
x265 [info]: frame I:      9, Avg QP:22.27  kb/s: 6064.82
x265 [info]: frame P:    340, Avg QP:23.62  kb/s: 1950.21
x265 [info]: frame B:   1090, Avg QP:29.65  kb/s: 230.75
x265 [info]: Weighted P-Frames: Y:0.9% UV:0.0%
x265 [info]: consecutive B-frames: 2.9% 0.3% 1.4% 72.5% 22.9%

Plays fine here in VLC, ffplay and Potplayer. Doesn't play with mplayer. Its H265 decoder probably doesn't support gray.
Workaround is to store it as YUV420P after discarding the chroma.
ffmpeg -i clip.mkv \
    -vf format=gray,format=yuv420p \
    -c:v libx265 -preset slow -x265-params "crf=24" \
    -c:a libopus -b:a 64k \
    -c:s copy \
    out.mkv

The file size when using -pix_fmt gray is actually a few percent larger than using the workaround by Mulvya. That was unexpected.


text:
Apply custom lut via ffmpeg?
I'd like to batch convert some log footage as well as transform each clip into rec709 colorspace. Is there any way to apply a custom lut to the footage? If so, what's the correct way to do that?

See the lut3d filter. You can apply colorspace filter afterwards for 709 conversion.

You should make that an answer.

You may want to use FFMPEG's lut3d filter. It requires you to provide a look-up table (a *.cube file). For example, if you have an ARRI camera you can generate these files using ARRI Color Tool or simply download a package with them from the linked page.
Once you have the files, use FFMPEG like this:

ffmpeg -i "Input.mov" -vf lut3d="ARRIP3D65PQ108-33.cube" -s 1920x1080
  -c:v dnxhd -pix_fmt yuv422p -b:v 120M DNxHD_for_Editing.mxf

The important part here is the use of lut3d filter:

-vf lut3d="ARRIP3D65PQ108-33.cube"

where ARRIP3D65PQ108-33.cube is the LUT file to use with the filter.


text:
I have a mpg file, but what is it?
I have an input.mpg file which is encoded in H264. I am told that it is MPEG-TS and used for broadcasting. But according to Wikipedia, a MPEG-TS file ends in .ts, .tsv or .tsv.
What is .mpg?

MPEG-PS where PS = Program Stream. TS = Transport Stream.

@Mulvya Alright, now I know there is something called MPEG program stream. Thanks for your info! MPEG-PS is just the keyword I needed! I can learn by myself now

Files stored in the MPG format are video files embedded with MPEG
  video data compression specifications and data encoding algorithms,
  and these MPG video files are appended with the .mpg extension.
  Specifically, MPEG-1 and MPEG-2 formatting standards are usually
  incorporated into MPG files, which are digital video data compression
  specifications and algorithms developed by the Moving Picture Experts
  Group. These MPG files are normally distributed on the Internet as
  video downloads, streamed videos and digital video content materials
  that are embedded unto Web pages. Windows Media Player is integrated
  with compatibility support and playback functionality for these MPG
  files, which means this media player can be used to open and view the
  video content of files stored in the .mpg format. Apple QuickTime
  Player is a cross platform digital multimedia player that is also
  embedded with compatibility support and playback functionality for
  these MPG files, which means Windows and Mac users can deploy this
  software to open and view the video content stored in files appended
  with the .mpg extension.

you should read this, it might help.
https://www.reviversoft.com/file-extensions/mpg


text:
Simple: Can HTML5 Play a .mpd Manifest File Through Its Video Tag?
I have a Movie_Manifest.mpd file that is made up of 5 .webm video streams (consisting of different sizes and bps) and 1 audio file. The question I'm asking is: can it be played through a "simple" HTML5 video tag?
I've tried this and it doesn't work:
<video controls>
  <source src = "Movie_Manifest.mpd"/>
</video>

Well it works, but it chooses the lowest quality video stream and the output is laggy. I would like it to have adaptive bit streaming. You might think, "Do you think your bandwidth is just that slow?" Yeah, my bandwidth is slow, but not that slow. And besides, when I run that low quality webm file on its own, it runs smooth.
So to reiterate:
1) Can I use a "simple" HTML5 video tag for adaptive bit streaming?
Or
2) Do I have to use an open source media player (that the video tag would be accessing through a javascript)?
Thanks and happy streaming

Not all browsers and mobile devices natively support MPEG-DASH ( .mpd), DASH is natively supported in Chrome (including Android 4.0+), Internet Explorer 11 on Windows 8.1, and many SmartTVs.
To answer your questions:
1) To ensure that your encoded video can stream in all environments, make sure to embed relevant client players in your application, you can find more information about Adaptive bitrate streaming here - http://cloudinary.com/documentation/video_manipulation_and_delivery#adaptive_bitrate_streaming_hls_and_mpeg_dash
2) Here is a list of open source HTML5 video players.

no. video tag can not play mpd, and will not do adaptative bitrate. You must write that yourself, or use a free, or commercial implementation


text:
Is there any ffmpeg command for knowing max bit rate of a video?
I have an MP4 file input.mp4 which is encoded in libx264. By ffprobe command:
ffprobe -v error -show_streams input.mp4

I can know the bit rate of input.mp4, but it does not give the information of max bit rate (max_bit_rate=N/A ).
Is there any ffmpeg (ffprobe) command for getting max bit rate of a video?

That max_bit_rate is a a tag written by some encoders, when set by the user in the export dialog box. It is not an indication of the maximum bitrate found if you were to survey the encoded bitstream.

It's possible to get a good idea of the maximum bitrate of a stream this way:
ffmpeg -i in.mp4 -map 0:v -c copy
       -f segment -segment_time 1 -break_non_keyframes 1 folder\seg%d.264

This will break up the video stream into 1 second segments. Sort the directory listing by size to find out the largest file. That's your maximum bitrate. Not totally accurate as it's not a rolling survey but should be close enough.

I see, so is there any way to know the 'real' max_bit_rate? I need to know the value so that I can choose a suitable parameter for libx264

Possible, but it requires some work.

Great, thanks! Now I learned another ffmpeg trick!

I wrote a simple tool to do this, called ffmpeg-bitrate-stats. It requires Python and ffmpeg installed. Install it via pip:
pip3 install --user ffmpeg-bitrate-stats

Then run it on a file:
ffmpeg_bitrate_stats /path/to/file.mp4

It will output a valid JSON object containing summary statistics like the maximum bitrate:
{
    "input_file": "file.mp4",
    "stream_type": "video",
    "avg_fps": 23.976,
    "num_frames": 150802,
    "avg_bitrate": 2249.534,
    "avg_bitrate_over_chunks": 2244.912,
    "max_bitrate": 2993.706,
    "min_bitrate": 1865.406,
    "max_bitrate_factor": 1.331,
    "bitrate_per_chunk": [
        2433.07,
        2329.958,
        2171.362,
        2227.863,
        2470.798,
        1978.106,
        2089.184,
        2993.706,
        1988.095,
        1865.406,
        2146.482
    ],
    "aggregation": "time",
    "chunk_size": 600.0,
    "duration": 6289.65
}

The maximum bitrate in the above file would be roughly 3000 kBit/s (max_bitrate). It is 1.3⨉ as much as the average bitrate (max_bitrate_factor).
Note that the meaning of maximum bitrate depends on the time frame over which it is calculated. You can calculate the bitrate every second (the default in my tool), or choose a different chunk size with the -c parameter. This means you'll get "smoothed" estimates, for instance when you set -c 10, it only looks at 10 second chunks of video, and picks the maximum based on that.
To just obtain that value, you can use jq:
ffmpeg_bitrate_stats /path/to/file.mp4 -c 600 | jq -r '.max_bitrate'

this is awesome! Yes it's using a separate tool, but it's very quick and should be the accepted answer!

See https://github.com/zeroepoch/plotbitrate
It uses ffprobe under the hood and can output an xml file. Here's an example output.svg:

(Although it is slow - almost as slow as transcoding, because it scans the whole video.)


text:
Is coaxial cable an option for distances of around 150 m to transfer SDI digital signals
Is coaxial cable an option for distances of around 150 m to transfer SDI digital signals?
If coaxial cable can be considered an option for a distance of 150 m, is the cost of deploying coaxial cable, including any special connectors and amplifiers, larger than the cost of deploying fiber optic cables for the same distance of 150 m?
I know, this might be a very broad/generic question, but we are in the process of decision-making about our tech stack.

300 Feet is about as far as you can take SDI or HD-SDI; before it needs to be reclocked. So no, 150 M is too far. Also the quality of cable; and if it's being run in parallel with other cables that cause interference can affect how long you can go.
You can reclock at the half way point using a distribution amplifier, and you'll lose 1 frame of sync for each time you reclock.
Your next best option is to run Fiber Optic; which you can run for 25 miles without having to deal with any signal loss issues.

Importantly to the cost question, you need to have power at the point where you reclock. The cost of installing a circuit in a typical major US city commercial building will be more than the cost of the equipment to run fiber for a small number of video signals. See this answer for links on maximum cable lengths.