Thursday, March 5, 2015

Standards Conversion with the Blackmagic Teranex and Hypderdeck Studio *UPDATED*

Blackmagic has a product called the Hyperdeck Studio which is essentially a tape deck that uses 2.5" SSD's instead of tapes. It even supports deck control via RS-422. They also make the Teranex, a hardware conversion box. So it should be simple to use these two products together for standards conversions right? Load your master(s) onto an SSD, pop it in, patch through the Teranex to an edit station with capture, and batch import your neatly converted media.

Well there are some weird quicks, but with a little help from FFmpeg and an AJA capture interface it all works out.


THE CONTEXT


We've recently been tasked with providing our masters of spots for foreign markets. After learning of these products and having a chat with a BM rep at one of their showcase events I was told it would serve the purpose. We will be doing these conversions regularly and frequently so a quick, reliable, hassle free workflow was the aim.

The Teranex does great conversions but only functions as an I/O box when hooked up via Thunderbolt. To properly convert it needs to sit in the middle of your playback and record signal chain. You can do station to station but there's no real way to synchronize playback/record and maintaining timecode requires some finagling of the recording in your NLE after record, trimming and then exporting.

Using the Hyperdeck Studio gives us deck control and the process becomes more straightforward, much more like tape to tape dub.

THE PROBLEM


There's two:

1. Files with stereo mixes played fine, but anything else (like a 5.1 mix) would have no audio. As explained by Kduran818

The only way so far, that I was able to get multi-track or 5.1 audio to come out of the Hyperdeck was creating a 16 channel multitrack file at 48khz at 24bit (it will not work if you have discrete tracks)

He also claims 16 bit audio won't work at all but I've yet to test this as almost all our material is 24 bit. I read somewhere else that this is a bug, and sure seems like it but I don't have confirmation at the moment.

2. In this case we were taking a 23.976 spot and converting to 25. The Teranex can be set to take the embedded timecode coming off the Hyperdeck and regen it at 25 and pass that on to Premiere, but since Premiere is deck controlling the Hyperdeck it was working in 23.976 even though it was capturing 25 to disk. I think you can guess how that worked somewhere between poorly and not at all.

THE SOLUTION


1. You can add empty audio to pad out those 16 channels any way you want, but I'm sure whatever workflow you're running through in your mind right now isn't elegant, quick, or something you'd want to do every time you needed to do a standards conversion on a spot. I wanted something our AV guys could utilize as a droplet. It's fitting my last post was about FFmpeg as a tool, because weird scenarios like this is where it shines.

Assuming you have 5.1 audio properly mapped within a single track/stream
ffmpeg -ar 48000 -acodec pcm_s24le -f s24le -ac 5 -i /dev/zero -i file_with_5.1_audio.mov -vcodec copy -acodec pcm_s24le -map 1:1 -filter_complex "[0:0][0:0]amerge=inputs=2[aout];[1:0][aout]amerge=inputs=2[afin]" -map [afin] -ac 16 output.mov
Will make you a file that plays back audio on the Hyperdeck. It looks wonky, especially the part where we take 5 channels of null input and double to get 10, which we append to our 6 channels of surround, but FFmpeg gets picky about odd channel configs. Try to make 10 null channels and watch FFmpeg freak out if you don't believe me. I've tested this numerous times though and as long as your input has 5.1 audio in the standard order in a single stream, this oneliner works great. Timecode is maintained, as it the levels and order of our surround mix. We are essentially just throwing silence onto 10 channels after the 5.1 layout. Since we're not re-encoding our video and we're only adding silence the command's speed is really only limited by how long your disks take to create a copy of the file. In our case it's about 15 seconds for a 30 second spot.

For now I've just popped this into a shell script that takes input of a filename and output name, but I'll probably used previously mentioned Pashua to make a GUI with drag and drop to be a bit more friendly for our AV guys. If I want to get fancy I can even add a line to copy the file to a default volume name (for our SSD in toaster style dock) so when it's done the SSD is ready to eject.

2. The key to solving the deck being in 23.976 and the timecode coming off the Teranex being 25  was to use an AJA capture interface instead of a Blackmagic one. In Premiere the AJA driver allows you to set the timebase of your deck (see screenshot below) rather than simply listening to what the serial connection is telling it.

Changing the timebase to match our converted fps was the key.


Our BM Ultrastudio 4K had no such option. This wouldn't matter if we weren't changing the framerate, but more often than not that's what we need to convert with the Teranex.  Also worth noting real quick the Teranex has a processing delay of 2 frames, and our capture hardware was 8. So we ended up going with a Timecode offset of 10 frames to give us frame accurate conversion. Your mileage may will very.

FURTHER THOUGHTS



An alternate solution could be to playback from the edit station through the Teranex to the Hyperdeck in record mode. It has the ability to start recording on being fed timecode and stop when timecode stops. I tested this at first with the Teranex set it input regen mode. However in that mode the Teranex remains parked on HH:MM:SS until playback starts but constantly runs the frame count even while paused, which the Hyperdeck sees as active timecode and constantly records. It should be possible to set the Teranex to Jam Sync at program start/01:00:00:00 and playback from the edit station with a leader so that the Teranex withholds all timecode from the Hyperdeck until program start and then pass on free generated timecode which should properly trigger the record start/stop. Furthermore setting up Premiere to playout 16 channels of audio could negate the need for FFmpeg to be involved. This idea didn't come to me till later, and I haven't tested it yet, as we're happy enough to have a reliable solution for now. I'll update this post with my findings if I do get around to it.

Also, I haven't been able to get the Hyperdeck Studio to play back any SD files yet. It doesn't even claim to see the files on the SSD. I may give support a call as I haven't been able to find anything online, and I've tried numerous files all well within the supported specs. It would also be good to see if this whole 16 channel audio thing has been acknowledge as an issue, and if there's any plan for a fix.

UPDATE


Playing a spot with 5.1 audio out of a workstation via the AJA control room software into the Hyperdeck does record the audio properly, sort of. The 5.1 channels stay in the correct order and are unaffected but the Hypderdeck records a full 16 channels in one stream, thus messing up the mapping. So the resulting file would need to have the empty channels pruned and the original audio remapped, either via FFmpeg or your NLE tool of choice.

Furthermore, running through the Teranex and jam syncing the timecode (on a framerate conversion) works to start triggering the recording, but once it starts generating timecode it will go on forever unless you tell it to stop. So you'll manually have to stop the Hyperdeck at the end of the recording which makes this workflow not a true batch/automated solution. You'll also have to hit "Start" in the timecode menu on the Teranex after each spot to stop the timecode (which does stop timecode output and thus Hyperdeck recording) and resets it's search for the jam sync value on the next spot. If you weren't doing a framerate conversion setting the Teranex to passthrough timecode triggers start and stop on the Hyperdeck just fine. There is a SDI Start/Stop trigger on the hyperdeck but that doesn't seem to work as I imagine the output card or Teranex aren't passing along that trigger.

For these reasons I believe going out of the Hyperdeck into an edit station is preferrable, only 1 FFmpeg command to run (a quick one at that) and true accurate automated capture.

No comments:

Post a Comment