Monday, April 6, 2015

Install ffmpeg 2.6 into Linux Mint 17.1 (or 17)

I prefer ffmpeg to libav. The instructions found to "Compile FFmpeg on Ubuntu, Debian, or Mint" are thorough and work well, I like to do it differently though. I prefer to have ffmpeg installed through the package manager and I want it to replace libav. This is a quick guide how I do it.
This is an updated and simplified guide based on a previous blog and the official ffmpeg compilation instructions.

http://interknighterrant.blogspot.com/2014/03/replace-libav-with-ffmpeg-in-lm16.html
https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
As a bonus, I decided to jot down notes as to what some more interesting (to me) commands actually are doing.

Installing Requirements

sudo apt-get update
sudo apt-get install checkinstall autoconf automake build-essential libass-dev libgpac-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libx11-dev libxext-dev libxfixes-dev pkg-config texi2html zlib1g-dev libmp3lame-dev yasm libfdk-aac-dev libx264-dev x264 libopus-dev libvpx-dev

Remove libav (not installed by default)

sudo apt-get --purge remove libav-tools

Downloading and Preparing ffmpeg

mkdir $HOME/Downloads/ffmpeg
cd $HOME/Downloads/ffmpeg
wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 && tar xjvf ffmpeg-snapshot.tar.bz2
cd ffmpeg

Compiling and Installing ffmpeg

./configure --extra-cflags="-I/usr/local/include" --extra-ldflags="-L/usr/local/lib" --extra-libs="-ldl" --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-makelibtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab --enable-version3 --enable-postproc --enable-avresample --enable-pic --enable-avisynth
make
sudo checkinstall --pkgname=ffmpeg --pkgversion="2:`./version.sh`" --backup=no --deldoc=yes --fstrans=no --default
Two things interesting about this command. (1) checkinstall creates a .deb and installs it, which I thought was VERY cool when I came across it a few years ago. And (2) the `./version.sh` will update with each new release of ffmpeg as it calls the script that will simply print the ffmpeg version... this is a vast improvement over my old tutorial. Can't remember where I stumbled on this, but it stuck in my head and I have been using it for a bit.

Updating ldconfig

We need to tell Linux that there are some library files located in /usr/local/lib. How about we do this and practice using the terminal, shall we? If you prefer to do this via gedit look at the last guide I made for LM16.
sudo cp /etc/ld.so.conf /etc/ld.so.conf.bu
Create a BU of the configuration file.
cp /etc/ld.so.conf /tmp/ld.so.conf
Copy (as user) the configuration file into the /tmp folder (which is deleted every boot).
echo "/usr/local/lib" >> /tmp/ld.so.conf
Add a new line to the end of the temporary (user owned) configuration file with the text "/usr/local/lib" (this is called "appending" text to a document).
sudo cp /tmp/ld.so.conf /etc/ld.so.conf
As root, copy (and replace) the configuration file with the temporary configuration file.
sudo ldconfig -v
Update library locations with ldconfig.

Testing!

ffmpeg -version
ffmpeg version 2.6.git Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
configuration: --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --extra-libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab --enable-version3 --enable-postproc --enable-avresample --enable-pic --enable-avisynth
libavutil      54. 22.100 / 54. 22.100
libavcodec     56. 34.100 / 56. 34.100
libavformat    56. 29.100 / 56. 29.100
libavdevice    56.  4.100 / 56.  4.100
libavfilter     5. 13.101 /  5. 13.101
libavresample   2.  1.  0 /  2.  1.  0
libswscale      3.  1.101 /  3.  1.101
libswresample   1.  1.100 /  1.  1.100
libpostproc    53.  3.100 / 53.  3.100
Aww yeah... sweet old success!

Removing ffmpeg installed with this guide / uninstall ffmpeg

sudo apt-get --purge remove ffmpeg

Re-installing libav after removal of ffmpeg

If desired, libav-tools is not installed by default in Linux Mint and might only be necessary if other software requires it.
sudo apt-get install libav-tools

Final Thoughts

I have used these same steps on several Linux Mint 17 and Linux Mint 17.1 builds now (I think this is my 5th time) and I have not had any issues. I use a few utilities tied in with .nemo_action scripts to automate some media tasks (like de-interlacing, adding an intro video, etc). I would love any suggestions on improvement to the process and I have fixed comments (I apologize to past readers who tried to comment and it would never show the comments).
The compilation guide for ffmpeg has you compile a lot of programs. After looking at repository versions compared to current stable versions, I found with the latest Linux Mint it just was not worth compiling all these different programs. Maybe if the libraries update in the next year or two I may feel inclined to do that though.

Wednesday, March 26, 2014

Install ffms 2.19.02 and avxsynth onto Ubuntu 12.04

avxsynth is a linux friendly port of avisynth (the sadly dead video editor that you could script). While I know there are other options available, we have a goodly amount of avisynth scripts already that we would like to work with while we transition to a more permanent, better solution. In order to run avxsynth, it says we need FFMS2.

I used the following pages to put this together:

Compilation and Installation

Preperation

First, follow the instructions at http://interknighterrant.blogspot.com/2014/03/replace-libav-with-ffmpeg-in-lm16.html to compile ffmpeg.

mkdir ~/Downloads/avxsynth

cd ~/Downloads/avxsynth

Installation: FFMS2

git clone git://github.com/FFMS/ffms2.git

cd ./ffms2

./configure --enable-shared --with-pic

make

sudo checkinstall --pkgname=ffms2 --pkgversion="2.19.02-git" --backup=no --deldoc=yes --fstrans=no --default

cd ../

Installation: avxsynth

git clone git://github.com/avxsynth/avxsynth.git

cd avxsynth

autoreconf -fiv

./configure --enable-silent-rules --with-pic

make

sudo checkinstall --pkgname=avxsynth --pkgversion="4.0.01" --backup=no --deldoc=yes --fstrans=no --default

cd ../

Final Adjustments

Update libraries listings, just in case.

sudo ldconfig

Testing

cd ~/Videos

sudo cp "/usr/share/example-content/Ubuntu_Free_Culture_Showcase/How fast.ogg" ~/Videos/test.ogg

sudo chown YOURUSERNAME:YOURUSERNAME test.ogg

ffmsindex -t -1 test.ogg
Writing index... done... 100% 

FFMS2 success! Now to try avxsynth

rm test.ogg.ffindex

printf "a=FFAudioSource(\"test.ogg\")\nv=FFVideoSource(\"test.ogg\")\nAudioDub(v,a)\nConvertToYV12()" >> test.avs

ffplay test.avs
ffplay version 2.2.git Copyright (c) 2003-2014 the FFmpeg developers
  built on Mar 26 2014 19:46:03 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
  configuration: --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --extra-libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab --enable-version3 --enable-postproc --enable-avresample --enable-pic --enable-avisynth
  libavutil      52. 69.100 / 52. 69.100
  libavcodec     55. 54.100 / 55. 54.100
  libavformat    55. 35.101 / 55. 35.101
  libavdevice    55. 11.100 / 55. 11.100
  libavfilter     4.  3.100 /  4.  3.100
  libavresample   1.  2.  0 /  1.  2.  0
  libswscale      2.  5.102 /  2.  5.102
  libswresample   0. 18.100 /  0. 18.100
  libpostproc    52.  3.100 / 52.  3.100
[ogg @ 0xb1520180] Broken file, keyframe not correctly marked.0/0   
[ogg @ 0xb159db60] Broken file, keyframe not correctly marked.0/0   
    Last message repeated 2 times
[avisynth @ 0xb1501980] FFAudioSource: Seeking is severely broken
Input #0, avisynth, from 'test.avs':
  Duration: 00:00:29.28, start: 0.000000, bitrate: 0 kb/s
    Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 1280x720, 18.89 fps, 18.89 tbr, 18.89 tbn, 18.89 tbc
    Stream #0:1: Audio: pcm_f32le, 44100 Hz, 2 channels, flt, 2822 kb/s
    nan A-V:    nan fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0

After a pretty short period of time (it will re-index), it plays fine! avxsynth success! Oddly enough, it won't stop playing after the movie has reached the end... but minor flaw in an otherwise successful process.

Un-install

To remove ffms and avxsynth:

sudo apt-get --purge remove ffms2 avxsynth

End Thoughts

The documentation for avxsynth is lacking in general. The most information that can be found is in that thread I linked to at Doom9's Forum. It has basic functionality of avisynth, a few plugins that have been ported, and a couple of additions. Stability wise, it seems like it has worked pretty stable (once you get it set up correctly). I like that I don't need to pipe the avs script in to ffmpeg or x264 anymore, it just works within the programs.

Monday, March 24, 2014

Replace libav with ffmpeg in LM16 / Ubuntu 13.10 (and Ubuntu 12.04 as well)

I prefer ffmpeg.  I think their compilation instructions are good, but wish to completely replace libav on my system and use ffmpeg exclusively (not just limited to a single user).  This isn't a post about why I make that choice, just a how I made it happen.

I have used the following pages in putting this how-to together:

I would love suggestions if there are ways to improve this process.

Compiling and Installation

Preparation

sudo apt-get update

sudo apt-get -y install checkinstall autoconf automake build-essential libass-dev libgpac-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libx11-dev libxext-dev libxfixes-dev pkg-config texi2html zlib1g-dev libmp3lame-dev yasm

mkdir ~/Downloads/ffmpeg

cd ~/Downloads/ffmpeg

wget http://download.videolan.org/pub/x264/snapshots/last_x264.tar.bz2 && tar xjvf last_x264.tar.bz2

wget -O fdk-aac.zip https://github.com/mstorsjo/fdk-aac/zipball/master && unzip fdk-aac.zip

wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz && tar xzvf lame-3.99.5.tar.gz

wget http://downloads.xiph.org/releases/opus/opus-1.1.tar.gz && tar xzvf opus-1.1.tar.gz

wget http://webm.googlecode.com/files/libvpx-v1.3.0.tar.bz2 && tar xjvf libvpx-v1.3.0.tar.bz2

wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 && tar xjvf ffmpeg-snapshot.tar.bz2

sudo apt-get --purge remove libav-tools

Ubuntu 12.04 ONLY, Installation: yasm 1.2

On Ubuntu 12.04 you need to compile the latest yasm, as the one in the repository is too old to work properly for the rest of the software compilations.

wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz && tar xzvf yasm-1.2.0.tar.gz

cd ./yasm-1.2.0

sudo apt-get remove yasm

./configure

make

sudo checkinstall --pkgname=yasm --pkgversion="2:1.2.0" --backup=no --deldoc=yes --fstrans=no --default

cd ../

Installing: libx264

cd ./x264-snapshot*

./configure --enable-static

make

sudo checkinstall --pkgname=libx264 --pkgversion="20140323-2245" --backup=no --deldoc=yes --fstrans=no --default

cd ../

Installing: libfdk-aac

cd mstorsjo-fdk-aac*

autoreconf -fiv

./configure --disable-shared

make

sudo checkinstall --pkgname=libfdk-aac --pkgversion="1.3" --backup=no --deldoc=yes --fstrans=no --default

cd ../

Installing: libopus

cd opus-1.1

./configure --disable-shared

make

sudo checkinstall --pkgname=libopus --pkgversion="1.1" --backup=no --deldoc=yes --fstrans=no --default

cd ../

Installing: libvpx

cd libvpx-v1.3.0

./configure --disable-examples

make

sudo checkinstall --pkgname=libvpx --pkgversion="1.3" --backup=no --deldoc=yes --fstrans=no --default

cd ../

Installing: ffmpeg

cd ffmpeg

./configure --extra-cflags="-I/usr/local/include" --extra-ldflags="-L/usr/local/lib" --extra-libs="-ldl" --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab --enable-version3 --enable-postproc --enable-avresample --enable-pic --enable-avisynth

make

sudo checkinstall --pkgname=ffmpeg --pkgversion="7:2.1" --backup=no --deldoc=yes --fstrans=no --default

cd ../

Final Adjustments

There is one thing left to do. We need to tell Linux that there are some library files located in /usr/local/lib

  1. sudo gedit /etc/ld.so.conf
  2. Add the text "/usr/local/lib" on a new line at the bottom of the document.
  3. Save changes and close gedit
  4. sudo ldconfig -v

Testing

ffmpeg -version
ffmpeg version 2.2.git
built on Mar 24 2014 15:22:19 with gcc 4.8 (Ubuntu/Linaro 4.8.1-10ubuntu9)
configuration: --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --extra-libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab --enable-version3 --enable-postproc
libavutil      52. 69.100 / 52. 69.100
libavcodec     55. 54.100 / 55. 54.100
libavformat    55. 35.100 / 55. 35.100
libavdevice    55. 11.100 / 55. 11.100
libavfilter     4.  3.100 /  4.  3.100
libswscale      2.  5.102 /  2.  5.102
libswresample   0. 18.100 /  0. 18.100
libpostproc    52.  3.100 / 52.  3.100

Success!

Un-install

To Un-install any changes made from this how-to, simply remove the packages like this:

sudo apt-get --purge remove libx264 libfdk-aac libopus libvpx ffmpeg

You may at that point re-install libav-tools if you choose to, like this:

sudo apt-get install libav-tools

End Thoughts

My larger goal is to get avxsynth to install and function. With stability. The options "--enable-avresample --enable-pic --enable-avisynth" is for ffms2 and avxsynth to work properly.

I will be posting a how to when I have got that installation ironed out correctly.

Thursday, July 9, 2009

Google Voice + Gizmo5 + Ekiga

Well this took a bit of work. I had downloaded Gizmo's linux client (didn't work with my laptop... gave up trying). Then I tried twinkle (worked with Gizmo, but had audio issues). Gave up for the night, and today I had a bit of time so I tried to get it working again.
Ekiga turned out to be the way to go.

Ekiga Settings
AFTER YOU HAVE A GIZMO ACCOUNT, here is how to set it up on Ekiga. You will need your SIP number from Gizmo (begins with 1747).
1) Cancel the wizard for the Ekiga account (unless you feel like having that in addition)
2) Go to Edit > Accounts
3) In the Accounts window that popped up, go to Accounts > Add a SIP account
4) Fill in the details below
Name: YOUR NAME
Registrar: proxy01.sipphone.com
User: YOUR 1747... Gizmo number
Authentication User: Same as User
Password: Your Gizmo password
5) Press OK. Simple as that.

Google Voice settings
1) Login to Google Voice (http://www.google.com/voice/)
2) Go to your settings (upper right corner)
3) Go to Phones
4) Add another phone
5) Fill out below
Name: Whatever name you want, I chose Gizmo5
Number: Gizmo number, drop the first 1... just 747......
Phone Type: Gizmo
6) Save

To make a call, you have to go into Google Voice. There will be a "Call" button. Enter the number to call, select your Gizmo account... and in a just a moment your Gizmo account will receive a call and you are good to go.

Now I need a more comfortable headset so this is actually a desirable way to communicate.

Tuesday, May 5, 2009

IEs4Linux in Jaunty

Ok, so I had neglected to blog what I did in Intrepid and I ran into a wrinkle remembering HOW I did it. So, here is a full list of what I did. This is on a fresh install of Ubuntu 9.04 Jaunty Jackalope.

1) Add official repository for WINE (instructions http://winehq.org/download/deb).

2) Open a terminal

user@computer:~$ sudo apt-get install wine cabextract
user@computer:~$ wget http://www.tatanka.com.br/ies4linux/downloads/ies4linux-latest.tar.gz
user@computer:~$ tar zxvf ies4linux-latest.tar.gz
user@computer:~$ cd ies4linux-*
user@computer:~$ ./ies4linux --no-gui --install-ie7


Adding the option "--no-gui" will allow it to install on Ubuntu (avoids the Python error doing it without the option). The other option "--install-ie7" creates a clone of the ie6 with the rendering engines of IE7. It is BUGGY for sure. But, I can just delete it if I need to later.

After install I add menus manually, delete the "bin" the install created in my home folder (has startup scripts, but I just created menu entries and didn't use these), delete "ies4linux-latest.tar.gz" and the extracted files located in my home folder.

Saturday, May 2, 2009

Jaunty -- pre-installation

So, I am finally have time to do my standard WIPE and FRESH INSTALL of my laptop. I use each release of Ubuntu as an opportunity to do some "house cleaning" and remove the junk programs I never used and to start off with a new experience. Here are the list of programs that are carrying over and the programs I will test out this release:

Accessories
Gnome DO
This was a late cycle addition (when they released the new Docky theme) and has supplanted AWN as my dock now. The clincher was that it could launch the Watchtower Library (just dragged it from the WINE menu entry). I tried so many different ways to get AWN to do that and it just wasn't playing nicely.

VirtualBox OSE
This has become an essential for me. I need it for a few Windows native applications that are not stable (or even usable) under WINE. This release I am going to do a different strategy though. I am going to set up the virtualbox onto an external HD. I don't use VB THAT much, so this should save some resources and when I do use it it should keep the internal HD cooler.

WINE
I install ArtRage, WTLB, IE4Linux, and Macromedia Flash MX 2004. Might play around with AofEII this time around if I get ancy for some different games.


Games
FreeCiv
GFCE
Secret Maryo Chronicles


Graphics
Inkscape
With the tablet PC, this is a great vector program. I used this guy to do some pretty interesting graphics this last release cycle. One of those programs where you have to get used to it (like GIMP) but once you get down the tools it is quite useful.

Rawstudio
With CHDK on my Canon Powershot, this program is a no brainer. Works GREAT.

Specimen Font Previewer
Nothing helps narrow down which font I want to use for a project like this baby. I have found myself loading in all the fonts I have on any system into my laptop JUST so I can use this program and narrow down which font I want for a DVD project, website, business card, etc.


Internet
Amazon MP3 Downloader
CheckGMail
eMusic Download Manager

Dropbox
This is not as stable as I would like. Hopefully it is fixed with the fresh installation. Dropbox in general is quite useful though. An auto-synced FTP site that gives you a free 2GB online storage. Nice.

FileZilla FTP - until I find a better solution
Recommendations are being sought.


Sound & Video
Audacity
Banshee
--DVD support--


That is the plan. I am going to backup my Home folder now and get ready for the project.

Tuesday, April 7, 2009

Ubuntu and IE web design

I grew tired of constantly loading a VM JUST for testing to see how the website loaded in Internet Explorer. Maybe I should back up...


Why design in Ubuntu?
I absolutely love gedit (Text Editor) in Ubuntu. The syntax highlighting, line numbers, bracket highlighting (has saved me SO many times in debugging), automatic indentation, and PLUGINS! Brilliant. It is like everything I loved in Notepad2 and then some.
Couple gedit that with the after-mastered-becomes-quite-useful GIMP with the ever increasing usefulness (I find taking a quick screenshot with the "Print Screen" button and then using the excellent rectangle select tool in GIMP to figure out what is going on with my margins is a rather quick debugging tool) and you get a taste of why I like to use Ubuntu.
It doesn't stop there of course, I adore the ability to spread my work out over a few desktops and then switch quickly between them to access my different programs and folders.
Also, the ability to setup a web server on the local machine to test code before publishing it on a live server brings peace of mind, saves a lot of bandwidth, and saves time.
Realistically, I can do all of this within Windows in a fairly timely turnaround. There are solutions for doing it all in Windows, but I just prefer Ubuntu due to it being free, open source, and constantly improving.


Where Windows shines above Ubuntu
Then here is the wrinkle in my default workstation: Internet Explorer still holds the majority of the market for web browsers. I have never liked Internet Explorer and tell people all the time to use something abstracted from their OS (Opera, Firefox, Safari, Chrome, I DON'T CARE... just get something NOT so intricately involved in your OS)... but let's face it the average computer user doesn't know any better. They just use what is on the computer to begin with.
Leaving web designers chained to comply with IE's often-frustrating habit of CREATING exclusive solutions and not COMPLYING with W3C standards.
Obviously Microsoft is not too concerned about getting a version of Internet Explorer on linux machines. They don't care. They figure they have lost that market already and the "demand" for a true IE on linux is probably restricted to EXACTLY what I need it for: web design.


Solutions:
There are basically three solutions I have been told about and have found so far. I don't count signing out of Ubuntu and using a Windows OS as a "solution" to the problem. That is more of a "I give up" scenario... and I DON'T GIVE UP that easily.

1) Virtual Machine
I have been running a VirtualBox VM of Windows XP Pro on my laptop and my desktop for the last few months. @crgwbr of KomodoKomputer also suggested this when I brought up this issue again today. Wasn't really new to me... but I appreciate the willingness to help and always like when people are so helpful and friendly.
PROS: Completely accurate, fully compliant, as bug free as IE will get
CONS: Slowish startup time, resource hog (especially tough on my laptop)

2) IEs4Linux & WINE
I already had WINE installed, so following the installation guide here I have got a nice, quick solution. Not the LATEST version of IE, but modern enough to get a quick view of how the CSS and javascript is functioning and being shown on IE. Thank you @calebhailey for this recommendation. I may write a blog about how to set this up in Intrepid... since the instructions were slightly off on the installation guide.
PROS: Light on system resources, fast, shows javascript, decently accurate
CONS: Not the most recent Internet Explorer, required a bit of setup (instructions slightly out dated)

3) BrowserShots & IE NetRenderer
@techfun gave an interesting recommendation of BrowserShots (http://browsershots.org/). I will definitely give this a try as the RANGE of web browsers it gives you snapshots for is quite impressive. Compartively less impressive, but perhaps easier to use is IE NetRenderer (a plugin for Firefox). Although the comments on the Add-on webpage is slightly concerning. Not sure if I will bother to add it onto Firefox or not...
PROS: No setup
CONS: Just provides a "screenshot" of the webpage loaded in the different browsers, no javascript support, etc


Verdict
With all of these different options, I now have a broad "solution" to work with. For strictly HTML sites, I will probably use BrowserShots. This gives me the added bonus of sending the screenshots to clients as "samples" of how their site looks on different computers and browsers. For "during producton" designs I will use IEs4Linux on one of my desktops. That way I can test and load as I work and debug. During "final runthrough" and "beta testing" I will open up my VM and use the real IE to make sure it is how I have designed it to look and behave.