As of December 2018, Adobe Creative Cloud aps, such as Premier, After Effects and Adobe Media Encoder give you the ability to encode in ProRes without any post-hoc conversion.
If you don't use Adobe CC aps or want a free, open source tool, ffmpeg can encode video using ProRes, and runs cross-platform.
This ffmpeg command:
ffmpeg -i input.avi -c:v ...
Just mux the images
You can simply mux the JPG images to make a video:
ffmpeg -framerate 30 -i input%03d.jpg -codec copy output.mkv
Note that if you omit -framerate then a default of -framerate 25 will be applied to the input.
You can use jpegtran to perform lossless optimization on each frame which may provide significant file ...
The article you linked is not very good.
Normally, single pass bitrate encodings convert your bitrate into a RF
value with a maximum bitrate limit and takes it from there.
x264's one-pass ABR ratecontrol is not implemented as CRF + limit. He's right that 2pass is by far the best way to hit a target bitrate, though.
And he apparently doesn't realize that ...
This will output a lossless H.264 video where frames will use information from other frames
ffmpeg -f image2 -r 30 -i %09d.jpg -vcodec libx264 -profile:v high444 -refs 16 -crf 0 -preset ultrafast a.mp4
Explanation of options:
-f image2 - tells ffmpeg to select a group of images
-r 30 - tells ffmpeg to encode at 30 frames (or images) per second (change ...
tl;dr: Since Youtube reencodes all videos regardless of the upload format, it really isn't that important. Just export your video with a high bitrate to preserve quality. Also see my answer here regarding quality loss caused by Youtube.
Long answer: Each reencoding of a video to a compressed format lowers the quality. Usually, that means you'll lose quality ...
ffmpeg supports h264 and h265 NVENC GPU-accelerated video encoding. You can do 1-pass or 2-pass encoding at the quality that you choose, for either hevc_nvenc or h264_nvenc, or and even with an entry-level GPU it's much faster than non-accelerated encoding and Intel Quick Sync accelerated encoding.
2-pass high-quality encoding:
ffmpeg -i in....
Yes, 24000/1000 is 24 fps and 24000/1001 is 23.976fps. Some refer to the X/1001 frame rates as "drop down" (as in "dropped down from the integer") but this is easy to confuse with "pull down" which often refers to the cadence of frames when fitting 24 or 25 fps material into a 30 fps program.
You can also think of these notations as 24,000 divided by 1,000 ...
YouTube will re-encode whatever you give it. VP9 is currently too slow to encode. So the best choice is to either:
Give it the original footage, or if it is not accepted by YouTube or is too big to upload, then...
Re-encode to H.264
ffmpeg will accept just about any input and will provide a great quality output. Development is very active, so it is ...
You can create an avi animation as a series of png images ( png is lossless so the jpeg => png conversion should not degrade your pictures ):
if your images a named img_0001.jpg
ffmpeg -r 25 -start_number 1 -f image2 -i "img_%04d.jpg" -vcodec png video.avi
where "25" is the frame rate you want in the resulting video. -start_number is not needed if it ...
I've answered a similar question some time ago. YouTube added a few codecs since then but all the info there still applys: How does YouTube encode my uploads and what codec should I use to upload?
Short answer: Yes if you are concerned about maximum quality a lossless codec or visually lossless codec is the way to go. Re-encoding always means loss of ...
There might not be a way. Based on your description of the problem, it sounds like the processing is the slow part. While the video encoder itself is able to do multi-threaded processing, the image processing you are doing may not be able to. By default, Premiere has always done as much parallel processing as possible for me and I frequently see it hit 99%...
I'm not happy when I'm rendering unless I can actually smell burning plastic, nothing is more frustrating than AE telling you that your render won't complete until the heat death of the universe, while at the same time your CPU is barely raising a sweat. However there is something you can do about it.
After effects comes with a command line renderer called ...
Yes, you have the right idea. If stib's suggestion of making multiple outputs in parallel with the same ffmpeg commandline doesn't quite do the trick, then use a temp file to hold a lossless copy of the output of any slow filtering:
ffmpeg -i src.mkv -vf yadif=3:1,mcdeint=2:1 -c:a copy -c:v libx264 -preset ultrafast -qp 0 deinterlaced.mkv
(never use ...
Rotate without re-encoding
You can add rotation metadata:
ffmpeg -i input.3gp -c copy -metadata:s:v rotate=90 output.3gp
-c copy will enable stream copy mode, so it will just re-mux instead of re-encode.
Player and device support for the rotate metadata may vary, so your player or device may not actually rotate the video. If that is the case you may have ...
Regular ffmpeg won't do this. You'll need a combination of two tools to carry this out.
#1 Use ffmpeg from direct264, a modded version of an old ffmpeg build with a custom filter to modify H264 bitstreams. This build is crippled in most other ways, so rename it or don't put it in your path.
ffmpeg -i in.mp4 -vcodec copy -acodec copy -vbsf h264_changesps=...
I'm not sure how it will behave at very low frame rates, but it is worth pointing out this would also limit your options on how and when you could change frames since they would have to follow on the clock cycles. What is more likely to work in this case is a long keyframe interval. The majority of frames in a compression like H.264 only store the changes ...
To expand on LordNeckbeard's answer, yes, just mux the JPEG data into an MJPEG video stream. That will be the smallest representation of the exact sequence of output images, even though MJPEG is a terribly inefficient codec by today's standards. (no temporal redundancy, and not even any intra prediction.
You can make a variable-framerate MJPEG video to ...
What you are describing is effectively what 2-pass VBR does for you. It makes a first path that calculates the level of change for each particular time in the video and then uses this information to make the best possible use of the available storage space.
It is, however, entirely possible to do the process manually by doing multiple encodings with ...
To understand this you need to understand how codecs actually work.
A plain uncompressed video frame e.g. a single picture is pretty large. I'm talking about a bitmap, not a lossless encoded video, no encoding at all, just plain pixel information.
Here simple example of a Full HD frame for some perspective:
We have a resolution of 1920x1080 that equals to ...
This isn't a phenomenon, this is compression. It is simply how it works.
Compression works by taking an input, runs it through some algorithms and then gets an output that matches up either exactly (lossless) or approximately (lossy) with the original input. It is not stored like normal video data as a set of pixels, but rather some form of data that ...
I think it's probably easier to combine (stack) a full dimension background image (720x500px) with your video in ffmpeg instead of adding the 20px footer to the video. You can simply use the overlay filter for this:
-loop 1 -i 720x500.jpg \
-i 720x480.mp4 \
-filter_complex overlay=0:0 \
-t 0:01.48 \
Note: In this ...
Use the vstack filter:
ffmpeg -i video.mp4 -i image.png -filter_complex vstack output.mp4
If the image is not the same width as the video then resize it with the scale filter:
ffmpeg -i video.mp4 -i image.png -filter_complex "[1:v]scale=320:-1[bottom];[0:v][bottom]vstack" output.mp4
Those are rational numbers. So, 24000/1000 = 24.000 and 24000/1001 = 23.976. These are in fact the exact representations i.e. 23.976 is an approximation but 24000 divided by 1001 isn't.
As for why 24000/1001 and not 24/1.001, it's because that's the smallest set of numbers that represent the value as integers. Else, a floating point variable would be needed ...
If compatibility is your top priority, then you should include two alternative versions of your video on your website, like in this HTML example.
As for the exact formats I would suggest:
H.264 and AAC in MP4: Chrome, Firefox 22+ on Windows, IE9, Safari 3.1
VP8 and Vorbis in WebM: Firefox fallback for Mac and older versions on Windows.
(If you need support ...
I've tried a bunch of front ends for ffmpeg and finally settled on Tencoder. Widows only. It has a preset for ProRes and is very easy to customize so you can crete setting for often used formats or settings.
It is multithreaded and allows you to do batch processing.
If the frame-rate is not too high and you can associate a frame with a precise timestamp then the easiest would be to add the metadata as textual subtitles.
The other option is to mux the metadata as standard headers in .mp4 or similar container format. .mp4 can be broken down into multiple fragments, each one with its own header, and theoretically this can ...
I would get as far away from EE as possible. Using the x264 tool, and mp4box, you can convert and segment out the files which are ready to be streamed to any dash compatible players. Especially since you mentioned using batch scripts, this is a great solution I think.
This is a good guide: http://www.dash-player.com/blog/2014/11/mpeg-dash-content-generation-...