|
|||||||||
|
Thread Tools | Search this Thread |
February 23rd, 2009, 11:13 AM | #1 |
Regular Crew
Join Date: Jan 2009
Location: Manchester, UK
Posts: 53
|
Premiere Pro CS4 solution
Requirements
1. Smooth real-time editing on a mid-range laptop. 2. Final output is as faithful to source as possible, no unnecessary conversions to/from RGB. 3. Final output is stored lossless, so can be re-used in future Premiere Pro projects without degradation. 4. Final output is 10-bit, to preserve fidelity of 32-bit processing in Premiere Pro. 5. Full dynamic colour range available within Premiere Pro. Using 32-bit filters like ProcAmp should bring the 0-15 superblacks and 236-255 superwhites into range. 6. Edit using correct colorspace (BT.709). 7. If using proxy files, color rendition should be good enough for reasonable accurate color matching, with final tweaking using original files just prior to final render if required. 8. Free. 9. Stable and reliable. Certainly no crashing expected during the editing part. 10. Any processes should be batched, so a project with 3 .mov files in the workflow should take as many clicks/button presses as a project with 100 .mov files. Now, before I reveal the hideousness of my workflow, let me say that as far as I can tell, it meets ALL the above requirements including YUY2 editing end-to-end. Theory In brief, I'm using NTSC DV Widescreen files as proxy files for editing. Because they are YUY2 I can access the full dynamic range, even during proxy editing. And because they are native to Premiere Pro CS4, editing is fast, smooth and reliable. To avoid 30fps to 29.97fps conversion issues, I'm not throwing away any frames but instead I'm editing 5D files ~0.01% slower than real-time. I work on a NTSC DV Widescreen timeline sequence, and when I'm ready to render I simply copy everything to a Desktop 1920x1080 29.97fps timeline sequence. Then I switch the NTSC DV Widescreen proxy files with uncompressed YUY2 .avi files and render the final output. Because both files are .avi, it is easy to switch simply by renaming a single folder. I render my output in lossless 10-bit V210 format (for use in other Premiere Pro projects). Lastly, I do a target format conversion (at the same time bringing the fps back to 30, and if necessary converting to 24fps, etc). Cons 1. A few additional steps (although it doesn't actually take too long once you get used to it). 2. Render time. Although it is largely automated, so you can click and leave. 3. DISK SPACE. For every 50Mb source file, you need approx 1.5Gb of uncompressed YUY2 and 50Mb of DV NTSC proxy. Also, for the final V210 render you need approx 2Gb for every 50Mb of DV equivalent output file (there is a reason why I'm using uncompressed avi instead of a lossless codec like Lagarith, see notes below). However, the majority of the disks don't need to be fast as these large files are not used in real-time. The Solution Tools needed 1. AVISynth 2. VirtualDub 3. FFDShow 4. AVISynth Batch Scripter 5. Premiere avisynth import filter Organising the files 1. Create 4 folders: original, signpost, master, proxy. 2. Move or copy the 5D .mov files you want to edit into original. 3. Use AVISynth Batch Scripter to scan the original folder and create an .avs file in the signpost folder for each .mov file in the original folder. The script template window should look like this (there is a reason for the 709-601 conversion, see notes below): Code:
DirectShowSource("%PATH%\%CLIP%.%EXT%", fps=30, convertfps=false).assumefps(29.97, false) ColorMatrix(mode="Rec.709->Rec.601", clamp=0, inputFR=true, outputFR=true) 4. Ensure FFDShow is the decoder in use and is outputing ONLY YUY2. 5. Load VirtualDub and create a new job to process everything in the signpost folder. Output each .avs file using Direct Stream Copy to an .avi file in the master folder. You can now delete the signpost folder. Create the high-speed proxy files 6. Using Adobe Media Encoder, transcode all files in the master folder to NTSC Widescreen DV format. Output these files to the proxy folder. Ensure the source and target filenames are the same and just the output folder differs. Edit 7. In Premiere Pro, create an NTSC Widescreen DV sequence and edit using the DV proxy files in the proxy folder. Ensure the "Render at maximum bit-depth" option is ticked to work with the superblacks and superwhites. You only need the proxy folder at this stage, so can copy to a laptop if required. Create 10-bit archive output 8. Create a new timeline sequence 1920x1080 square, 29.97fps. Select all and copy from the NTSC timeline to the new timeline. 9. Close Premiere Pro. Rename the proxy folder proxy_old. Reload your project. Premiere pro will ask for the location of the first .avi file, point it at the master folder. It will automatically re-link the remaining files. 10. Export as uncompressed AVI, V210 1920x1080, 29.97fps. Make a note that the archive file is encoded incorrectly at 29.97 instead of 30. Convert 10-bit archive output to required format 11. Use AVISynth and VirtualDUB (or your preferred encoder) to convert the V210 archive file back to 30fps and the the required format. You can use "Premiere avisynth import filter" along with Adobe Media Encoder, although be careful that an unnecessary YUY2>RGB>YUY2 conversion isn't introduced. Example AVISynth script: Code:
DirectShowSource("v210_archive_file.avi", fps=29.97, convertfps=false).assumefps(30, false) ConvertFPS(24) (if required) Notes 1. In order to access superblacks and superwhites, PPro needs the input file to be in YUY2 format AND in one of the limited codecs it understands. The only lossless codec I could get to work was uncompressed avi. If you are happy to work in RGB (and work with the squashed 16-235 contrast resolution) you can use Lagarith Lossless, or even Premiere avisynth import filter to save a LOT of disk space. 2. Premiere Pro seems to assume YUY2 streams are ITU BT.601, regardless of whether they are actually 601 or 709. So assuming the file that comes out of the 5D is 709, I do an initial conversion to 601 to give Premiere Pro what it wants. 3. Uncompressed AVI is the only lossless format I can find that Premiere Pro outputs to in YUY2 format. I tried Lagareth, etc, but Premiere seems to do a conversion to RGB even though the target stream is YUY2 capable. If you're working in RGB format, you can output direct to Lagareth RGB format and save disk space here too. 4. I tried CoreAVC instead of FFDShow but I had some issues with the picture being shifted vertically by a few pixels. 5. Using Quicktime Pro to convert an original .mov file to .mp4 nearly worked, but a) there is no batch process option and b) Premiere interprets the pixel aspect ratio incorrectly. Even after manually correcting the pixel aspect ration to 1.0, there were some additional pixels visible on each side of the frame. So why don't I just use Cineform? Actually, I would like to, but at the moment: 1) The cheapest Neo Scene product has a built-in 5D decoder, and it (correctly) outputs full range in the cineform file. This is no good because... 2) They haven't finished the CS4 importer, so Premiere Pro (incorrectly) doesn't acknowledge the superblacks and superwhites exist. 3) The more expensive Cinefrom products with HDLink allow use of an external decoder to feed the cineform file, so I could work with squashed 16-235 RGB. But that defeats the object of paying a premium for the 10-bit Cineform format. 4) Prospect, which allows native Cineform editing within Premiere, isn't available for CS4 yet. Also, Cineform is almost lossless, but not quite. Last edited by Thane Brooker; February 23rd, 2009 at 11:15 AM. Reason: Typo |
February 23rd, 2009, 02:54 PM | #2 |
Regular Crew
Join Date: Feb 2009
Location: Toronto Canada
Posts: 26
|
Great posting - someone should sticky
|
February 23rd, 2009, 07:22 PM | #3 |
New Boot
Join Date: Apr 2002
Location: Austin, TX
Posts: 15
|
Thank you Thane. Very helpful post.
|
February 24th, 2009, 01:05 AM | #4 |
Regular Crew
Join Date: Apr 2008
Location: Delhi, India
Posts: 43
|
Thane, very informative post
Thank you for writing in detail.
I had a couple of questions, CoreAVC doesn't output to 0-255 even if you have enabled the button, how do you determine what color level is in video? Histogram? Do you do any color correction with 5DII files? HDRAGC? Why use PPro when you already know how to use Avisynth :D |
February 24th, 2009, 05:38 AM | #5 | ||
Regular Crew
Join Date: Jan 2009
Location: Manchester, UK
Posts: 53
|
Quote:
Bring a YUY2 0-255 file into PPro and the picture will initially look clipped, but you can bring the clipped areas into range using ProcAmp (provided Premiere understands the codec - try this with Lagarith or current Cineform and the <0 and >100 level data is missing). Bring a YUY2 16-235 file into PPro and the entire contrast range will be within levels 0-100. The picture won't be clipped. However, you've got less contrast resolution to play with. If you bring an RGB file into PPro, it doesn't matter whether you selected 0-255 or 16-235 output; conversions to RGB are always 16-235. Ditto for FFDShow - the Contrast Range option only affects input levels, output levels to RGB are always 16-235. If you want to see the detail you lose going from 0-255 to 16-235, try this. 1. Get a copy of a video player that works with the Haali Video Renderer (included with Haali Video Splitter). I use Zoom Player, but Media Player Classic may work. 2. Ensure you're using CoreAVC with output YUY2 and levels 0-255. Set the Haali Video Renderer to levels 0-255. 3. View a frame and take a screen-capture. Bring into Photoshop. 4. Ensure you're using CoreAVC with output YUY2 and levels 16-235. Set the Haali Video Renderer to levels 16-235. 5. View the same frame and take a screen-capture. Bring into Photoshop as another layer. 6. Switch between the two; you'll see a subtle difference. Of course, if you never do any color matching or level tweaking and you're simply cutting and joining clips for output to DVD, then it is probably easier to work in 16-235 from start to finish. Plus, your file sizes will be slightly smaller! Original: 63.7Mb, Lagarith YUY2 16-235: 285Mb, Lagarith YUY2 0-255: 300Mb, Uncompressed YUY2 0-255: 1.53Gb. This also explains why Windows Media Player (v11 on Vista, don't know about XP or other versions) will clip unless you send it either a 16-235 level YUY2/YV12 stream or an RGB stream. It clips because the video renderer WMP uses, unlike Haali Video Renderer which is switchable, always assumes input to be 16-235. It is worth noting that Windows Media Player does not display 5D files in their full 0-255 glory! Quote:
Not yet, I've been too busy figuring all this out to actually shoot anything! But I will, because it is an excuse to buy a new Plasma (just so I can check my levels on various devices, you understand). :D For the same reason I use InDesign even though I know how to use LaTeX :D Last edited by Thane Brooker; February 24th, 2009 at 05:56 AM. Reason: Added para on Windows Media Player |
||
February 24th, 2009, 10:05 AM | #6 |
Regular Crew
Join Date: Jan 2009
Location: Manchester, UK
Posts: 53
|
Alternative Premiere Pro workflow, less disk space, TV levels only
If I'm working on a project where I'm not bothered about losing some contrast range, i.e. I'm happy to work within the 16-235 legal levels, then I use the following workflow instead and save an enormous amount of rendering time and disk space:
Tools needed 1. AVISynth 2. VirtualDub 3. FFDShow 4. AVISynth Batch Scripter 5. Premiere avisynth import filter 6. Lagarith Lossless Video Codec Organising the files 1. Create 4 folders: original, signpost, master, proxy. 2. Move or copy the 5D .mov files you want to edit into original. 3. Use AVISynth Batch Scripter to scan the original folder and create an .avs file in the signpost folder for each .mov file in the original folder. The script template window should look like this: Code:
DirectShowSource("%PATH%\%CLIP%.%EXT%", fps=30, convertfps=false).assumefps(29.97, false) ColorMatrix(mode="Rec.709->Rec.601", clamp=0, inputFR=true, outputFR=true) ColorYUV(levels="PC->TV") 4. Ensure FFDShow is the decoder in use and is outputing ONLY YV12. 5. Load VirtualDub and create a new job to process everything in the signpost folder. Configure the Lagarith encoder to store using YV12 format. Output each .avs file using Fast Recompress to a Lagarith .avi file in the master folder. You can now delete the signpost folder. Create the high-speed proxy files 6. Using Adobe Media Encoder, transcode all files in the master folder to NTSC Widescreen DV format. Output these files to the proxy folder. Ensure the source and target filenames are the same and just the output folder differs. Edit 7. In Premiere Pro, create an NTSC Widescreen DV sequence and edit using the DV proxy files in the proxy folder. You only need the proxy folder at this stage, so can copy to a laptop if required. Create final output 8. Create a new timeline sequence 1920x1080 square, 29.97fps. Select all and copy from the NTSC timeline to the new timeline. 9. Close Premiere Pro. Rename the proxy folder proxy_old. Reload your project. Premiere Pro will ask for the location of the first .avi file, point it at the master folder. It will automatically re-link the remaining files. 10. If you want an archive copy for reimporting into future PPro projects: Export as Lagarith AVI (use RGB in the codec settings), 1920x1080, 29.97fps. Otherwise, just export directly to required format. Notes 1. I initially use YV12 as the storage format because it takes less disk space. I'm not losing any quality because the file from the 5D is YV12 to begin with. 2. If I'm not bothered about the slight loss of contrast range the 16-235 conversion allows, then I'm generally also not bothered about the slowdown of ~0.01%. So I'll generally output to my target straight from 29.97fps without converting back to 30fps first. 3. If I have just a few source files then I use the Premiere avisynth import filter and use the .avs files in Premiere Pro directly instead of creating master .avi files. However, this requires a manual re-link of each file because the filenames have changed from .avi (proxy) to .avs (signpost), so it is a trade-off between disk space and manual re-linking effort. |
February 24th, 2009, 12:57 PM | #7 |
Major Player
Join Date: Oct 2007
Location: Northern California
Posts: 517
|
I can't imagine any reason to online in uncompressed HD. Your source is 40Mb/s AVCHD in 4:2:0 so there isn't all that much to keep. Cineform or Matrox MPEG or ProRES or MJPEG should be more than sufficient for Compressed HD editing. The key thing is maintaining the 0-255 range, which can be challenging in the first step. I have been using both Cineform and Matrox with success. The Matrox conversion is based on QT7.6 and the Cineform conversion is based on CoreAVC Pro.
__________________
For more information on these topics, check out my tech website at www.hd4pc.com |
February 24th, 2009, 07:50 PM | #8 | |
Regular Crew
Join Date: Apr 2008
Location: Delhi, India
Posts: 43
|
Quote:
Latex, that reminds of college days ;-) In all seriousness, what is it that you can do in PPro, that you can't do in Avisynth. You can easily do all kinds of conversions, include various kinds of clips, effects, slow motion, audio sync, slideshows with full pan & zoom, color grading, and much more. And the best part is transitioning from one source to another (VHS -> DV -> HDV -> 1080p -> ???), is minimal changes, and minimal effort. People having been talking about spending six grand just to get a machine to 1080p files, where as my old laptop is able to handle the files from day one. Also as you said if my destination is DVD I don't need to worry about 0-255, as TV is 16-235 (I suppose even the latest plasmas). Are there any format (Blu_ray) available out there that will give you full pristine 0-255 glory? You can use HDMI out boxes (media center), which can read directly from your external hard disk, and should be able to show 0-255 output to HDMI to your TV. Or, is 0-255 only good for PC? |
|
February 25th, 2009, 01:02 AM | #9 | |
Major Player
Join Date: Dec 2008
Location: Laguna Niguel, CA
Posts: 277
|
Quote:
|
|
February 25th, 2009, 06:04 AM | #10 |
Regular Crew
Join Date: Apr 2008
Location: Delhi, India
Posts: 43
|
If you want maximum flexibility and control, go with Avisynth. It works at fundamental level. There is a learning curve involved depending upon how deep you want to go. And since its actively being developed, there is excellent support available (doom9.org).
@ Thane While playing around with CoverAVC & ffdshow and Avisynth, I discovered objective way to view color levels. Namely using histogram function along with Levels. Using, Levels(0, 1, 255, 0, 255, coring=False) Histogram you can visually see the levels below 16 & above 235. And in both CoveAVC & ffdshow I see color being in 0-16 & 235-255. If you restrict the levels to CCIR-601 with Levels(0, 1, 255, 0, 255, coring=true) histogram you will not see any colors in low or high ranges. I will have to try out your method to see color difference in Photoshop. |
February 25th, 2009, 12:39 PM | #11 | |
Major Player
Join Date: Dec 2008
Location: Laguna Niguel, CA
Posts: 277
|
Quote:
|
|
February 25th, 2009, 02:04 PM | #12 |
Regular Crew
Join Date: Apr 2008
Location: Delhi, India
Posts: 43
|
|
February 25th, 2009, 03:33 PM | #13 |
Regular Crew
Join Date: Feb 2009
Location: Toronto Canada
Posts: 26
|
Does the new Quicktime not mitigate the clipping issue?
I thought Premiere relied on quicktime to "parse" the video so will the new version of QT not mitigate the clipped black/whites issue?
|
February 25th, 2009, 04:14 PM | #14 | |
Regular Crew
Join Date: Jan 2009
Location: Manchester, UK
Posts: 53
|
Quote:
1. Change in gamma 2. Horrible missing bands of color seen in the RGB parade 3. The full 0-255 dynamic range is squashed into 16-235 4. Treats the file as BT.601 instead of BT.709 Due to point 3 above, you now won't see any clipping. But Quicktime/Premiere/Adobe Media Encoder still aren't producing the results on native 5D .mov files that I would expect. To summarise, I expect: 1. No change in gamma 2. No lines of missing color, and a nice smooth histogram curve 3. Full dynamic range available for editing 4. Output treated as BT.709 Note point 3 above will actually result in the Premiere Pro composite video image looking clipped! But, I would have control to bring the clipped areas into the legal range as I saw appropriate, either by reducing contrast, raising or lowering brightness, altering shadow/highlight levels, etc. Last edited by Thane Brooker; February 25th, 2009 at 07:03 PM. Reason: Deleted a sentance that didn't make sense |
|
February 25th, 2009, 07:00 PM | #15 | |
Regular Crew
Join Date: Jan 2009
Location: Manchester, UK
Posts: 53
|
Quote:
Once the file is in Premiere Pro, you're now working with 10-bit precision. You can now reduce contrast without losing detail as you have more bits to work with. Once your clip is inside Premiere Pro, you would normally work within levels 0-100. Actually, it is hard not to do so because Premiere Pro clips anything outside these levels on the histograms and composite displays. But if you do want to put stuff in the supers range, Premiere Pro allows this, just as the highlights and shadows were in the supers range when you first brought in your 5D files. When you had finished editing, color grading, etc, you would output from Premiere Pro to your film output program typically in YUV 10-bit, 12-bit or 16-bit. So, to answer your question "which resulting format, 0-255 or 16-235?", the answer is it only matters if you are converting back to 8-bit RGB at any point, which you are not. You are maintaining 10-bit YUV (or greater) all the way through. So, in reality, the question is irrelevant. But, if you did convert to 8-bit RGB for some weird reason, due to your working within levels 0-100, you would get a 16-235 RGB file. Anything <0 and >100 would be put into 0-15 and 236-255. But, I say again, you won't be going from Premiere Pro to 8-bit-RGB to film-output, it just doesn't make sense as you'd lose too much detail. If anybody can confirm the above is correct, that would be appreciated. |
|
| ||||||
|
|