Archive
Blackmagic Decklink SDI and Linux
Almost a year ago, I invested in a central London based post-production company. At the time, I had dreams of pushing open source software solutions into the professional post-production arena. Things haven’t quite worked out as planned, and I’ve made very limited headway on this project. Business imperatives took over and changing a whole ecosystem is a big job. I’ve continued to use Linux on my laptop and happily connect to printers and network drives, but that’s about all.
Recently I had an opportunity to change all that. We needed a tape digitisation solution, separate from our Avid editing suites, for a new project. I’ve know for a while that Blackmagic’s Decklink range of cards work with Linux and were pretty good for capturing from SDI. We purchased the basic Decklink SDI card, re-cycled an old machine onto which I installed Linux Mint Debian and away we went….
Things weren’t entirely smooth from the start. I upgraded the Mint Debian ISO, including the kernel to 2.6.39. This was my first mistake. The card was not recognised with this kernel. Booting into the original 2.6.32 kernel overcame this problem and the card was recognised. I had to download the relevant Linux software from the Blackmagic website, as the accompanying DVD only included Windows software. The available Linux software from Blackmagic included the relevant drivers, firmware and Media Express software. Unfortunately, other advertised items such as the drive speed test and alpha keying utilities are not available for Linux.
Once everything was up and running, it was time to capture. The Media Express 2.3.1 software was pretty straight forward to use. Setting in and out points allowed the software to control the J30 Digibeta deck and content was captured in Uncompressed 10-bit YUV formate. The other limited codec options included Uncompressed 8-bit YUV, RGB and MotionJPEG. This uncompressed file was then transcoded to IMX50 using FFMbc. The whole process seemed to work reasonably well, and I’m just now waiting to send the IMX50 sample off for technical inspection.
Unfortunately, the Media Express software as supplied did not provide options to change the SD captured frame size from 720×576 to anything else. Ideally I was looking for 720×608 so that VITC was also captured. A phone call to Blackmagic revealed that this was possible with the Windows and Mac version of their software, but not on Linux. Their Linux SDK did expose the necessary calls, but the software had not been written to include them. Essentially, if I wanted VITC, I’d need to write a capture utility myself. Somewhat disappointing.
Overall, I’m pleased that we now have an SDI capture solution running on Linux. However, the Blackmagic Decklink card still feels a little half baked and Linux was perhaps only an afterthought for them.
How To Install FFmbc on Debian Testing
Every once in a while I decide to install the latest FFmpeg/FFmbc on my machine. Despite all the recent upheaval in the FFmpeg camp, it is still a fabulous open source file transcoding tool. However, I am much more interested in these tools from a professional level, and thus now use FFmbc. FFMedia Broadcast supports a number of high end formats that FFmpeg doesn’t, or at least doesn’t very well – XDCAM HD and IMX/D10 for example. The latest FFmbc-0.6-rc3 has introduced some interesting transcoding preset options to make things even easier.
FFmbc isn’t packaged. It needs to be installed manually. I’ve covered doing this for FFmpeg in the past, but options and switches are always changing, plus some of these in FFmbc are quite different. Here’s how I achieved it today…..
My build system is a fresh install of Linux Mint Debian (LMDE). It’s based on Debian Testing.
First, we need to update the sources list. Depending on your distribution, you may not need to do this. LMDE already has this repository added. I use pico as my text editor. Feel free to use nano, vi or emacs if you prefer.
Go to the Debian Multimedia repository site and download the keyring package. Follow the instructions for unpackaging it about half-way down the front page. Now update your sources list:
>sudo pico /etc/apt/sources.list
Add “deb http://www.debian-multimedia.org testing main” on a new line and save the file.
>sudo apt-get update
>sudo apt-get upgrade
Now you’re using the latest sources and packages.
I used to build x264 direct from source. I’ve found that the Debian Multimedia repository has a packaged version from February 12th, 2011 available. That’s new enough, so I just installed the library package.
Next, install all the additional libraries we’ll need:
>sudo apt-get install build-essential yasm libgpac-dev libdirac-dev libgsm1-dev libschroedinger-dev libspeex-dev libvorbis-dev libopenjpeg-dev libdc1394-22-dev libsdl1.2-dev zlib1g-dev texi2html libfaac-dev libmp3lame-dev libtheora-dev libxvidcore4-dev libopencore-amrnb-dev libopencore-amrwb-dev frei0r-plugins-dev libcv-dev libvpx-dev libgavl1 libx264-dev
Now to configure FFmbc. There’s so many options, it’s sometimes hard to know which ones to choose. The list below is my personal preference, but do try ./configure –help to assist in choosing your own.
>./configure –enable-gpl –enable-version3 –enable-nonfree –enable-shared –enable-postproc –enable-runtime-cpudetect –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-frei0r –enable-libdc1394 –enable-libdirac –enable-libfaac –enable-libgsm –enable-libmp3lame –enable-libopenjpeg –enable-libschroedinger –enable-libspeex –enable-libtheora –enable-libvorbis –enable-libvpx –enable-libx264 –enable-pthreads –enable-libxvid –enable-zlib
After a successful configuration, all the enabled decoders, encoders and muxers will be displayed. There are some configuration dependencies here. If you don’t –enable-gpl things like postproc will fail at build time. Next….
>make
>sudo make install
“Make” will probably take quite a long time. Hopefully it will all proceed without any fatal errors.
In the past, I recommended manually building qt-faststart. A little utility that moved header atoms in mpeg4 files to allow for progressive downloads. This is not required for FFmbc as -faststart is now a switch within the mp4 muxer.
Finally, it would still seem that simply typing “ffmbc” on the command line will throw an error regarding shared libraries (we did build FFmbc with –enable-shared). To fix this we do the following:
>sudo pico /etc/ld.so.conf
Add the line “/usr/local/lib” (without quotes) to this file and then save it. Read more about dynamically linked libraries here, specifically the fourth paragraph to explain what we just did. Then:
>sudo ldconfig
We’re finished! Next thing for you to do is learn how to use it…… Most FFmpeg tutorials will be valid, as FFmbc is regularly synchronised on FFmpeg, but also read the information on the FFmbc project pages about how to use the XDCAM HD and IMX/D10 presets.
I did strike one problem trying to install FFmbc with OpenCV support. It’s been reported and I’m sure will be addressed soon.
FFmbc v0.5 Available
It has been announced as available for a while now, but only recently was the download made publically available again for FFmbc 0.5. Lead developer Baptiste is doing a super job moving this project forward, but really needs the support from more media professionals to fully realise the early promise of this open source, broadcast media focused, transcoding solution.
FFmbc 0.5 download available here.
FFmbc 0.5 feature updates include:
- Sync on FFmpeg svn r25202.
- Yadif video deinterlacing filter.
- Overlay video filter.
- Fade video filter.
- HQDn3d video filter.
- Rename ffmpeg binary to ffmbc.
- FFmbc is now GPL only.
- Disable shared libraries.
- Remove -s resizing output cli option, use -vf scale.
- 23.98 and 24 fps support in MXF muxer.
- Mpeg-2 aspect ratio bitstream filter, to change aspect ratio without reencoding.
- Fix an issue with -async and audiomerge.
- Fix an issue with the fade filter.
- Write interlacing information in mov files, fix deinterlacing with quicktime player.
- Correctly support interlaced in yuv4mpeg and quicktime.
- Display interlacing when printing information.
- Fix an issue with resampling and audiomerge.
FFMBC 0.4 Now Available
A little over one month since the release candidate was made available, FFMBC has officially rolled our version 0.4. Lots of useful and interesting updates for our favourite open source video transcoding tool:
New FFmbc Release 0.3
Just days after I first wrote about FFmbc (FFMedia Broadcast) the team have released a new version, marked as 0.3.
- Sync on FFmpeg svn r20539.
- Write Quicktime timecode track.
- Set closed gop flag for first gop when encoding with b frames.
- Search relative path when opening Quicktime reference files.
FFmbc – A Broadcast Media Alternative to FFmpeg
FFmbc (FFMedia Broadcast) is an off-shoot of the FFmpeg project that is targeted squarely at the broadcast media world. The project while still in its infancy, but available for around 6 months already, is currently at release version 0.2. Launched and managed by Baptiste Coudurier, well known for his work on the FFmpeg project, FFmbc rolls out the following enhancements:
• Creating XDCAM HD422 files in .mov or .mxf
• Creating XDCAM IMX/D-10 files in .mov or .mxf
• Creating AVID DNxHD files in .mov
• ID3v2 complete support.
• Itunes complete support.