<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jason L. Froebe - Tech tips and How Tos for Fellow Techies &#187; ps3</title>
	<atom:link href="http://froebe.net/blog/index.php/tag/ps3/feed/" rel="self" type="application/rss+xml" />
	<link>http://froebe.net/blog</link>
	<description>Tips &#38; Tricks for Databases (Sybase, Oracle, MySQL, PostgreSQL, SQLite), Windows, Linux, Solaris, Perl, Java, Bash and so much much more</description>
	<lastBuildDate>Sat, 07 Jan 2012 22:12:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Howto: Convert your mp3 tags (id3v2 to id3v1) so your Playstation 3 can play your MP3s!</title>
		<link>http://froebe.net/blog/2009/12/14/howto-convert-your-mp3-tags-id3v2-to-id3v1-so-your-playstation-3-can-play-your-mp3s/</link>
		<comments>http://froebe.net/blog/2009/12/14/howto-convert-your-mp3-tags-id3v2-to-id3v1-so-your-playstation-3-can-play-your-mp3s/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 22:58:26 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[conversion]]></category>
		<category><![CDATA[id3v1]]></category>
		<category><![CDATA[id3v2]]></category>
		<category><![CDATA[Linux::Inotify2]]></category>
		<category><![CDATA[mp3]]></category>
		<category><![CDATA[playstation 3]]></category>
		<category><![CDATA[POE]]></category>
		<category><![CDATA[ps3]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1154</guid>
		<description><![CDATA[Run the converter on your media server: ps3_mp3_converter.pl -d {directory} Copy your mp3 collection wherever you told ps3_mp3_converter.pl to run in. #!/usr/bin/perl use strict; use warnings; use File::Basename; use File::Find &#40;&#41;; use Getopt::Std; use Linux::Inotify2; use POE; $&#124;++; ####################################### ####################################### our @found_dirs; sub watch_add_dir &#123; &#160;my &#40;$heap_ref, $session, $dir_name&#41; = @_; &#160;$heap_ref-&#62;&#123;inotify&#125;-&#62;watch&#40;$dir_name, IN_CREATE&#124;IN_CLOSE_WRITE, $session-&#62;postback&#40;&#34;watch_hdlr&#34;&#41;&#41;; &#160;print [...]]]></description>
			<content:encoded><![CDATA[<ol>
<li>Run the converter on your media server:  ps3_mp3_converter.pl -d {directory}</li>
<li>Copy your mp3 collection wherever you told ps3_mp3_converter.pl to run in.</li>
</ol>
<div class="perl dean_ch"><span class="co1">#!/usr/bin/perl</span></p>
<p><span class="kw2">use</span> strict<span class="sy0">;</span><br />
<span class="kw2">use</span> warnings<span class="sy0">;</span></p>
<p><span class="kw2">use</span> File<span class="sy0">::</span><span class="me2">Basename</span><span class="sy0">;</span><br />
<span class="kw2">use</span> File<span class="sy0">::</span><span class="me2">Find</span> <span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw2">use</span> Getopt<span class="sy0">::</span><span class="me2">Std</span><span class="sy0">;</span><br />
<span class="kw2">use</span> Linux<span class="sy0">::</span><span class="me2">Inotify2</span><span class="sy0">;</span><br />
<span class="kw2">use</span> POE<span class="sy0">;</span></p>
<p><span class="co5">$|</span><span class="sy0">++;</span></p>
<p><span class="co1">#######################################</span><br />
<span class="co1">#######################################</span></p>
<p><span class="kw1">our</span> <span class="re0">@found_dirs</span><span class="sy0">;</span></p>
<p><span class="kw2">sub</span> watch_add_dir <span class="br0">&#123;</span><br />
&nbsp;<span class="kw1">my</span> <span class="br0">&#40;</span><span class="re0">$heap_ref</span><span class="sy0">,</span> <span class="re0">$session</span><span class="sy0">,</span> <span class="re0">$dir_name</span><span class="br0">&#41;</span> <span class="sy0">=</span> <span class="co5">@_</span><span class="sy0">;</span></p>
<p>&nbsp;<span class="re0">$heap_ref</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span>inotify<span class="br0">&#125;</span><span class="sy0">-&gt;</span><span class="me1">watch</span><span class="br0">&#40;</span><span class="re0">$dir_name</span><span class="sy0">,</span> IN_CREATE<span class="sy0">|</span>IN_CLOSE_WRITE<span class="sy0">,</span> <span class="re0">$session</span><span class="sy0">-&gt;</span><span class="me1">postback</span><span class="br0">&#40;</span><span class="st0">&quot;watch_hdlr&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp;<a href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> <span class="st0">&quot; Watching directory $dir_name<span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="kw2">sub</span> watch_hdlr <span class="br0">&#123;</span><br />
&nbsp;<span class="kw1">my</span> <span class="br0">&#40;</span><span class="re0">$heap_ref</span><span class="sy0">,</span> <span class="re0">$session</span><span class="sy0">,</span> <span class="re0">$event</span><span class="br0">&#41;</span> <span class="sy0">=</span> <span class="br0">&#40;</span> <span class="co5">$_</span><span class="br0">&#91;</span>HEAP<span class="br0">&#93;</span><span class="sy0">,</span> <span class="co5">$_</span><span class="br0">&#91;</span>SESSION<span class="br0">&#93;</span><span class="sy0">,</span> <span class="co5">$_</span><span class="br0">&#91;</span>ARG1<span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> <span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>&nbsp;<span class="kw1">my</span> <span class="re0">$name</span> <span class="sy0">=</span> <span class="re0">$event</span><span class="sy0">-&gt;</span><span class="me1">fullname</span><span class="sy0">;</span><br />
&nbsp;<span class="kw1">my</span> <span class="re0">$short_name</span> <span class="sy0">=</span> <span class="re0">$event</span><span class="sy0">-&gt;</span><span class="me1">name</span><span class="sy0">;</span></p>
<p>&nbsp;<span class="kw1">unless</span> <span class="br0">&#40;</span><span class="co5">$_</span><span class="br0">&#91;</span>HEAP<span class="br0">&#93;</span><span class="br0">&#123;</span>inotify<span class="br0">&#125;</span><span class="br0">&#123;</span>files<span class="br0">&#125;</span><span class="br0">&#123;</span><span class="re0">$name</span><span class="br0">&#125;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$event</span><span class="sy0">-&gt;</span><span class="me1">IN_CREATE</span> <span class="sy0">&amp;&amp;</span> <span class="sy0">-</span>d <span class="re0">$name</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp;<a href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> <span class="st0">&quot;New directory: $name<span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
&nbsp; &nbsp;watch_add_dir<span class="br0">&#40;</span><span class="re0">$heap_ref</span><span class="sy0">,</span> <span class="re0">$session</span><span class="sy0">,</span> <span class="re0">$name</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span> <span class="kw1">elsif</span> <span class="br0">&#40;</span><span class="re0">$event</span><span class="sy0">-&gt;</span><span class="me1">IN_CLOSE_WRITE</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp;<span class="kw1">my</span> <span class="re0">$ext</span> <span class="sy0">=</span> <span class="br0">&#40;</span> fileparse<span class="br0">&#40;</span><span class="re0">$name</span><span class="sy0">,</span> <span class="st_h">&#8216;\..*&#8217;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="sy0">;</span></p>
<p>&nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://perldoc.perl.org/functions/lc.html"><span class="kw3">lc</span></a><span class="br0">&#40;</span><span class="re0">$ext</span><span class="br0">&#41;</span> <span class="kw1">eq</span> <span class="st_h">&#8216;.mp3&#8242;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <a href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> <span class="st0">&quot;-&quot;</span>x20 <span class="sy0">.</span> <span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <a href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> <span class="st0">&quot;$name:<span class="es0">\n</span>&quot;</span><span class="sy0">;</span></p>
<p>&nbsp; &nbsp; <span class="kw1">my</span> <span class="re0">$cmd_output</span> <span class="sy0">=</span> <span class="st0">`eyeD3 &#8211;to-v1.1 &quot;$name&quot;`</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="re0">$cmd_output</span> <span class="sy0">=</span> <span class="st0">`eyeD3 &#8211;remove-v2 &quot;$name&quot;`</span><span class="sy0">;</span><br />
&nbsp; &nbsp;<span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp;<span class="co5">$_</span><span class="br0">&#91;</span>HEAP<span class="br0">&#93;</span><span class="br0">&#123;</span>inotify<span class="br0">&#125;</span><span class="br0">&#123;</span>files<span class="br0">&#125;</span><span class="br0">&#123;</span><span class="re0">$name</span><span class="br0">&#125;</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span><br />
&nbsp;<span class="br0">&#125;</span></p>
<p>&nbsp;<a href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> <span class="st0">&quot;events for $name have been lost<span class="es0">\n</span>&quot;</span> <span class="kw1">if</span> <span class="re0">$event</span><span class="sy0">-&gt;</span><span class="me1">IN_Q_OVERFLOW</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="kw2">sub</span> find_wanted <span class="br0">&#123;</span><br />
&nbsp;<span class="kw1">my</span> <span class="re0">$object</span> <span class="sy0">=</span> <span class="re0">$File</span><span class="sy0">::</span><span class="me2">Find</span><span class="sy0">::</span><span class="me2">name</span><span class="sy0">;</span></p>
<p>&nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">-</span>d <span class="re0">$object</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; <a href="http://perldoc.perl.org/functions/push.html"><span class="kw3">push</span></a> <span class="re0">@found_dirs</span><span class="sy0">,</span> <span class="re0">$object</span><span class="sy0">;</span><br />
&nbsp;<span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="co1">#######################################</span><br />
<span class="co1">#######################################</span><br />
<span class="co1">#######################################</span></p>
<p><span class="kw1">my</span> <span class="re0">%arg_options</span><span class="sy0">;</span><br />
<span class="kw1">my</span> <span class="re0">$watch_dir</span><span class="sy0">;</span></p>
<p>getopts<span class="br0">&#40;</span><span class="st_h">&#8216;d:&#8217;</span><span class="sy0">,</span> <span class="re0">\%arg_options</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$arg_options</span><span class="br0">&#123;</span>d<span class="br0">&#125;</span> <span class="sy0">&amp;&amp;</span> <span class="sy0">-</span>d <span class="re0">$arg_options</span><span class="br0">&#123;</span>d<span class="br0">&#125;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp;<span class="re0">$watch_dir</span> <span class="sy0">=</span> <span class="re0">$arg_options</span><span class="br0">&#123;</span>d<span class="br0">&#125;</span><span class="sy0">;</span><br />
&nbsp;File<span class="sy0">::</span><span class="me2">Find</span><span class="sy0">::</span><span class="me2">find</span><span class="br0">&#40;</span><span class="br0">&#123;</span>wanted <span class="sy0">=&gt;</span> <span class="re0">\&amp;find_wanted</span><span class="br0">&#125;</span><span class="sy0">,</span> <span class="re0">$watch_dir</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>&nbsp;POE<span class="sy0">::</span><span class="me2">Session</span><span class="sy0">-&gt;</span><span class="me1">create</span><br />
&nbsp; <span class="br0">&#40;</span> inline_states <span class="sy0">=&gt;</span><br />
&nbsp; &nbsp;<span class="br0">&#123;</span> _start <span class="sy0">=&gt;</span> <span class="kw2">sub</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp;<span class="kw1">my</span> <span class="re0">$inotify_FH</span><span class="sy0">;</span></p>
<p>&nbsp; &nbsp; &nbsp;<span class="co5">$_</span><span class="br0">&#91;</span>KERNEL<span class="br0">&#93;</span><span class="sy0">-&gt;</span><span class="me1">alias_set</span><span class="br0">&#40;</span><span class="st_h">&#8216;notify&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp;<span class="co5">$_</span><span class="br0">&#91;</span>HEAP<span class="br0">&#93;</span><span class="br0">&#123;</span>inotify<span class="br0">&#125;</span> <span class="sy0">=</span> <span class="kw2">new</span> Linux<span class="sy0">::</span><span class="me2">Inotify2</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">or</span> <a href="http://perldoc.perl.org/functions/die.html"><span class="kw3">die</span></a> <span class="st0">&quot;Unable to create new inotify object: $!&quot;</span><span class="sy0">;</span></p>
<p>&nbsp; &nbsp; &nbsp;<span class="kw1">foreach</span> <span class="kw1">my</span> <span class="re0">$dir</span> <span class="br0">&#40;</span><span class="re0">@found_dirs</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; watch_add_dir<span class="br0">&#40;</span><span class="co5">$_</span><span class="br0">&#91;</span>HEAP<span class="br0">&#93;</span><span class="sy0">,</span> <span class="co5">$_</span><span class="br0">&#91;</span>SESSION<span class="br0">&#93;</span><span class="sy0">,</span> <span class="re0">$dir</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp;<span class="co5">$_</span><span class="br0">&#91;</span>HEAP<span class="br0">&#93;</span><span class="br0">&#123;</span>inotify<span class="br0">&#125;</span><span class="br0">&#123;</span>files<span class="br0">&#125;</span> <span class="sy0">=</span> <span class="br0">&#123;</span><span class="br0">&#125;</span><span class="sy0">;</span></p>
<p>&nbsp; &nbsp; &nbsp;<a href="http://perldoc.perl.org/functions/open.html"><span class="kw3">open</span></a> <span class="re0">$inotify_FH</span><span class="sy0">,</span> <span class="st0">&quot;&lt; &amp;=&quot;</span> <span class="sy0">.</span> <span class="co5">$_</span><span class="br0">&#91;</span>HEAP<span class="br0">&#93;</span><span class="br0">&#123;</span>inotify<span class="br0">&#125;</span><span class="sy0">-&gt;</span><span class="me1">fileno</span><br />
&nbsp; &nbsp; &nbsp;<span class="kw1">or</span> <a href="http://perldoc.perl.org/functions/die.html"><span class="kw3">die</span></a> <span class="st0">&quot;Can’t fdopen: $!<span class="es0">\n</span>&quot;</span><span class="sy0">;</span></p>
<p>&nbsp; &nbsp; &nbsp;<span class="co5">$_</span><span class="br0">&#91;</span>KERNEL<span class="br0">&#93;</span><span class="sy0">-&gt;</span><span class="me1">select_read</span><span class="br0">&#40;</span> <span class="re0">$inotify_FH</span><span class="sy0">,</span> <span class="st0">&quot;inotify_poll&quot;</span> <span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp;<span class="br0">&#125;</span><span class="sy0">,</span><br />
&nbsp; &nbsp;inotify_poll <span class="sy0">=&gt;</span> <span class="kw2">sub</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="co5">$_</span><span class="br0">&#91;</span>HEAP<span class="br0">&#93;</span><span class="br0">&#123;</span>inotify<span class="br0">&#125;</span><span class="sy0">-&gt;</span><span class="me1">poll</span><span class="sy0">;</span><br />
&nbsp; &nbsp;<span class="br0">&#125;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; watch_hdlr <span class="sy0">=&gt;</span> <span class="re0">\&amp;watch_hdlr</span><span class="sy0">,</span><br />
&nbsp; &nbsp;<span class="br0">&#125;</span><span class="sy0">,</span><br />
&nbsp;<span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>&nbsp;POE<span class="sy0">::</span><span class="me2">Kernel</span><span class="sy0">-&gt;</span><span class="me1">run</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p><a href="http://perldoc.perl.org/functions/exit.html"><span class="kw3">exit</span></a> <span class="nu0">0</span><span class="sy0">;</span></div>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2009/12/14/howto-convert-your-mp3-tags-id3v2-to-id3v1-so-your-playstation-3-can-play-your-mp3s/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Howto convert an entire directory of videos to play on your Sony Playstation 3 using ffmpeg</title>
		<link>http://froebe.net/blog/2009/09/23/howto-convert-an-entire-directory-of-videos-to-play-on-your-sony-playstation-3-using-ffmpeg/</link>
		<comments>http://froebe.net/blog/2009/09/23/howto-convert-an-entire-directory-of-videos-to-play-on-your-sony-playstation-3-using-ffmpeg/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 14:16:00 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[aac]]></category>
		<category><![CDATA[blackberry]]></category>
		<category><![CDATA[checkinstall]]></category>
		<category><![CDATA[convert]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[libxvid]]></category>
		<category><![CDATA[mediatomb]]></category>
		<category><![CDATA[mp4]]></category>
		<category><![CDATA[mpeg4]]></category>
		<category><![CDATA[pearl]]></category>
		<category><![CDATA[ps3]]></category>
		<category><![CDATA[sony]]></category>
		<category><![CDATA[sony playstation 3]]></category>
		<category><![CDATA[storm]]></category>
		<category><![CDATA[transcode]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[x264]]></category>
		<category><![CDATA[xvid]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1127</guid>
		<description><![CDATA[I think a lot of people have been struggling with mass converting of videos for the ps3&#8230; I&#8217;ve been searching for a way to mass convert my videos (mostly podcasts) to play on my Sony PlayStation 3 over the wire with Mediatomb.  For a long time I&#8217;ve been using a hodpodge of mp4box and mencoder [...]]]></description>
			<content:encoded><![CDATA[<p>I think a lot of people have been struggling with mass converting of videos for the ps3&#8230;<br />
I&#8217;ve been searching for a way to mass convert my videos (mostly podcasts) to play on my <a href="http://www.amazon.com/gp/product/B002I0J4VQ?ie=UTF8&amp;tag=froebe-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B002I0J4VQ">Sony PlayStation 3</a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=froebe-20&amp;l=as2&amp;o=1&amp;a=B002I0J4VQ" border="0" alt="" width="1" height="1" /> over the wire with <a href="http://mediatomb.cc/">Mediatomb</a>.  For a long time I&#8217;ve been using a hodpodge of <a href="http://gpac.sourceforge.net/">mp4box</a> and <a href="http://www.mplayerhq.hu">mencoder</a> to convert the videos.  The problem was that mp4box more often then not would crash or get stuck in a loop where it fills up a 1TB harddrive converting a 20mb file.  There had to be a better way.</p>
<p>If your ffmpeg doesn&#8217;t support x264 (video) or aac (audio) encoding, like all Ubuntu Linux distributions, then you will have to recompile ffmpeg.  Don&#8217;t worry, it is easier then you think!</p>
<p><a href="http://ubuntuforums.org/member.php?u=162846">FakeOutdoorsman</a> over on the Ubuntu Forums posted the method to <a href="http://ubuntuforums.org/showthread.php?t=7860j95">build ffmpeg from scratch</a>:</p>
<blockquote><p>
<strong>Choose your Ubuntu</strong></p>
<p>0.The instructions on the page are for Ubuntu Jaunty Jackalope 9.04 and Ubuntu Intrepid Ibex 8.10. Separate instructions are also available for other releases:</p>
<p>    * Install FFmpeg and x264 on Ubuntu Hardy Heron 8.04 LTS<br />
    * Install FFmpeg and x264 on Ubuntu Dapper Drake 6.06 LTS</p>
<p><strong>Getting the Dependencies</strong></p>
<p>1. Uninstall x264, libx264-dev, and ffmpeg if they are already installed. Open a terminal and run the following:</p>
<div class="bash dean_ch"><span class="kw2">sudo</span> <span class="kw2">apt-get</span> purge <span class="kw2">ffmpeg</span> x264 libx264-dev</div>
<p>2. Next, get all of the packages you will need to install FFmpeg and x264 (you may need to enable the universe and multiverse repositories):</p>
<p>Code:</p>
<div class="bash dean_ch"><span class="kw2">sudo</span> <span class="kw2">apt-get</span> update<br />
<span class="kw2">sudo</span> <span class="kw2">apt-get</span> <span class="kw2">install</span> build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libfaad-dev libmp3lame-dev libsdl1.2-dev libtheora-dev libx11-dev libxvidcore4-dev zlib1g-dev</div>
<p><strong>Install x264</strong><br />
3. Get the most current source files from the official x264 git repository, compile, and install. You can run &#8220;./configure &#8211;help&#8221; to see what features you can enable/disable. If you are behind a firewall or unable to use git, then daily source tarballs are also available.</p>
<div class="bash dean_ch"><span class="kw3">cd</span><br />
<span class="kw2">git</span> clone <span class="kw2">git</span>:<span class="sy0">//</span>git.videolan.org<span class="sy0">/</span>x264.git<br />
<span class="kw3">cd</span> x264<br />
.<span class="sy0">/</span>configure<br />
<span class="kw2">make</span><br />
<span class="kw2">sudo</span> checkinstall <span class="re5">&#8211;fstrans</span>=no <span class="re5">&#8211;install</span>=<span class="kw2">yes</span> <span class="re5">&#8211;pkgname</span>=x264 <span class="re5">&#8211;pkgversion</span> <span class="st0">&quot;1:0.svn<span class="es5">`date +%Y%m%d`</span>-0.0ubuntu1&quot;</span> <span class="re5">&#8211;default</span></div>
<p><strong>Install FFmpeg</strong><br />
4. Get the most current source files from the official FFmpeg svn, compile, and install. Run &#8220;./configure &#8211;help&#8221; to see what features you can enable/disable. If you are behind a firewall or unable to use subversion, then nightly FFmpeg snapshots are also available.</p>
<div class="bash dean_ch"><span class="kw3">cd</span><br />
<span class="kw2">svn</span> checkout <span class="kw2">svn</span>:<span class="sy0">//</span>svn.ffmpeg.org<span class="sy0">/</span>ffmpeg<span class="sy0">/</span>trunk <span class="kw2">ffmpeg</span><br />
<span class="kw3">cd</span> <span class="kw2">ffmpeg</span><br />
.<span class="sy0">/</span>configure <span class="re5">&#8211;enable-gpl</span> <span class="re5">&#8211;enable-nonfree</span> <span class="re5">&#8211;enable-pthreads</span> <span class="re5">&#8211;enable-libfaac</span> <span class="re5">&#8211;enable-libfaad</span> <span class="re5">&#8211;enable-libmp3lame</span> <span class="re5">&#8211;enable-libtheora</span> <span class="re5">&#8211;enable-libx264</span> <span class="re5">&#8211;enable-libxvid</span> <span class="re5">&#8211;enable-x11grab</span><br />
<span class="kw2">make</span><br />
<span class="kw2">sudo</span> checkinstall <span class="re5">&#8211;fstrans</span>=no <span class="re5">&#8211;install</span>=<span class="kw2">yes</span> <span class="re5">&#8211;pkgname</span>=<span class="kw2">ffmpeg</span> <span class="re5">&#8211;pkgversion</span> <span class="st0">&quot;3:0.svn<span class="es5">`date +%Y%m%d`</span>-12ubuntu3&quot;</span> <span class="re5">&#8211;default</span> </div>
<p>That&#8217;s it for installation. You can keep the ~/x264 and ~/ffmpeg directories if you later want to update the source files to a new revision. See &#8220;Updating Your Installation&#8221; below for more details.</p></blockquote>
<p>Now that we have a working ffmpeg, we can go on to the converting the video files (<a href='http://froebe.net/blog/wp-content/uploads/2009/10/convert_videos.sh'>convert_videos.sh</a>):</p>
<div class="bash dean_ch"><span class="co0">#!/bin/bash</span></p>
<p><span class="kw1">function</span> print_usage <span class="br0">&#123;</span><br />
&nbsp; <span class="kw3">echo</span> <span class="st0">&quot;=============================================================================================&quot;</span><br />
&nbsp; <span class="kw3">echo</span> <span class="st0">&quot; &nbsp; &nbsp; &nbsp; &nbsp;convert_videos.sh [file|directory] [output directory] {bb|bb_storm|ps3} {file prefix}&quot;</span> <br />
&nbsp; <span class="kw3">echo</span> <span class="st0">&quot;=============================================================================================&quot;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="kw1">function</span> verify_file <span class="br0">&#123;</span><br />
&nbsp; <span class="kw3">echo</span> j<br />
<span class="br0">&#125;</span></p>
<p><span class="kw1">function</span> process_file <span class="br0">&#123;</span><br />
&nbsp; <span class="re2">ORIG_FILE</span>=<span class="st0">&quot;$1&quot;</span><br />
&nbsp; <span class="re2">DEST_DIR</span>=<span class="st0">&quot;$2&quot;</span></p>
<p>&nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="re5">-z</span> <span class="co1">${BLACKBERRY}</span> <span class="br0">&#93;</span><span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; <span class="re2">DEST_FILE</span>=<span class="co1">${DEST_DIR}</span><span class="sy0">/</span><span class="co1">${FILE_PREFIX}</span>$<span class="br0">&#40;</span> <span class="kw2">basename</span> <span class="st0">&quot;<span class="es3">${ORIG_FILE}</span>&quot;</span> <span class="sy0">|</span> <span class="kw2">perl</span> <span class="re5">-ne</span> <span class="st_h">&#8216;s/\.(?:[a-z,A-Z,0-9]{3,4})$/\.mp4/; print $_&#8217;</span> <span class="br0">&#41;</span><br />
&nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; <span class="re2">DEST_FILE</span>=<span class="co1">${DEST_DIR}</span><span class="sy0">/</span><span class="co1">${FILE_PREFIX}</span>$<span class="br0">&#40;</span> <span class="kw2">basename</span> <span class="st0">&quot;<span class="es3">${ORIG_FILE}</span>&quot;</span> <span class="sy0">|</span> <span class="kw2">perl</span> <span class="re5">-ne</span> <span class="st_h">&#8216;s/\.(?:[a-z,A-Z,0-9]{3,4})$/_bb\.mp4/; print $_&#8217;</span> <span class="br0">&#41;</span><br />
&nbsp; <span class="kw1">fi</span></p>
<p>&nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="re5">-f</span> <span class="st0">&quot;<span class="es3">${DEST_FILE}</span>&quot;</span> <span class="br0">&#93;</span><span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot; &nbsp; &nbsp;We already processed <span class="es1">\&quot;</span><span class="es3">${ORIG_FILE}</span><span class="es1">\&quot;</span> &#8230; skipping&quot;</span><br />
&nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; <span class="re2">VID_INFO_FPS</span>=$<span class="br0">&#40;</span> <span class="kw2">mplayer</span> <span class="re5">-identify</span> <span class="re5">-nosound</span> <span class="re5">-vo</span> null <span class="re5">-nocache</span> <span class="re5">-really-quiet</span> <span class="re5">-frames</span> <span class="nu0">1</span> <span class="st0">&quot;<span class="es3">${ORIG_FILE}</span>&quot;</span> <span class="nu0">2</span><span class="sy0">&gt;/</span>dev<span class="sy0">/</span>null <span class="sy0">|</span> <span class="kw2">grep</span> FPS <span class="br0">&#41;</span> <br />
&nbsp; &nbsp; <span class="re2">VID_INFO_FPS</span>=<span class="co1">${VID_INFO_FPS#*=}</span><br />
&nbsp; &nbsp; <span class="re2">VID_INFO_WIDTH</span>=$<span class="br0">&#40;</span> <span class="kw2">mplayer</span> <span class="re5">-identify</span> <span class="re5">-nosound</span> <span class="re5">-vo</span> null <span class="re5">-nocache</span> <span class="re5">-really-quiet</span> <span class="re5">-frames</span> <span class="nu0">1</span> <span class="st0">&quot;<span class="es3">${ORIG_FILE}</span>&quot;</span> <span class="nu0">2</span><span class="sy0">&gt;/</span>dev<span class="sy0">/</span>null <span class="sy0">|</span> <span class="kw2">grep</span> WIDTH <span class="br0">&#41;</span> <br />
&nbsp; &nbsp; <span class="re2">VID_INFO_WIDTH</span>=<span class="co1">${VID_INFO_WIDTH##*=}</span><br />
&nbsp; &nbsp; <span class="re2">VID_INFO_HEIGHT</span>=$<span class="br0">&#40;</span> <span class="kw2">mplayer</span> <span class="re5">-identify</span> <span class="re5">-nosound</span> <span class="re5">-vo</span> null <span class="re5">-nocache</span> <span class="re5">-really-quiet</span> <span class="re5">-frames</span> <span class="nu0">1</span> <span class="st0">&quot;<span class="es3">${ORIG_FILE}</span>&quot;</span> <span class="nu0">2</span><span class="sy0">&gt;/</span>dev<span class="sy0">/</span>null <span class="sy0">|</span> <span class="kw2">grep</span> HEIGHT <span class="br0">&#41;</span> <br />
&nbsp; &nbsp; <span class="re2">VID_INFO_HEIGHT</span>=<span class="co1">${VID_INFO_HEIGHT##*=}</span><br />
&nbsp; &nbsp; <span class="re2">VID_INFO_ASPECT</span>=$<span class="br0">&#40;</span> <span class="kw2">mplayer</span> <span class="re5">-identify</span> <span class="re5">-nosound</span> <span class="re5">-vo</span> null <span class="re5">-nocache</span> <span class="re5">-really-quiet</span> <span class="re5">-frames</span> <span class="nu0">1</span> <span class="st0">&quot;<span class="es3">${ORIG_FILE}</span>&quot;</span> <span class="nu0">2</span><span class="sy0">&gt;/</span>dev<span class="sy0">/</span>null <span class="sy0">|</span> <span class="kw2">grep</span> ASPECT <span class="br0">&#41;</span> <br />
&nbsp; &nbsp; <span class="re2">VID_INFO_ASPECT</span>=<span class="co1">${VID_INFO_ASPECT##*=}</span></p>
<p>&nbsp; &nbsp; <span class="re2">AUD_INFO_FORMAT</span>=$<span class="br0">&#40;</span> <span class="kw2">mplayer</span> <span class="re5">-identify</span> <span class="re5">-ao</span> null <span class="re5">-vo</span> null <span class="re5">-nocache</span> <span class="re5">-really-quiet</span> <span class="re5">-frames</span> <span class="nu0">1</span> <span class="st0">&quot;<span class="es3">${ORIG_FILE}</span>&quot;</span> <span class="nu0">2</span><span class="sy0">&gt;/</span>dev<span class="sy0">/</span>null <span class="sy0">|</span> <span class="kw2">grep</span> AUDIO_FORMAT <span class="br0">&#41;</span> <br />
&nbsp; &nbsp; <span class="re2">AUD_INFO_FORMAT</span>=<span class="co1">${AUD_INFO_FORMAT##*=}</span><br />
&nbsp; &nbsp; <span class="re2">AUD_INFO_CHANNELS</span>=$<span class="br0">&#40;</span> <span class="kw2">mplayer</span> <span class="re5">-identify</span> <span class="re5">-ao</span> null <span class="re5">-vo</span> null <span class="re5">-nocache</span> <span class="re5">-really-quiet</span> <span class="re5">-frames</span> <span class="nu0">1</span> <span class="st0">&quot;<span class="es3">${ORIG_FILE}</span>&quot;</span> <span class="nu0">2</span><span class="sy0">&gt;/</span>dev<span class="sy0">/</span>null <span class="sy0">|</span> <span class="kw2">grep</span> AUDIO_NCH <span class="br0">&#41;</span> <br />
&nbsp; &nbsp; <span class="re2">AUD_INFO_CHANNELS</span>=<span class="co1">${AUD_INFO_CHANNELS##*=}</span><br />
&nbsp; &nbsp; <span class="re2">AUD_INFO_BITRATE</span>=$<span class="br0">&#40;</span> <span class="kw2">mplayer</span> <span class="re5">-identify</span> <span class="re5">-ao</span> null <span class="re5">-vo</span> null <span class="re5">-nocache</span> <span class="re5">-really-quiet</span> <span class="re5">-frames</span> <span class="nu0">1</span> <span class="st0">&quot;<span class="es3">${ORIG_FILE}</span>&quot;</span> <span class="nu0">2</span><span class="sy0">&gt;/</span>dev<span class="sy0">/</span>null <span class="sy0">|</span> <span class="kw2">grep</span> ID_AUDIO_BITRATE <span class="br0">&#41;</span> <br />
&nbsp; &nbsp; <span class="re2">AUD_INFO_BITRATE</span>=<span class="co1">${AUD_INFO_BITRATE##*=}</span></p>
<p>&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span> <span class="co1">${AUD_INFO_BITRATE}</span> <span class="sy0">&lt;</span> <span class="nu0">163840</span> <span class="br0">&#41;</span><span class="br0">&#41;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; <span class="re2">AUD_INFO_BITRATE</span>=<span class="nu0">160</span><br />
&nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; <span class="re2">AUD_INFO_BITRATE</span>=$<span class="br0">&#40;</span> <span class="kw2">expr</span> <span class="co1">${AUD_INFO_BITRATE}</span> <span class="sy0">/</span> <span class="nu0">1024</span> <span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="kw1">fi</span></p>
<p>&nbsp; &nbsp; <span class="co0">###############</span><br />
&nbsp; &nbsp; <span class="co0"># &nbsp;We need to make the frame rate an acceptible amoun</span><br />
&nbsp; &nbsp; <span class="co0">###############</span><br />
&nbsp; &nbsp; <span class="kw1">case</span> <span class="co1">${VID_INFO_FPS}</span> <span class="kw1">in</span><br />
&nbsp; &nbsp; &nbsp; <span class="nu0">60.000</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># HD</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">VID_INFO_FPS</span>=<span class="nu0">59.94</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; <span class="nu0">30.000</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># NTSC</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">VID_INFO_FPS</span>=<span class="nu0">29.97</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; <span class="nu0">24.000</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># PAL</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">VID_INFO_FPS</span>=<span class="nu0">23.97</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; <span class="kw1">esac</span> </p>
<p>&nbsp; &nbsp; <span class="co0">###############</span><br />
&nbsp; &nbsp; <span class="co0"># &nbsp;We need to make the video resolution a multiple of 16 for it to be properly compressed</span><br />
&nbsp; &nbsp; <span class="co0">###############</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span> <span class="co1">${VID_INFO_HEIGHT}</span> <span class="sy0">%</span> <span class="nu0">16</span> <span class="br0">&#41;</span><span class="br0">&#41;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; <span class="re2">VID_BORDER_VERTICAL</span>=$<span class="br0">&#40;</span> <span class="kw2">expr</span> <span class="nu0">16</span> &#8211; <span class="co1">${VID_INFO_HEIGHT}</span> <span class="sy0">%</span> <span class="nu0">16</span> <span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; <span class="re2">VID_BORDER_VERTICAL</span>=$<span class="br0">&#40;</span> <span class="kw2">expr</span> <span class="co1">${VID_BORDER_VERTICAL}</span> <span class="sy0">/</span> <span class="nu0">2</span> <span class="br0">&#41;</span></p>
<p>&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span> <span class="co1">${VID_BORDER_VERTICAL}</span> <span class="sy0">%</span> <span class="nu0">2</span> <span class="br0">&#41;</span><span class="br0">&#41;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">let</span> VID_BORDER_VERTICAL_TOP+=$<span class="br0">&#40;</span> <span class="kw2">expr</span> <span class="co1">${VID_BORDER_VERTICAL}</span> &#8211; <span class="nu0">1</span> <span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">let</span> VID_BORDER_VERTICAL_BOTTOM+=$<span class="br0">&#40;</span> <span class="kw2">expr</span> <span class="co1">${VID_BORDER_VERTICAL}</span> + <span class="nu0">1</span> <span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">VID_BORDER_VERTICAL_TOP</span>=<span class="co1">${VID_BORDER_VERTICAL}</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">VID_BORDER_VERTICAL_BOTTOM</span>=<span class="co1">${VID_BORDER_VERTICAL}</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">fi</span><br />
&nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; <span class="re2">VID_BORDER_VERTICAL_TOP</span>=<span class="nu0">0</span><br />
&nbsp; &nbsp; &nbsp; <span class="re2">VID_BORDER_VERTICAL_BOTTOM</span>=<span class="nu0">0</span><br />
&nbsp; &nbsp; <span class="kw1">fi</span><br />
&nbsp;<br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span> <span class="co1">${VID_INFO_WIDTH}</span> <span class="sy0">%</span> <span class="nu0">16</span> <span class="br0">&#41;</span><span class="br0">&#41;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; <span class="re2">VID_BORDER_HORIZONTAL</span>=$<span class="br0">&#40;</span> <span class="nu0">16</span> &#8211; <span class="co1">${VID_INFO_WIDTH}</span> <span class="sy0">%</span> <span class="nu0">16</span> <span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; <span class="re2">VID_BORDER_HORIZONTAL</span>=$<span class="br0">&#40;</span> <span class="co1">${VID_INFO_WIDTH}</span> <span class="sy0">/</span> <span class="nu0">2</span> <span class="br0">&#41;</span></p>
<p>&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span> <span class="co1">${VID_BORDER_HORIZONTAL}</span> <span class="sy0">%</span> <span class="nu0">2</span> <span class="br0">&#41;</span><span class="br0">&#41;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">let</span> VID_BORDER_HORIZONTAL_RIGHT+=$<span class="br0">&#40;</span> <span class="kw2">expr</span> <span class="co1">${VID_BORDER_HORIZONTAL}</span> + <span class="nu0">1</span> <span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">let</span> VID_BORDER_HORIZONTAL_LEFT+=$<span class="br0">&#40;</span> <span class="kw2">expr</span> <span class="co1">${VID_BORDER_HORIZONTAL}</span> &#8211; <span class="nu0">1</span> <span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">VID_BORDER_HORIZONTAL_RIGHT</span>=<span class="co1">${VID_BORDER_HORIZONTAL}</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">VID_BORDER_HORIZONTAL_LEFT</span>=<span class="co1">${VID_BORDER_HORIZONTAL}</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">fi</span><br />
&nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; <span class="re2">VID_BORDER_HORIZONTAL_LEFT</span>=<span class="nu0">0</span><br />
&nbsp; &nbsp; &nbsp; <span class="re2">VID_BORDER_HORIZONTAL_RIGHT</span>=<span class="nu0">0</span><br />
&nbsp; &nbsp; <span class="kw1">fi</span></p>
<p>&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="re5">-z</span> <span class="co1">${VID_INFO_ASPECT}</span> <span class="br0">&#93;</span><span class="br0">&#93;</span> <span class="sy0">||</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="co1">${VID_INFO_ASPECT}</span> == <span class="st0">&quot;0.0000&quot;</span> <span class="br0">&#93;</span><span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; <span class="re2">VID_INFO_ASPECT</span>=<span class="st0">&quot;16:9&quot;</span><br />
&nbsp; &nbsp; <span class="kw1">fi</span></p>
<p>&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="re5">-z</span> <span class="co1">${AUD_INFO_CHANNELS}</span> <span class="br0">&#93;</span><span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; <span class="re2">AUD_INFO_CHANNELS</span>=<span class="nu0">2</span><br />
&nbsp; &nbsp; <span class="kw1">fi</span></p>
<p>
&nbsp; &nbsp; <span class="co0">##############</span><br />
&nbsp; &nbsp; <span class="co0"># If we&#8217;re not converting for the blackberry, perform a normal conversion </span><br />
&nbsp; &nbsp; <span class="co0">##############</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="re5">-z</span> <span class="co1">${BLACKBERRY}</span> <span class="br0">&#93;</span><span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; <span class="re2">VID_INFO_RESOLUTION</span>=<span class="st0">&quot;<span class="es3">${VID_INFO_WIDTH}</span>x<span class="es3">${VID_INFO_HEIGHT}</span>&quot;</span></p>
<p>&nbsp; &nbsp; &nbsp; convert_file_first_pass </p>
<p>&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="sy0">!</span> <span class="re5">-z</span> <span class="co1">${FIRST_PASS_BITRATE}</span> <span class="br0">&#93;</span><span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">BITRATE</span>=<span class="co1">${FIRST_PASS_BITRATE}</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">fi</span><br />
&nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; <span class="co0">############</span><br />
&nbsp; &nbsp; &nbsp; <span class="co0"># if we have a blackberry, set the resolution appropriately</span><br />
&nbsp; &nbsp; &nbsp; <span class="co0">############</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="co1">${BB_TYPE}</span> <span class="kw1">in</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; STORM<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">VID_INFO_RESOLUTION</span>=<span class="st0">&quot;480&#215;360&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">*</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">VID_INFO_RESOLUTION</span>=<span class="st0">&quot;240&#215;180&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">esac</span><br />
&nbsp; &nbsp; <span class="kw1">fi</span></p>
<p>&nbsp; &nbsp; convert_file_second_pass <br />
&nbsp; <span class="kw1">fi</span><br />
<span class="br0">&#125;</span></p>
<p><span class="kw1">function</span> process_directory <span class="br0">&#123;</span><br />
&nbsp;<span class="re2">ORIG_VIDEO_DIR</span>=<span class="st0">&quot;$1&quot;</span><br />
&nbsp;<span class="re2">DEST_VIDEO_DIR</span>=<span class="st0">&quot;$2&quot;</span></p>
<p>&nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="re5">-d</span> <span class="st0">&quot;<span class="es3">${ORIG_VIDEO_DIR}</span>&quot;</span> <span class="br0">&#93;</span><span class="br0">&#93;</span> <span class="sy0">&amp;&amp;</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="re5">-d</span> <span class="st0">&quot;<span class="es3">${DEST_VIDEO_DIR}</span>&quot;</span> <span class="br0">&#93;</span><span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; <span class="re2">IFS</span>=$<span class="st_h">&#8216;\n&#8217;</span></p>
<p>&nbsp; &nbsp; <span class="kw1">for</span> ORIG_VIDEO_FILE <span class="kw1">in</span> $<span class="br0">&#40;</span> <span class="kw2">find</span> <span class="st0">&quot;<span class="es3">${ORIG_VIDEO_DIR}</span>&quot;</span> <span class="re5">-depth</span> <span class="re5">-maxdepth</span> <span class="nu0">1</span> <span class="re5">-type</span> f <span class="re5">-readable</span> <span class="re5">-iregex</span> <span class="st_h">&#8216;.*\.\(3gp\|3g2\|avi\|divx\|flv\|m4v\|mj2\|mov\|mp1\|mp2\|mp4\|mpe\|mpeg\|mpeg4\|mpg\|mkv\|mv\|ogm\|rm\|rmvb\|rv\|qt\|wmv\)&#8217;</span> <span class="br0">&#41;</span>; <span class="kw1">do</span><br />
&nbsp; &nbsp; &nbsp; process_file <span class="st0">&quot;<span class="es3">${ORIG_VIDEO_FILE}</span>&quot;</span> <span class="st0">&quot;<span class="es3">${DEST_VIDEO_DIR}</span>&quot;</span><br />
&nbsp; &nbsp; <span class="kw1">done</span><br />
&nbsp; <span class="kw1">fi</span> <br />
<span class="br0">&#125;</span></p>
<p><span class="kw1">function</span> convert_file_first_pass <span class="br0">&#123;</span><br />
&nbsp; <span class="kw3">echo</span> <span class="st0">&quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot;</span><br />
&nbsp; <span class="kw3">echo</span> <span class="st0">&quot; &nbsp; First pass: <span class="es3">${ORIG_FILE}</span>&quot;</span><br />
&nbsp; <span class="kw3">echo</span> <span class="st0">&quot;ffmpeg -i <span class="es1">\&quot;</span><span class="es3">${ORIG_FILE}</span><span class="es1">\&quot;</span> -an -pass 1 <span class="es1">\<br />
</span> &nbsp; &nbsp;-vcodec libx264 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 <span class="es1">\<br />
</span> &nbsp; &nbsp;-me_method epzs -subq 1 -trellis 0 -refs 1 -bf 3 -b_strategy 1 -level 31 -coder 1 -me_range 16 -g 250 -keyint_min 25 <span class="es1">\<br />
</span> &nbsp; &nbsp;-sc_threshold 40 -i_qfactor 0.71 -bt 200kb -rc_eq &#8216;blurCplx^(1-qComp)&#8217; -qcomp 0.6 -qmin 1 -qmax 51 -qdiff 4 <span class="es1">\<br />
</span> &nbsp; &nbsp;-padtop <span class="es3">${VID_BORDER_VERTICAL_TOP}</span> -padbottom <span class="es3">${VID_BORDER_VERTICAL_BOTTOM}</span> <span class="es1">\<br />
</span> &nbsp; &nbsp;-padleft <span class="es3">${VID_BORDER_HORIZONTAL_LEFT}</span> -padright <span class="es3">${VID_BORDER_HORIZONTAL_RIGHT}</span> <span class="es1">\<br />
</span> &nbsp; &nbsp;-threads 2 <span class="es1">\<br />
</span> &nbsp; &nbsp;-s <span class="es3">${VID_INFO_RESOLUTION}</span> -aspect <span class="es3">${VID_INFO_ASPECT}</span> -f rawvideo -y /dev/null&quot;</span> </p>
<p>&nbsp; <span class="kw2">ffmpeg</span> <span class="re5">-i</span> <span class="st0">&quot;<span class="es3">${ORIG_FILE}</span>&quot;</span> <span class="re5">-an</span> <span class="re5">-pass</span> <span class="nu0">1</span> \<br />
&nbsp; &nbsp; <span class="re5">-vcodec</span> libx264 <span class="re5">-flags</span> +loop <span class="re5">-cmp</span> +chroma <span class="re5">-partitions</span> +parti4x4+partp8x8+partb8x8 \<br />
&nbsp; &nbsp; -me_method epzs <span class="re5">-subq</span> <span class="nu0">1</span> <span class="re5">-trellis</span> <span class="nu0">0</span> <span class="re5">-refs</span> <span class="nu0">1</span> <span class="re5">-bf</span> <span class="nu0">3</span> -b_strategy <span class="nu0">1</span> <span class="re5">-level</span> <span class="nu0">31</span> <span class="re5">-coder</span> <span class="nu0">1</span> -me_range <span class="nu0">16</span> <span class="re5">-g</span> <span class="nu0">250</span> -keyint_min <span class="nu0">250</span> \<br />
&nbsp; &nbsp; -sc_threshold <span class="nu0">40</span> -i_qfactor <span class="nu0">0.71</span> <span class="re5">-bt</span> 200kb -rc_eq <span class="st_h">&#8216;blurCplx^(1-qComp)&#8217;</span> <span class="re5">-qcomp</span> <span class="nu0">0.6</span> <span class="re5">-qmin</span> <span class="nu0">1</span> <span class="re5">-qmax</span> <span class="nu0">51</span> <span class="re5">-qdiff</span> <span class="nu0">4</span> \<br />
&nbsp; &nbsp; <span class="re5">-padtop</span> <span class="co1">${VID_BORDER_VERTICAL_TOP}</span> <span class="re5">-padbottom</span> <span class="co1">${VID_BORDER_VERTICAL_BOTTOM}</span> \<br />
&nbsp; &nbsp; <span class="re5">-padleft</span> <span class="co1">${VID_BORDER_HORIZONTAL_LEFT}</span> <span class="re5">-padright</span> <span class="co1">${VID_BORDER_HORIZONTAL_RIGHT}</span> \<br />
&nbsp; &nbsp; <span class="re5">-threads</span> <span class="nu0">2</span> \<br />
&nbsp; &nbsp; <span class="re5">-s</span> <span class="co1">${VID_INFO_RESOLUTION}</span> <span class="re5">-aspect</span> <span class="co1">${VID_INFO_ASPECT}</span> <span class="re5">-f</span> rawvideo <span class="re5">-y</span> <span class="sy0">/</span>dev<span class="sy0">/</span>null <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span> <span class="sy0">|</span> <span class="kw2">tee</span> pass2.out</p>
<p>&nbsp; <span class="re2">BITRATE</span>=$<span class="br0">&#40;</span> <span class="kw2">grep</span> <span class="re5">-e</span> <span class="st0">&quot;\[libx264.*kb\/s&quot;</span> pass2.out <span class="br0">&#41;</span><br />
&nbsp; <span class="re2">BITRATE</span>=<span class="co1">${BITRATE##*:}</span><br />
&nbsp; <span class="re2">BITRATE</span>=<span class="co1">${BITRATE/.*}</span></p>
<p>&nbsp; <span class="kw3">echo</span> <span class="st0">&quot;average first pass bitrate: <span class="es3">${BITRATE}</span>&quot;</span></p>
<p>&nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="re5">-n</span> <span class="co1">${BITRATE}</span> <span class="br0">&#93;</span><span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span> <span class="co1">${BITRATE}</span> <span class="sy0">%</span> <span class="nu0">16</span> <span class="br0">&#41;</span><span class="br0">&#41;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">let</span> BITRATE+=$<span class="br0">&#40;</span> <span class="kw2">expr</span> <span class="co1">${BITRATE}</span> <span class="sy0">%</span> <span class="nu0">16</span> <span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="kw1">fi</span><br />
&nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span> <span class="co1">${VID_INFO_WIDTH}</span> <span class="sy0">&gt;</span> <span class="nu0">1024</span> <span class="br0">&#41;</span><span class="br0">&#41;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span class="re2">BITRATE</span>=<span class="nu0">15360</span><br />
&nbsp; &nbsp; <span class="kw1">elif</span> <span class="br0">&#40;</span><span class="br0">&#40;</span> <span class="co1">${VID_INFO_WIDTH}</span> <span class="sy0">&gt;</span> <span class="nu0">900</span> <span class="br0">&#41;</span><span class="br0">&#41;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span class="re2">BITRATE</span>=<span class="nu0">10240</span> <br />
&nbsp; &nbsp; <span class="kw1">elif</span> <span class="br0">&#40;</span><span class="br0">&#40;</span> <span class="co1">${VID_INFO_WIDTH}</span> <span class="sy0">&gt;</span> <span class="nu0">719</span> <span class="br0">&#41;</span><span class="br0">&#41;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span class="re2">BITRATE</span>=<span class="nu0">8192</span><br />
&nbsp; &nbsp; <span class="kw1">elif</span> <span class="br0">&#40;</span><span class="br0">&#40;</span> <span class="co1">${VID_INFO_WIDTH}</span> <span class="sy0">&gt;</span> <span class="nu0">620</span> <span class="br0">&#41;</span><span class="br0">&#41;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span class="re2">BITRATE</span>=<span class="nu0">2560</span><br />
&nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span class="re2">BITRATE</span>=<span class="nu0">512</span><br />
&nbsp; &nbsp; <span class="kw1">fi</span><br />
&nbsp; <span class="kw1">fi</span></p>
<p>&nbsp; <span class="re2">MAX_BITRATE</span>=$<span class="br0">&#40;</span> <span class="kw2">expr</span> <span class="co1">${BITRATE}</span> + <span class="nu0">512</span> <span class="br0">&#41;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="kw1">function</span> convert_file_second_pass <span class="br0">&#123;</span><br />
&nbsp; <span class="kw3">echo</span> <span class="st0">&quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot;</span><br />
&nbsp; <span class="kw3">echo</span> <span class="st0">&quot; &nbsp; Second pass: <span class="es3">${ORIG_FILE}</span>&quot;</span></p>
<p>&nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="re5">-n</span> <span class="co1">${BLACKBERRY}</span> <span class="br0">&#93;</span><span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;ffmpeg -i <span class="es1">\&quot;</span><span class="es3">${ORIG_FILE}</span><span class="es1">\&quot;</span> -vcodec mpeg4 -vtag XVID -s <span class="es3">${VID_INFO_RESOLUTION}</span> <span class="es1">\<br />
</span> &nbsp; &nbsp; &nbsp;-qscale 10 -ab 48k -ar 22050 -ac 2 -acodec libmp3lame -deinterlace <span class="es1">\<br />
</span> &nbsp; &nbsp; &nbsp;-b 512kb -qmin 1 -qmax 51 <span class="es1">\<br />
</span> &nbsp; &nbsp; &nbsp;-padtop <span class="es3">${VID_BORDER_VERTICAL_TOP}</span> -padbottom <span class="es3">${VID_BORDER_VERTICAL_BOTTOM}</span> <span class="es1">\<br />
</span> &nbsp; &nbsp; &nbsp;-padleft <span class="es3">${VID_BORDER_HORIZONTAL_LEFT}</span> -padright <span class="es3">${VID_BORDER_HORIZONTAL_RIGHT}</span> <span class="es1">\<br />
</span> &nbsp; &nbsp; &nbsp;-aspect <span class="es3">${VID_INFO_ASPECT}</span> <span class="es1">\&quot;</span><span class="es3">${DEST_FILE}</span><span class="es1">\&quot;</span>&quot;</span></p>
<p>&nbsp; &nbsp; <span class="kw2">ffmpeg</span> <span class="re5">-i</span> <span class="st0">&quot;<span class="es3">${ORIG_FILE}</span>&quot;</span> <span class="re5">-vcodec</span> mpeg4 <span class="re5">-vtag</span> XVID <span class="re5">-s</span> <span class="co1">${VID_INFO_RESOLUTION}</span> \<br />
&nbsp; &nbsp; &nbsp; <span class="re5">-ab</span> 48k <span class="re5">-ar</span> <span class="nu0">22050</span> <span class="re5">-ac</span> <span class="nu0">2</span> <span class="re5">-acodec</span> libmp3lame <span class="re5">-deinterlace</span> \<br />
&nbsp; &nbsp; &nbsp; <span class="re5">-b</span> 512kb <span class="re5">-qmin</span> <span class="nu0">1</span> <span class="re5">-qmax</span> <span class="nu0">51</span> \<br />
&nbsp; &nbsp; &nbsp; <span class="re5">-padtop</span> <span class="co1">${VID_BORDER_VERTICAL_TOP}</span> <span class="re5">-padbottom</span> <span class="co1">${VID_BORDER_VERTICAL_BOTTOM}</span> \<br />
&nbsp; &nbsp; &nbsp; <span class="re5">-padleft</span> <span class="co1">${VID_BORDER_HORIZONTAL_LEFT}</span> <span class="re5">-padright</span> <span class="co1">${VID_BORDER_HORIZONTAL_RIGHT}</span> \<br />
&nbsp; &nbsp; &nbsp; <span class="re5">-aspect</span> <span class="co1">${VID_INFO_ASPECT}</span> <span class="st0">&quot;<span class="es3">${DEST_FILE}</span>&quot;</span><br />
&nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;ffmpeg -i <span class="es1">\&quot;</span><span class="es3">${ORIG_FILE}</span><span class="es1">\&quot;</span> -acodec libfaac -ar 44100 -ac <span class="es3">${AUD_INFO_CHANNELS}</span> <span class="es1">\<br />
</span> &nbsp; &nbsp; &nbsp;-async 1 -f mp4 -pass 2 -vcodec libx264 -vtag XVID -flags +loop+ilme -cmp +chroma <span class="es1">\<br />
</span> &nbsp; &nbsp; &nbsp;-partitions +parti4x4+partp8x8+partb8x8 -flags2 +mixed_refs -me_method umh -subq 5 <span class="es1">\<br />
</span> &nbsp; &nbsp; &nbsp;-trellis 1 -refs 5 -bf 3 -b_strategy 1 -level 31 -coder 1 -me_range 16 <span class="es1">\<br />
</span> &nbsp; &nbsp; &nbsp;-g 250 -keyint_min 250 -sc_threshold 40 -i_qfactor 0.71 -bt 200kb <span class="es1">\<br />
</span> &nbsp; &nbsp; &nbsp;-rc_eq &#8216;blurCplx^(1-qComp)&#8217; -qcomp 0.6 -qmin 3 -qmax 15 -qdiff 4 <span class="es1">\<br />
</span> &nbsp; &nbsp; &nbsp;-s <span class="es3">${VID_INFO_RESOLUTION}</span> -aspect <span class="es3">${VID_INFO_ASPECT}</span> <span class="es1">\<br />
</span> &nbsp; &nbsp; &nbsp;-padtop <span class="es3">${VID_BORDER_VERTICAL_TOP}</span> -padbottom <span class="es3">${VID_BORDER_VERTICAL_BOTTOM}</span> <span class="es1">\<br />
</span> &nbsp; &nbsp; &nbsp;-padleft <span class="es3">${VID_BORDER_HORIZONTAL_LEFT}</span> -padright <span class="es3">${VID_BORDER_HORIZONTAL_RIGHT}</span> <span class="es1">\<br />
</span> &nbsp; &nbsp; &nbsp;-b <span class="es3">${BITRATE}</span>kb -maxrate <span class="es3">${MAX_BITRATE}</span>kb <span class="es1">\<br />
</span> &nbsp; &nbsp; &nbsp;-bufsize <span class="es3">${MAX_BITRATE}</span>kb -ab <span class="es3">${AUD_INFO_BITRATE}</span>kb <span class="es1">\<br />
</span> &nbsp; &nbsp; &nbsp;-threads 2 <span class="es1">\<br />
</span> &nbsp; &nbsp; &nbsp;-r <span class="es3">${VID_INFO_FPS}</span> <span class="es1">\&quot;</span><span class="es3">${DEST_FILE}</span><span class="es1">\&quot;</span>&quot;</span></p>
<p>&nbsp; &nbsp; <span class="kw2">ffmpeg</span> <span class="re5">-i</span> <span class="st0">&quot;<span class="es3">${ORIG_FILE}</span>&quot;</span> <span class="re5">-acodec</span> libfaac <span class="re5">-ar</span> <span class="nu0">44100</span> <span class="re5">-ac</span> <span class="co1">${AUD_INFO_CHANNELS}</span> \<br />
&nbsp; &nbsp; &nbsp; <span class="re5">-async</span> <span class="nu0">1</span> <span class="re5">-f</span> mp4 <span class="re5">-pass</span> <span class="nu0">2</span> <span class="re5">-vcodec</span> libx264 <span class="re5">-vtag</span> XVID <span class="re5">-flags</span> +loop+ilme <span class="re5">-cmp</span> +chroma \<br />
&nbsp; &nbsp; &nbsp; <span class="re5">-partitions</span> +parti4x4+partp8x8+partb8x8 <span class="re5">-flags2</span> +mixed_refs -me_method umh <span class="re5">-subq</span> <span class="nu0">5</span> \<br />
&nbsp; &nbsp; &nbsp; <span class="re5">-trellis</span> <span class="nu0">1</span> <span class="re5">-refs</span> <span class="nu0">5</span> <span class="re5">-bf</span> <span class="nu0">3</span> -b_strategy <span class="nu0">1</span> <span class="re5">-level</span> <span class="nu0">31</span> <span class="re5">-coder</span> <span class="nu0">1</span> -me_range <span class="nu0">16</span> \<br />
&nbsp; &nbsp; &nbsp; <span class="re5">-g</span> <span class="nu0">250</span> -keyint_min <span class="nu0">250</span> -sc_threshold <span class="nu0">40</span> -i_qfactor <span class="nu0">0.71</span> <span class="re5">-bt</span> 200kb \<br />
&nbsp; &nbsp; &nbsp; -rc_eq <span class="st_h">&#8216;blurCplx^(1-qComp)&#8217;</span> <span class="re5">-qcomp</span> <span class="nu0">0.6</span> <span class="re5">-qmin</span> <span class="nu0">1</span> <span class="re5">-qmax</span> <span class="nu0">51</span> <span class="re5">-qdiff</span> <span class="nu0">4</span> \<br />
&nbsp; &nbsp; &nbsp; <span class="re5">-s</span> <span class="co1">${VID_INFO_RESOLUTION}</span> <span class="re5">-aspect</span> <span class="co1">${VID_INFO_ASPECT}</span> \<br />
&nbsp; &nbsp; &nbsp; <span class="re5">-padtop</span> <span class="co1">${VID_BORDER_VERTICAL_TOP}</span> <span class="re5">-padbottom</span> <span class="co1">${VID_BORDER_VERTICAL_BOTTOM}</span> \<br />
&nbsp; &nbsp; &nbsp; <span class="re5">-padleft</span> <span class="co1">${VID_BORDER_HORIZONTAL_LEFT}</span> <span class="re5">-padright</span> <span class="co1">${VID_BORDER_HORIZONTAL_RIGHT}</span> \<br />
&nbsp; &nbsp; &nbsp; <span class="re5">-b</span> <span class="co1">${BITRATE}</span>kb <span class="re5">-maxrate</span> <span class="co1">${MAX_BITRATE}</span>kb \<br />
&nbsp; &nbsp; &nbsp; <span class="re5">-bufsize</span> <span class="co1">${MAX_BITRATE}</span>kb <span class="re5">-ab</span> <span class="co1">${AUD_INFO_BITRATE}</span>kb \<br />
&nbsp; &nbsp; &nbsp; <span class="re5">-threads</span> <span class="nu0">2</span> \<br />
&nbsp; &nbsp; &nbsp; <span class="re5">-r</span> <span class="co1">${VID_INFO_FPS}</span> <span class="st0">&quot;<span class="es3">${DEST_FILE}</span>&quot;</span><br />
&nbsp; <span class="kw1">fi</span><br />
<span class="br0">&#125;</span></p>
<p><span class="kw1">if</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="re5">-n</span> <span class="st0">&quot;$1&quot;</span> <span class="br0">&#93;</span><span class="br0">&#93;</span> <span class="sy0">&amp;&amp;</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="re5">-n</span> <span class="st0">&quot;$2&quot;</span> <span class="br0">&#93;</span><span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="re5">-n</span> <span class="st0">&quot;$3&quot;</span> <span class="br0">&#93;</span><span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;$3&quot;</span> <span class="kw1">in</span><br />
&nbsp; &nbsp; &nbsp; bb<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">BLACKBERRY</span>=<span class="nu0">1</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">BB_TYPE</span>=<span class="st0">&quot;norm&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; bb_storm<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">BLACKBERRY</span>=<span class="nu0">1</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">BB_TYPE</span>=<span class="st0">&quot;STORM&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; ps3<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; <span class="sy0">*</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; <span class="kw1">esac</span><br />
&nbsp; <span class="kw1">fi</span></p>
<p>&nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="re5">-n</span> <span class="st0">&quot;$4&quot;</span> <span class="br0">&#93;</span><span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; <span class="re2">FILE_PREFIX</span>=<span class="st0">&quot;<span class="es3">${4}</span>_&quot;</span><br />
&nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; <span class="re2">FILE_PREFIX</span>=<span class="st0">&quot;&quot;</span><br />
&nbsp; <span class="kw1">fi</span></p>
<p>&nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="re5">-f</span> <span class="st0">&quot;$1&quot;</span> <span class="br0">&#93;</span><span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; process_file <span class="st0">&quot;$1&quot;</span> <span class="st0">&quot;$2&quot;</span><br />
&nbsp; <span class="kw1">elif</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="re5">-d</span> <span class="st0">&quot;$1&quot;</span> <span class="br0">&#93;</span><span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; process_directory <span class="st0">&quot;$1&quot;</span> <span class="st0">&quot;$2&quot;</span><br />
&nbsp; <span class="kw1">fi</span><br />
<span class="kw1">else</span><br />
&nbsp; print_usage<br />
&nbsp; <span class="kw3">exit</span><br />
<span class="kw1">fi</span><br />
&nbsp;</div>
<p>The ffmpeg parameters are based off of <a href="http://ps3wiki.qj.net/index.php/Using_ffmpeg_to_transcode_video_for_the_PS3">Using ffmpeg to transcode video for the PS3</a>.  Hope his works for you too.</p>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2009/09/23/howto-convert-an-entire-directory-of-videos-to-play-on-your-sony-playstation-3-using-ffmpeg/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Rip a dvd with HandbrakeCLI on Ubuntu Linux 8.04 (Hardy Heron) for the Sony PS3 (mpeg4 / h.264)</title>
		<link>http://froebe.net/blog/2008/07/14/rip-a-dvd-with-handbrakecli-on-ubuntu-linux-804-hardy-heron-for-the-sony-ps3-mpeg4-h264/</link>
		<comments>http://froebe.net/blog/2008/07/14/rip-a-dvd-with-handbrakecli-on-ubuntu-linux-804-hardy-heron-for-the-sony-ps3-mpeg4-h264/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 02:45:18 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[dvd]]></category>
		<category><![CDATA[dvd rip]]></category>
		<category><![CDATA[Gnome]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[handbrake]]></category>
		<category><![CDATA[handbrakecli]]></category>
		<category><![CDATA[make_ps3_hb.sh]]></category>
		<category><![CDATA[mediatomb]]></category>
		<category><![CDATA[playstation]]></category>
		<category><![CDATA[playstation 3]]></category>
		<category><![CDATA[ps3]]></category>
		<category><![CDATA[RippedWire]]></category>
		<category><![CDATA[ripping]]></category>
		<category><![CDATA[sony ps3]]></category>
		<category><![CDATA[sourceforge.net]]></category>
		<category><![CDATA[th3rmite]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=571</guid>
		<description><![CDATA[After much trial and error, I chose HandbrakeCLI for ripping a dvd to a h.264 mpeg4 file that I can play on my Sony Playstation 3 console. Please note that HandBrake does quite well on live action video but not so good on animation. % sudo aptitude install build-essential % sudo aptitude install zlib1g-dev jam [...]]]></description>
			<content:encoded><![CDATA[<p>After much trial and error, I chose <a href="http://handbrake.fr/">HandbrakeCLI</a> for ripping a dvd to a h.264 mpeg4 file that I can play on my <a href="http://www.amazon.com/gp/product/B000XGJH1O?ie=UTF8&amp;tag=froebe-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B000XGJH1O">Sony Playstation 3 console</a>.  Please note that HandBrake does quite well on live action video but not so good on animation.</p>
<div class="bash dean_ch"><span class="sy0">%</span> <span class="kw2">sudo</span> <span class="kw2">aptitude</span> <span class="kw2">install</span> build-essential<br />
<span class="sy0">%</span> <span class="kw2">sudo</span> <span class="kw2">aptitude</span> <span class="kw2">install</span> zlib1g-dev jam yasm<br />
<span class="sy0">%</span> <span class="kw2">wget</span> http:<span class="sy0">//</span>handbrake.fr<span class="sy0">/</span>rotation.php?<span class="re2">file</span>=HandBrake-0.9.2.tar.gz<br />
<span class="sy0">%</span> <span class="kw2">tar</span> zxvf HandBrake-0.9.2.tar.gz<br />
<span class="sy0">%</span> <span class="kw3">cd</span> HandBrake<br />
<span class="sy0">%</span> .<span class="sy0">/</span>configure<br />
<span class="sy0">%</span> jam<br />
<span class="sy0">%</span> <span class="kw2">cp</span> HandBrakeCLI ..<span class="sy0">/</span>bin &nbsp;<span class="co0"># to copy the binary into the user&#8217;s bin dir</span></div>
<p>We need yasm installed to pick up any cpu extensions that our cpu supports.  For example: MMX MMXEXT SSE SSE2 3DNow!</p>
<p>Now that we have a working HandBrakeCLI binary built for our system (works for 32bit or 64bit depending on which system we built it on).</p>
<p>I wrote a very simple script that will rip the dvd (legal dvd rip btw) into a mp4 file, copy it to the media-server which will be picked up automatically by <a href="http://mediatomb.cc/">mediatomb</a>.</p>
<p>make_ps3_hb.sh:</p>
<div class="bash dean_ch"><span class="co0">#!/bin/bash</span></p>
<p><span class="co0"># make_ps3_hb.sh &lt;video_name .mp4&gt; [genre]</span></p>
<p><span class="kw2">nice</span> <span class="re5">-n</span> <span class="nu0">15</span> ~<span class="sy0">/</span>bin<span class="sy0">/</span>HandBrakeCLI <span class="re5">-i</span> <span class="sy0">/</span>dev<span class="sy0">/</span>dvd <span class="re5">-e</span> x264 <span class="re5">-b</span> <span class="nu0">1200</span> <span class="re5">-B</span> <span class="nu0">160</span> <span class="re5">-R</span> <span class="nu0">48</span> <span class="re5">-E</span> faac <span class="re5">-f</span> mp4 <span class="re5">-P</span>=<span class="nu0">16</span> <span class="re5">-x</span> <span class="re2">level</span>=<span class="nu0">41</span>:<span class="re2">subme</span>=<span class="nu0">5</span>:<span class="re2">me</span>=umh <span class="re5">-T</span> <span class="re5">-2</span> <span class="re5">-d</span> <span class="re5">-7</span> <span class="re5">-8</span> <span class="re5">-O</span> <span class="re5">&#8211;crop</span> <span class="re5">-m</span> <span class="re5">-N</span> eng <span class="re5">-o</span> <span class="st0">&quot;$1&quot;</span></p>
<p><span class="kw1">if</span> <span class="br0">&#91;</span> <span class="re5">-f</span> <span class="st0">&quot;$1&quot;</span> <span class="br0">&#93;</span><br />
<span class="kw1">then</span><br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span> <span class="re4">$2</span> <span class="br0">&#93;</span><br />
&nbsp; <span class="kw1">then</span><br />
&nbsp; &nbsp; <span class="kw3">echo</span> copying <span class="re4">$1</span> to media-server <span class="sy0">/</span>home<span class="sy0">/</span>jason<span class="sy0">/</span>Videos<span class="sy0">/</span><span class="re4">$2</span><br />
&nbsp; &nbsp; <span class="kw2">scp</span> <span class="st0">&quot;$1&quot;</span> <span class="st0">&quot;jason@media-server:/home/jason/Videos/$2/$1&quot;</span> <span class="sy0">&amp;&amp;</span> <span class="kw2">rm</span> <span class="re5">-f</span> <span class="st0">&quot;$1&quot;</span><br />
&nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; <span class="kw3">echo</span> copying <span class="re4">$1</span> to media-server <span class="sy0">/</span>home<span class="sy0">/</span>jason<span class="sy0">/</span>Videos<br />
&nbsp; &nbsp; <span class="kw2">scp</span> <span class="st0">&quot;$1&quot;</span> <span class="st0">&quot;jason@media-server:/home/jason/Videos/$1&quot;</span> <span class="sy0">&amp;&amp;</span> <span class="kw2">rm</span> <span class="re5">-f</span> <span class="st0">&quot;$1&quot;</span><br />
&nbsp; <span class="kw1">fi</span><br />
<span class="kw1">fi</span><span class="sy0">&lt;/</span>video_name<span class="sy0">&gt;</span></div>
<p><a href="http://handbrake.fr">Handbrake</a> documentation is available on the <a href="http://trac.handbrake.fr/wiki/HandBrakeGuide">Handbrake wiki website</a>.</p>
<p><strong>UPDATE</strong>: If you&#8217;re looking for a GUI front end for HandBrakeCLI on Linux, check out <a href="http://sourceforge.net/projects/rippedwire/">RippedWire</a> by <a href="http://sourceforge.net/users/th3rmite/">th3rmite</a>.</p>
<p><a href="http://froebe.net/blog/wp-content/uploads/2008/07/rippedwire.jpg"><img class="aligncenter size-medium wp-image-574" title="RippedWire" src="http://froebe.net/blog/wp-content/uploads/2008/07/rippedwire-269x300.jpg" alt="Screenshot: HandBrakeGTK 1.0.1 - Queue Tab" width="269" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2008/07/14/rip-a-dvd-with-handbrakecli-on-ubuntu-linux-804-hardy-heron-for-the-sony-ps3-mpeg4-h264/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Using AviDemux 2.4.1 to convert a video to h.264 mpeg4 for the Sony Playstation 3</title>
		<link>http://froebe.net/blog/2008/06/18/using-avidemux-241-to-convert-a-video-to-h264-mpeg4-for-the-sony-playstation-3/</link>
		<comments>http://froebe.net/blog/2008/06/18/using-avidemux-241-to-convert-a-video-to-h264-mpeg4-for-the-sony-playstation-3/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 00:51:56 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[avidemux]]></category>
		<category><![CDATA[codec]]></category>
		<category><![CDATA[conversion]]></category>
		<category><![CDATA[h.264]]></category>
		<category><![CDATA[hardy heron]]></category>
		<category><![CDATA[mp4]]></category>
		<category><![CDATA[ps3]]></category>
		<category><![CDATA[psp]]></category>
		<category><![CDATA[sony playstation 3]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[ubuntu 8.04]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=507</guid>
		<description><![CDATA[How to use avidemux to convert video to play on the Sony Playstation 3 console]]></description>
			<content:encoded><![CDATA[<p>Hi all,</p>
<p>After trial and error, I finally figured out how to convert an old divx 3 (you know, the <a href="http://en.wikipedia.org/wiki/Divx">old hacked version</a> of the codec) video file to a format that my <a href="http://www.us.playstation.com">Sony Playstation 3 (PS3)</a> could handle.  Why is it that Sony has made the PS3 to be such a finicky beast when it comes to reading video files, I will never know:</p>
<p>How to convert a video file using <a href="http://fixounet.free.fr/avidemux/">AviDemux</a> v2.4.1 on <a href="http://www.ubuntu.com">Ubuntu</a> 8.04 (Hardy Heron):</p>
<ul>
<li>Load the original video file into AviDemux</li>
<li>Auto -&gt; PSP (H.264) &#8211; choose defaults</li>
</ul>
<p><a href="http://froebe.net/blog/wp-content/uploads/2008/06/wizard.jpg"><img class="size-full wp-image-508" style="vertical-align: middle;" title="wizard" src="http://froebe.net/blog/wp-content/uploads/2008/06/wizard.jpg" alt="" width="344" height="184" /></a></p>
<ul>
<li>Video -&gt; Configure -&gt; 2 Pass</li>
</ul>
<p><a href="http://froebe.net/blog/wp-content/uploads/2008/06/configuration.png"><img class="size-medium wp-image-509" style="vertical-align: middle;" title="configuration" src="http://froebe.net/blog/wp-content/uploads/2008/06/configuration-237x300.png" alt="" width="237" height="300" /></a></p>
<ul>
<li>Format -&gt; MP4</li>
</ul>
<p><a href="http://froebe.net/blog/wp-content/uploads/2008/06/avidemux.png"><img class="size-medium wp-image-510" style="vertical-align: middle;" title="avidemux" src="http://froebe.net/blog/wp-content/uploads/2008/06/avidemux-300x219.png" alt="" width="300" height="219" /></a></p>
<ul>
<li>Save with the extension &#8220;.mp4&#8243;</li>
</ul>
<p>If you&#8217;re going to put the video on an USB thumbdrive, you will need to create a folder:</p>
<ul>
<li>On the USB Thumbdrive:   VIDEO</li>
<li>Group videos with subdirectories:  VIDEO / SCIFI</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2008/06/18/using-avidemux-241-to-convert-a-video-to-h264-mpeg4-for-the-sony-playstation-3/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

