<?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>Diego's Rants &#187; mac</title>
	<atom:link href="http://blog.massanti.com/tag/mac/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.massanti.com</link>
	<description>Confessions from a Geek</description>
	<lastBuildDate>Wed, 27 Oct 2010 11:22:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Quirky error in Google Chrome for Mac (Beta)</title>
		<link>http://blog.massanti.com/2009/12/09/quirky-error-in-google-chrome-for-mac-beta/</link>
		<comments>http://blog.massanti.com/2009/12/09/quirky-error-in-google-chrome-for-mac-beta/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 22:59:01 +0000</pubDate>
		<dc:creator>Diego Massanti</dc:creator>
				<category><![CDATA[Apple / Macintosh]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web & Design]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://blog.massanti.com/?p=1114</guid>
		<description><![CDATA[While testing some of my own JavaScript code in the new beta build of Chrome for Mac, i was presented with this error:]]></description>
			<content:encoded><![CDATA[<p>While testing some of my own JavaScript code in the new beta build of Chrome for Mac, i was presented with this error:</p>
<div id="attachment_1115" class="wp-caption aligncenter" style="width: 466px"><img class="size-full wp-image-1115 " title="Chrome for Mac error" src="http://blog.massanti.com/wp-content/uploads/2009/12/Google_Chrome-20091209-191528.jpg" alt="Chrome for Mac error" width="456" height="201" /><p class="wp-caption-text">Chrome for Mac error</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.massanti.com/2009/12/09/quirky-error-in-google-chrome-for-mac-beta/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Download Thingy, it slowly starts to make sense.</title>
		<link>http://blog.massanti.com/2009/09/22/download-thingy-it-slowly-starts-to-make-sense/</link>
		<comments>http://blog.massanti.com/2009/09/22/download-thingy-it-slowly-starts-to-make-sense/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 06:08:42 +0000</pubDate>
		<dc:creator>Diego Massanti</dc:creator>
				<category><![CDATA[Apple / Macintosh]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Download Thingy]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.massanti.com/?p=1014</guid>
		<description><![CDATA[I have been working for the past days in the foundation for a new Download Manager that I&#8217;m writing for the Mac platform, and this is just an &#8220;status quo&#8221; about how things are evolving. What is done so far. A certainly modern multi-threaded Cocoa Framework implementation around libCurl&#8216;s C API, which allows me to [...]]]></description>
			<content:encoded><![CDATA[<p>I have been working for the past days in the foundation for a new Download Manager that I&#8217;m writing for the Mac platform, and this is just an &#8220;status quo&#8221; about how things are evolving.</p>
<h3>What is done so far.</h3>
<ul>
<li>A certainly modern multi-threaded Cocoa Framework implementation around <a href="http://curl.haxx.se/libcurl/">libCurl</a>&#8216;s C API, which allows me to get my hands on the whole power of Curl, but without leaving the beauty of Objective-C and the Cocoa API&#8217;s at any moment.</li>
<li style="text-align: left;">A pretty basic prorotype kind of UI which allows simple segmented download of files for the time being.
<p><div id="attachment_1015" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.massanti.com/wp-content/uploads/2009/09/Screen-shot-2009-09-22-at-2.50.34-AM.png" rel="shadowbox[post-1014];player=img;"><img class="size-medium wp-image-1015" title="Download Thingy, the prototype UI" src="http://blog.massanti.com/wp-content/uploads/2009/09/Screen-shot-2009-09-22-at-2.50.34-AM-300x205.png" alt="Download Thingy, the prototype UI" width="300" height="205" /></a><p class="wp-caption-text">Download Thingy, the prototype UI</p></div></li>
<li style="text-align: left;">A custom (and open, XML, standards based) file format baptized (you guessed) &#8220;.thingy&#8221; which takes care of storing partial download segments, some basic (for now) binary and redundancy checking, and of course, the ability to reconstruct itself into the original file.
<p><div id="attachment_1016" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.massanti.com/wp-content/uploads/2009/09/Screen-shot-2009-09-22-at-2.52.30-AM.png" rel="shadowbox[post-1014];player=img;"><img class="size-medium wp-image-1016" title="A standard .thingy container." src="http://blog.massanti.com/wp-content/uploads/2009/09/Screen-shot-2009-09-22-at-2.52.30-AM-300x200.png" alt="A standard .thingy container." width="300" height="200" /></a><p class="wp-caption-text">A standard .thingy container.</p></div></li>
<li style="text-align: left;">Main Launch Services integartion is partially done too.</li>
<li style="text-align: left;">Some basic implementation of automatic mirror discovering.</li>
</ul>
<h3>What needs to be done.</h3>
<ul>
<li>I have to write the foundation for a proper queue management system.</li>
<li>Network Usage / Bandwidth Limiting logics are in the &#8220;to do&#8221; list too.</li>
<li>A proper User Interface.</li>
<li>A public alpha version with basic usability that people can start to use and report so i can accelerate the development based on actual user&#8217;s requests.</li>
<li>A Safari / WebKit plugin.</li>
</ul>
<p>So far, this is looking pretty nice and i think it will become a pretty interesting utility for the Mac community.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.massanti.com/2009/09/22/download-thingy-it-slowly-starts-to-make-sense/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Automatic build numbering increase with xCode</title>
		<link>http://blog.massanti.com/2009/09/20/automatic-build-numbering-increase-with-xcode/</link>
		<comments>http://blog.massanti.com/2009/09/20/automatic-build-numbering-increase-with-xcode/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 04:01:34 +0000</pubDate>
		<dc:creator>Diego Massanti</dc:creator>
				<category><![CDATA[Apple / Macintosh]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[xCode]]></category>

		<guid isPermaLink="false">http://blog.massanti.com/?p=997</guid>
		<description><![CDATA[I had this problem some days ago where i wanted to automatically increase the build number of my Application in xCode, every time that i actually made a new build. xCode comes with a tool called agvtool which is supposed to fill this gap, but the main problem with this is that it needs the [...]]]></description>
			<content:encoded><![CDATA[<p>I had this problem some days ago where i wanted to automatically increase the build number of my Application in xCode, every time that i actually made a new build. xCode comes with a tool called agvtool which is supposed to fill this gap, but the main problem with this is that it needs the project to be actually closed, for some reason that i certainly ignore.</p>
<p>After some searches, i finished at <a href="http://chanson.livejournal.com/125568.html">this interesting post by Chris Hanson</a>, but this was not exactly what i wanted to do, again, i wanted a simple approach to increase the build number with every build.</p>
<p>So this is what i did.</p>
<p>First I created a new configuration settings file in xCode, as shown below.</p>
<div id="attachment_998" class="wp-caption aligncenter" style="width: 310px"><a rel="lightbox" href="http://blog.massanti.com/wp-content/uploads/2009/09/Screen-shot-2009-09-20-at-12.20.54-AM.png"><img class="size-medium wp-image-998 " title="Creating a new Configuration Settings File in xCode" src="http://blog.massanti.com/wp-content/uploads/2009/09/Screen-shot-2009-09-20-at-12.20.54-AM-300x247.png" alt="Creating a new Configuration Settings File in xCode" width="300" height="247" /></a><p class="wp-caption-text">Creating a new Configuration Settings File in xCode</p></div>
<p>After this, i ended up with an empty configuration file, so i added the following inside it:</p>
<pre>CURRENT_PROJECT_VERSION = 1</pre>
<p>xCode uses this variable to store your application&#8217;s build number, so we are going to tell it to use this file in order to get the value for the CURRENT_PROJECT_VERSION variable.</p>
<p>Go to your target&#8217;s properties, be sure to select All configurations and All Settings, then base your target&#8217;s config in your newly created version.xcconfig file, and set the version variable to our new version variable as shown below:</p>
<div id="attachment_999" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.massanti.com/wp-content/uploads/2009/09/Screen-shot-2009-09-20-at-12.26.49-AM.png" rel="shadowbox[post-997];player=img;"><img class="size-medium wp-image-999" title="Configuring the Target to use the new variable in the version.xcconfig file." src="http://blog.massanti.com/wp-content/uploads/2009/09/Screen-shot-2009-09-20-at-12.26.49-AM-300x272.png" alt="Configuring the Target to use the new variable in the version.xcconfig file." width="300" height="272" /></a><p class="wp-caption-text">Configuring the Target to use the new variable in the version.xcconfig file.</p></div>
<p>After all this is done, all you have to do is create a new &#8220;Run Script&#8221; build phase, and place the following inside it:</p>
<pre class="brush: plain; title: ;">
NEW_VERSION=`cat &quot;$SRCROOT/version.xcconfig&quot; | awk '/CURRENT_PROJECT_VERSION/ { print $3 + 1 }'`
sed -i '' &quot;s/CURRENT_PROJECT_VERSION = .*/CURRENT_PROJECT_VERSION = $NEW_VERSION/&quot; &quot;$SRCROOT/version.xcconfig&quot;
CURRENT_PROJECT_VERSION=$NEW_VERSION
touch &quot;$SRCROOT/version.xcconfig&quot;
</pre>
<p>Obviously, if you changed the file or variable names, you will have to adapt the script as needed.<br />
Now, every time you build the app, the build number is automatically increased by one, and included in your application&#8217;s plist file as shown below:</p>
<div id="attachment_1002" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.massanti.com/wp-content/uploads/2009/09/Screen-shot-2009-09-20-at-12.42.27-AM.png" rel="shadowbox[post-997];player=img;"><img class="size-medium wp-image-1002" title="Build number being shown in the built app." src="http://blog.massanti.com/wp-content/uploads/2009/09/Screen-shot-2009-09-20-at-12.42.27-AM-300x219.png" alt="Build number being shown in the built app." width="300" height="219" /></a><p class="wp-caption-text">Build number being shown in the built app.</p></div>
<p>A whole thanks goes to the guys at #macdev on freenode Diabolik and KonaBlend who helped with the bash scripting!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.massanti.com/2009/09/20/automatic-build-numbering-increase-with-xcode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encoding high quality h.264 / aacPlus v2 media for web streaming with Flash 9, version 2.</title>
		<link>http://blog.massanti.com/2008/01/01/encoding-h264-aacplus-with-mencoder-for-flash/</link>
		<comments>http://blog.massanti.com/2008/01/01/encoding-h264-aacplus-with-mencoder-for-flash/#comments</comments>
		<pubDate>Tue, 01 Jan 2008 12:11:43 +0000</pubDate>
		<dc:creator>Diego Massanti</dc:creator>
				<category><![CDATA[Computers & Tech]]></category>
		<category><![CDATA[Video Encoding]]></category>
		<category><![CDATA[Web & Design]]></category>
		<category><![CDATA[aacPlus]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[h264]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[streaming]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://massanti.com/2008/01/01/encoding-h264-aacplus-with-mencoder-for-flash/</guid>
		<description><![CDATA[Update Notice This post has been updated with a newer and improved script and instructions, please visit the new one HERE. It was some months ago when I wrote a tutorial about how to encode good quality h.264 video with aacPlus audio in order to use the great capabilities of the new flash player version [...]]]></description>
			<content:encoded><![CDATA[<blockquote class="warning"><h3>Update Notice</h3>
<p>This post has been updated with a newer and improved script and instructions, please visit the new one <a href="http://blog.massanti.com/2008/09/26/mkmp4-automated-h264-aacplus-encoder-script-mac-linux/#more-562">HERE</a>.</p></blockquote>
<p>It was some months ago when I wrote a <a href="http://massanti.com/2007/09/28/encoding-h264-video-aac-plus-audio-for-flash/">tutorial about how to encode good quality h.264 video with aacPlus audio</a> in order to use the great capabilities of the new flash player version 9.0.115 (that in case you missed it, now <a href="http://www.adobe.com/aboutadobe/pressroom/pressreleases/200708/082107FlashPlayer.html">can play h264 video and aacPlus v2 audio</a>).<br />
Due to some personal convictions for my prior tutorial, i decided to use <a href="http://ffmpeg.mplayerhq.hu/">FFMPEG</a>, and while it does the job pretty well, it has some limitations (specially in the video scaling / resizing area). So in my particular case, I had to use <a href="http://massanti.com/2007/10/01/serverside-video-resizing-script/">several php / bash scripts</a> in order to feed the encoders with the proper resizing data, etcetera.<br />
<strong>Well, let me introduce you to the 2nd version of my h.264 / aacPlus v2 tutorial.</strong></p>
<p>This time I used Mencoder, an amazing tool that comes with the <a href="http://www.mplayerhq.hu/">mPlayer</a> package, and i also created what i think is a really nice bash script to make the process almost 100% smooth and simple.</p>
<h3>These are the things you will need:</h3>
<ul>
<li>the <a href="http://www.mplayerhq.hu/design7/dload.html">mPlayer package</a> for whatever platform you&#8217;re running</li>
<li>the <a href="http://www.nero.com/enu/nero-aac-codec.html">Nero enhanced AAC audio encoder</a> if you are on linux / unix or <a href="http://massanti.com/2007/09/30/he-aac-plus-encoder-mac-universal-binary/">my build of the 3GPP HE-AAC encoder</a> if you are on a Mac.</li>
<li>the <a href="http://gpac.sourceforge.net/home_download.php">GPAC utilities</a></li>
<li>the <a href="http://www.videolan.org/developers/x264.html">x264 video encoder</a></li>
</ul>
<p><span id="more-96"></span><br />
So let&#8217;s start. As usual, I wont dig a lot in the details about how to install or build software on linux / unix / mac, because you can find several <a href="http://www.tuxfiles.org/linuxhelp/softinstall.html">tutorials about those matters</a> by using google.</p>
<h3>Building and installing the x264 encoder</h3>
<p>In order to compile and install the x264 encoder, i recommend you to get <strong>the latest SVN</strong> version and build it yourself.<br />
There are not any specific parameters at all for x264 other than the install path because the bash script that i will show you later <strong>assumes that you have all the tools in a directory that is inside your executable path</strong>.<br />
So&#8230; get the latest sources for x264:<br />
<code>svn co svn://svn.videolan.org/x264/trunk x264</code><br />
and then just run:<br />
<code>./configure --prefix=/usr<br />
make<br />
make install<br />
</code><br />
After you have the x264 encoder installed, its time to get and build mPlayer.</p>
<h3>Installing mPlayer and Mencoder</h3>
<p>Again, get the latest sources for mPlayer:<br />
<code>svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer</code><br />
and this is the configuration that you **should** use:<br />
<code>./configure --prefix=/usr</code></p>
<blockquote class="mac"><p><strong>If you are on MacOS and you get errors when building, do this:</strong><br />
<code>./configure --prefix=/usr --disable-encoder=flac --disable-encoder=cavs --disable-decoder=cavs</code><br />
and then the usual&#8230;<br />
<code>make<br />
make install</code></p></blockquote>
<blockquote class="warning">
<h2>Very Important:</h2>
<p>After you compile and install all the tools, you will find a directory called &#8220;TOOLS&#8221; inside the mplayer source tree, go inside it, and look for an small script called &#8220;midentify&#8221;, you MUST COPY this script to your <code>/usr/bin</code> directory or any other dir inside your executable path for the bash script to work. This is mandatory.</p></blockquote>
<h2> The bash magic&#8230;</h2>
<p>Ok, so after you have all the tools built, **AND** in your path, let me show you this simple script that i have written in order to make things really simple.</p>
<pre><code class="bash">#! /bin/bash   

# This bash script has been created by Diego Massanti
# You are free and welcome to do whatever you want with it.
# www.massanti.com

usage()
{
cat &lt; &lt; EOF
usage: $0 -f  [-w ] -b  [-q][-k]

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* h264 video with he-aac audio encoding script by Diego Massanti. *
*                January 2008, Made in Argentina.                 *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

OPTIONS:
   	-h	Show this message
 -f	Path to the file to encode &lt; REQUIRED
   	-w	Resize video to fit inside this width while keeping the aspect ratio &lt; OPTIONAL
   	-b	Desired video bitrate &lt; REQUIRED
   	-q 	Better quality encoding using 2 passes (slower) &lt; OPTIONAL
 -k	Do not delete (keep) temporary files &lt; OPTIONAL
EOF
}
audiobitrate=48000
platform=""
uname=`uname`
if [ $uname == "Darwin" ]; then
 ## 99% of chances that this is a Mac
 platform="Mac"
else
 platform="Linux"
fi

width=""
bitrate=
deltemp=TRUE
quality=FALSE
filename=
rsize=""

while getopts ":f:w:b:qkv" OPTION; do
  case $OPTION in
    w ) width=$OPTARG;;
 f ) filename=$OPTARG;;
    b ) bitrate=$OPTARG;;
    k ) deltemp=FALSE;;
 q )	quality=TRUE;;
    h ) usage;;
    \? ) usage
         exit 1;;
    * ) echo $usage
          exit 1;;
  esac
done

if [ "$1" == "" ]; then
 usage
 exit 0
fi

if [ "$filename" == "" ]; then
 echo
 echo you MUST supply a file to encode!, use the -f parameter. i.e: -f mymovie.avi
 echo
 usage
 exit 1
fi
if [ "$bitrate" == "" ]; then
 echo
 echo you MUST specify a target bitrate!, use the -b parameter. i.e: -b 512
 echo
 usage
 exit 1
fi

if [ "$width" != "" ]; then
 rsize="-vf scale=$width:-3"
 rsizemsg="fit into $width pixels wide"
else
 rsize=""
 rsizemsg="Movie is not being resized."
fi

MOVIE_FPS=`midentify "$filename" | grep FPS | cut -d = -f 2`
#clear
echo "*    Encoding: $filename"
echo "*    Resizing to: $rsizemsg."
echo "*    Total Bitrate: $bitrate kbps."
let "caudiobitrate = $audiobitrate / 1000"
let "bitrate = $bitrate - $caudiobitrate"
echo "*    Video Bitrate: $bitrate kbps."
echo "*    Audio Bitrate: $caudiobitrate kbps."
echo "*    Platform: $platform."

# Encoding phase starts here...
# Encoding Video...
echo "* * * Starting video encoding pass 1... * * *"
mencoder "$filename" -o "${filename%.*}_temp.264" -passlogfile "${filename%.*}"_temp.log $rsize -ovc x264 -x264encopts bitrate=$bitrate:frameref=8:bframes=3:b_adapt:b_pyramid:weight_b:partitions=all:8x8dct:me=umh:subq=6:trellis=2:brdo:threads=auto:pass=1:analyse=all -of rawvideo -nosound

if [ "$quality" == "TRUE" ]; then
echo "* * * Starting video encoding pass 2... * * *"
mencoder "$filename" -o "${filename%.*}_temp.264" -passlogfile "${filename%.*}"_temp.log $rsize -ovc x264 -x264encopts bitrate=$bitrate:frameref=8:bframes=3:b_adapt:b_pyramid:weight_b:partitions=all:8x8dct:me=umh:subq=6:trellis=2:brdo:threads=auto:pass=2:analyse=all -of rawvideo -nosound
fi

# Extracting audio to a 48khz WAV file.
echo "* * * Extracting Audio... * * *"
mplayer "$filename" -af resample=48000:0:2,volnorm=2:0.25 -ao pcm:file="${filename%.*}_temp.wav" -vc dummy -vo null

# Encoding Audio to HE-AAC plus file
echo "* * * Encoding Audio... * * *"

if [ "$platform" == "Mac" ]; then
enhAacPlusEnc "${filename%.*}_temp.wav" "${filename%.*}_temp.aac" $audiobitrate s
else
neroAacEnc -br 48000 -he -if ${filename%.*}_temp.wav -of ${filename%.*}_temp.mp4
fi

# Muxing
echo "* * * Generating final MP4 container... * * *"

MP4Box -add "${filename%.*}_temp.264#video:fps=$MOVIE_FPS" "${filename%.*}.m4v"
if [ "$platform" == "Mac" ]; then
MP4Box -add "${filename%.*}_temp.aac" "${filename%.*}.m4v"
else
MP4Box -add "${filename%.*}_temp.mp4#audio" "${filename%.*}.m4v"
fi

# MetaData and interleaving
name=${filename%.*}
album="Some Album"
author="Some Author"
comment="Some Comment"
created="2007"
MP4Box -inter 500 -itags album="$album":artist="$author":comment="$comment":created="$created":name="$name" -lang English "${filename%.*}".m4v

# Clean up temporary files...
if [ $deltemp == "TRUE" ]; then
 echo "* * * Removing temporary files... * * *"
 rm "${filename%.*}"_temp*
fi</code></pre>
<p>You can also <a title="download the mkmp4 shell script" href="http://massanti.com/wp-content/uploads/2008/01/mkmp4.sh">download the mkmp4 shell script</a> in order to keep proper tabulations and code formatting.</p>
<p>You should save the code here into a simple text file, give it any name you want (i call mine &#8220;mkmp4&#8243;) and dont forget to <em>chmod +x</em> it.<br />
Usage is really simple:<br />
The scripts expects 2 main parameters that are mandatory:</p>
<ul>
<li>-f</li>
<li>-b</li>
</ul>
<p>So for example, typing <code>./mkmp4 -f myvideo.avi -b 512</code> will create a H.264 video file, with aacPlus v2 audio inside an MP4 container with a total <strong>bitrate of 512kbps</strong> and using <em>myvideo.avi</em> as source.<br />
The resulting file is ready for <strong>HTTP Streaming</strong> or <strong>FlashMedia Streaming Server 3</strong>, and of course, it will also play in any video player out there capable of H.264 and aacPlus v2 decoding.<br />
The script also accepts some other optional parameters.</p>
<ul>
<li>-q to use <strong>2 pass encoding</strong>, slower, but better quality <strong>specially</strong> at low bitrates</li>
<li>-w to resize the output video, for example &#8220;-w 480&#8243; will resize the video to 480 pixels wide <strong>while keeping the correct aspect ratio</strong>.</li>
<li>-k to keep temporary files</li>
<li>-h to show inline help</li>
</ul>
<p><strong>The script will detect if you are running it on a Mac or on any kind of linux / unix variant, and use the proper audio encoder for each platform.</strong><br />
Also, in lines 133 to 136 in the script code, you will find some meta information variables that you can customize. That information is used by players like QuickTime, iTunes and many others in order to correctly organize the file inside a user&#8217;s media library.</p>
<h3>Final considerations</h3>
<p>This script can use as source, any video format supported by mPlayer, wich in other words means that almost any kind of video file can be transcoded by using this method.<br />
If you are wondering what kind of quality / bitrate relation you will get by using this method, you are free to <a href="http://massanti.com/macvideo/ipod-itunes/ipod-touch/">watch this 512kbps video stream</a> (feel free to press the fullscreen button on the player <img src='http://blog.massanti.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )<br />
When i released the first version of this tutorial 3 months ago, somebody asked how to get better quality for screencasts, and i guess the answer to that question would be something like: Framerate is not important at all, anything over 10FPS is useless for a screencast, by lowering the video framerate you get more quality at the same bandwidth, also, if you are doing a screencast, most probably you want your viewers to be able to &#8220;read&#8221; at texts, etc, so, a resolution of at least 640&#215;480 is a must, and for bitrate, i think 512kbps with a two pass encoding process will be more than enough.</p>
<p>If you have any comment or suggestion you can leave a coment below. Thanks for reading !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.massanti.com/2008/01/01/encoding-h264-aacplus-with-mencoder-for-flash/feed/</wfw:commentRss>
		<slash:comments>78</slash:comments>
		</item>
		<item>
		<title>HE-AAC Plus encoder for Mac (Universal Binary)</title>
		<link>http://blog.massanti.com/2007/09/30/he-aac-plus-encoder-mac-universal-binary/</link>
		<comments>http://blog.massanti.com/2007/09/30/he-aac-plus-encoder-mac-universal-binary/#comments</comments>
		<pubDate>Sun, 30 Sep 2007 16:51:15 +0000</pubDate>
		<dc:creator>Diego Massanti</dc:creator>
				<category><![CDATA[Apple / Macintosh]]></category>
		<category><![CDATA[Computers & Tech]]></category>
		<category><![CDATA[aac]]></category>
		<category><![CDATA[binary]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[encoder]]></category>
		<category><![CDATA[enhAacPlusEnc]]></category>
		<category><![CDATA[he]]></category>
		<category><![CDATA[intel]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[plus]]></category>
		<category><![CDATA[powerpc]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[universal]]></category>
		<category><![CDATA[v2]]></category>

		<guid isPermaLink="false">http://massanti.com/2007/09/30/he-aac-plus-encoder-mac-universal-binary/</guid>
		<description><![CDATA[This post is outdated, for a more up to date version of both the binary encoder and the sources, please visit this new post. I needed a native solution to encode HE-AAC Plus audio on a Mac, but there is not any native solution so far right now, so i compiled the reference encoder (enhAacPlusEnc) [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>This post is outdated, for a more up to date version of both the binary encoder and the sources, please <a href="/2009/12/07/updated-he-aac-aacplus-reference-encoder-for-mac-os-x/">visit this new post</a>.</p></blockquote>
<p>I needed a native solution to encode HE-AAC Plus audio on a Mac, but there is not any native solution so far right now, so i compiled the reference encoder (enhAacPlusEnc) published by the <a href="http://www.3gpp.org/">3GPP group</a>.<br />
I also created an xCode project to make it easy to manage future builds.<br />
This is an &#8220;Universal Binary&#8221; build, meaning that it will work on both, Intel based and PowerPC based Macs.</p>
<p>You can download the universal binary encoder by clicking <a href="http://blog.massanti.com/tools/enhAacPlusEnc.zip">here</a>, and you can download the xcode project by clicking <a href="http://blog.massanti.com/tools/enhAacPlusEnc.xcodeproj.zip">here</a>.</p>
<p>Keep in mind that i had to make some minor modifications in order to make it compile as Universal Binary, so you wil find some minor diferences when comparing with the original source code released by the 3GPP group.</p>
<p>If you have any question, leave a comment here.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.massanti.com/2007/09/30/he-aac-plus-encoder-mac-universal-binary/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Creating good quality h264 video for the upcoming Flash Player and Flash Media Server</title>
		<link>http://blog.massanti.com/2007/09/28/encoding-h264-video-aac-plus-audio-for-flash/</link>
		<comments>http://blog.massanti.com/2007/09/28/encoding-h264-video-aac-plus-audio-for-flash/#comments</comments>
		<pubDate>Fri, 28 Sep 2007 11:04:42 +0000</pubDate>
		<dc:creator>Diego Massanti</dc:creator>
				<category><![CDATA[Apple / Macintosh]]></category>
		<category><![CDATA[Video Encoding]]></category>
		<category><![CDATA[aac]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[h264]]></category>
		<category><![CDATA[high]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[stream]]></category>
		<category><![CDATA[streamming]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://massanti.com/2007/09/28/encoding-h264-video-aac-plus-audio-for-flash/</guid>
		<description><![CDATA[Important This tutorial has been updated (and improved) a lot, for the new version please follow this link. UPDATE: I realized that when i read a tutorial about anything, in most cases, i want to first see what result im going to get so then i can decide if the tutorial is worth reading (or [...]]]></description>
			<content:encoded><![CDATA[<blockquote class="warning">
<h3>Important</h3>
<p>This tutorial has been updated (and improved) a lot, for the new version please follow <a href="http://massanti.com/2008/01/01/encoding-h264-aacplus-with-mencoder-for-flash/">this link</a>.
</p></blockquote>
<blockquote><p>UPDATE: I realized that when i read a tutorial about anything, in most cases, i want to first see what result im going to get so then i can decide if the tutorial is worth reading (or not), so here is a head by head comparison: </p>
<p>This is an h264 file encoded by the guys at apple.com, it&#8217;s the TV Commercial for the brand new iMac: <a href="http://movies.apple.com/movies/us/apple/mac/imac/2007/apple_solar_20070820_848x480.mov" rel="shadowbox[post-15];width=640;height=385;">ORIGINAL VIDEO</a></p>
<p>This is the same file re-encoded using the steps on this tutorial: <a href="http://plusmediaserver.com/media/new_imac_2007.mp4">RE-ENCODED VIDEO</a></p>
<p>Obviouisly, there is an small quality degradation, but keep in mind that apple&#8217;s original movie is 14MB in size, while mine is <strong>1.5MB</strong> <img src='http://blog.massanti.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .<br />
You can play my MP4 video with almost any video player out there, but remember that <strong>not all video players out there support HE-AAC audio (or aacPlus) and b-frames</strong>, so if you play the file with a player like QuickTime, <strong>it is NOT going to work</strong>.<br />
I recommend <a href="http://www.mplayerhq.hu/">mPlayer</a> or <a href="http://www.videolan.org/vlc/">VLC media player</a> to play this kind of video, and obviously, Flash Player will play the file perfectly too.
</p></blockquote>
<blockquote class="mac"><h3>Update for Macintosh users:</h3>
<p>I updated the bash script on this post so it can be used also by Macintosh users, so instead of using the NERO Digital AAC Encoder, Macintosh users can take advantage of the native 3GPP AAC Plus V2 encoder that i just compiled. Visit <a href="http://massanti.com/2007/09/30/he-aac-plus-encoder-mac-universal-binary/">this post</a> for more information about it.</p></blockquote>
<p>Like a lot of people out there, i was really happy when i found the <a href="http://www.adobe.com/aboutadobe/pressroom/pressreleases/200708/082107FlashPlayer.html">press release from Adobe</a>, stating the addition of h.264 video support and HE-AAC Plus audio to their <a href="http://labs.adobe.com/downloads/flashplayer9.html">upcoming Flash Player</a> versions, and also, to the upcoming Flash Media Server.<br />
After following several &#8220;Tutorials&#8221; all over the web, i found that there was not any single one that gave me the results that i wanted; that is, good video quality, with the less possible file size, so after a lot of trial and error and after a lot of help and optimizations by the guys at the ffmpeg and x264 IRC channels, i decided to create this tutorial that will most probably help you a lot to encode good quality h264 video, with HE-AAC Plus Audio, and all this inside an MP4 container with tags and all ready to deliver to your visitors.</p>
<p>There are several things that you will need in order to do this:</p>
<ul>
<li>The latest <a href="http://wiki.videolan.org/Subversion">SVN version of the x264 video codec</a>.</li>
<li>The latest <a href="http://ffmpeg.mplayerhq.hu/download.html">SVN version of the excellent ffmpeg video encoding utility</a>.</li>
<li>The <a href="http://gpac.sourceforge.net/home_download.php">latest version of the GPAC utilies</a> (it contains several tools to mux and work with MP4 files).</li>
<li>The <a href="http://www.nero.com/nerodigital/eng/down-ndaudio.php">linux version of the Nero Digital AAC Audio Encoder</a></li>
<li>GCC 4.1 or later installed, this is a requeriment for x264 to encode faster. It WILL work if you compile with older versions of GCC, but you will have performance issues resulting in more time needed to compress the video streams.</li>
</ul>
<p><span class="info"><strong>Some friendly bookmarks:</strong><br />
SVN checkout for x264:<br />
<code>svn checkout svn://svn.videolan.org/vlc/trunk vlc-trunk</code><br />
SVN checkout for ffmpeg:<br />
<code>svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg</code></span></p>
<p>First of all, I&#8217;m assuming that you are running Linux, Mac-OS X or any other UNIX variant. I never tried this on windows because I am pretty sure that there are lot of really nice programs that you could buy to do the job.<br />
<span id="more-15"></span><br />
<strong>Step 1: Configuring, compiling and installing all the stuff.</strong></p>
<p>I am assuming that you have some basic skills with Linux / Unix / Mac OS, so i won&#8217;t really digg into the details of how to compile from sources all the tools. In most cases just taking a look at the readme file for each piece of software will tell you all you need to know, so i will just explain here some basical tips that you need to know.<br />
After configuring, building and installing the x264 codec, this is the configure line that i used for ffmpeg in my paticular case:</p>
<p><code>./configure --enable-libx264 --enable-libfaac --enable-gpl --prefix=/usr --enable-libfaad --enable-swscaler --enable-pp</code></p>
<p>All the settings there are self-explanatory, the only thing you could need to change is the prefix to something like <strong>&#8211;prefix=/home/yourusername/</strong> if you prefer to install the software just for your own user account.<br />
After you have ffmpeg installed and running, we need to install two more things, the GPAC utilities and the Nero Digital AAC Audio Encoder.<br />
Go <a href="http://gpac.sourceforge.net/home_download.php">grab the latest sources for GPAC</a>, do the usual:</p>
<p><code>./configure &amp;&amp; make &amp;&amp; make install</code></p>
<p>After that you are ready to go, then go and <a href="http://www.nero.com/nerodigital/eng/down-ndaudio.php">download the latest version of the Nero encoder</a>, and you will notice a directory called &#8220;linux&#8221; inside it, you should copy all the files there to any location in your path, usually /usr/bin (if you are installing everything as root) or /home/yourusername/bin (if you are installing just for your user account).</p>
<p><strong>Step 2: Checking that everything is working as supposed.</strong></p>
<p>To check that everything is ok, you should type:</p>
<p><code>ffmpeg -formats</code></p>
<p>and you will get a LONG list of supported encoders and decoders, if you have the following line, you are ready to go:</p>
<p><code> EV    libx264</code></p>
<p><strong>Step 3: Doing the video encoding (or transcoding).</strong></p>
<p>So everthing looks great so far, except for one little detail, there is actually no support for any HE-AAC encoder directly from inside ffmpeg, so we will do the encode in 2 phrases, first the video, and then the audio.</p>
<p>From now on, i will assume that we have a video called &#8220;movie.avi&#8221; that we want to convert to a Flash Ready h264 file, so lets start encoding the video.<br />
I am a person who likes quality, so for this example I am going to use a 2 pass encoding process.</p>
<p>This is the command line to perform the first pass of the video encoding:</p>
<p><code>ffmpeg -y -i movie.avi  -an <strong>-pass 1</strong> -vcodec libx264 -b 384k -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -flags2 +mixed_refs -me umh -subq 5 -trellis 1 -refs 3 -bf 3 -b_strategy 1 -coder 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 384k -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.8 -qmin 10 -qmax 51 -qdiff 4 movie_temp.mp4</code></p>
<p>Depending on how long is your video source and how powerful is your computer, after some minutes it should finish, so it is time to make the second pass of the video encoding:</p>
<p><code>ffmpeg -y -i movie.avi  -an <strong>-pass 2</strong> -vcodec libx264 -b 384k -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -flags2 +mixed_refs -me umh -subq 5 -trellis 1 -refs 3 -bf 3 -b_strategy 1 -coder 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 384k -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.8 -qmin 10 -qmax 51 -qdiff 4 movie_temp.mp4</code></p>
<p>This pass is gonna take more time than the first one, because the first one just analyzes the video while the 2nd pass does the actual encoding.</p>
<p>IF everything went as supposed, after some time you should have a new file called &#8220;movie_temp.mp4&#8243; and you will notice that it is just your movie, but without sound&#8230;. dont alarm! we are going to make the sound part right now.</p>
<p><strong>Step 4: Doing the audio encoding.</strong></p>
<p>This part is pretty simple, we will use ffmpeg to create a simple wav file because the nero encoder only accepts a wav file as input, so we will do:</p>
<p><code>ffmpeg -i movie.avi -ar 48000 -ac 2 movie_temp_audio.wav</code></p>
<p>After this finishes, you will have a wav file called &#8220;movie_temp_audio.wav&#8221; that should be playable in any audio player of your choice, it basically contains the audio of your movie, so let&#8217;s transform this to a shiny HE-AAC Plus audio file.</p>
<p>To convert the wav audio file into an HE-AAC Plus file, we will use the Nero Encoder (neroAacEnc) and we will tell it to use our recently created wav file as source and output it to a new audio only mp4 file called &#8220;movie_temp_audio.mp4&#8243; like this:</p>
<p><code>neroAacEnc -br 48000 -he -if movie_temp_audio.wav -of movie_temp_audio.mp4</code></p>
<p>So ok, we have at this point one MP4 file with just video, and another MP4 file with just audio, lets mux all this into our final flash ready MP4.</p>
<p><strong>Step 5: Muxing everything into our final MP4 file ready for Flash broadcast.</strong></p>
<p>At this point we are going to use a program called &#8220;MP4Box&#8221; that is part of the GPAC utilities that you have already installed if you followed my instructions.</p>
<p>First, we will command MP4Box to add <strong>ONLY</strong> the video track of our first <em>video only</em> MP4 into our final MP4:</p>
<p><code>MP4Box -add movie_temp.mp4#video final_movie.mp4</code></p>
<p>This will create a new MP4 file called &#8220;final_movie.mp4&#8243;, and it will add our video track inside it. Now we need to add the audio track into our final movie file, to do that we do as follows:</p>
<p><code>MP4Box -add movie_temp_audio.mp4#audio final_movie.mp4</code></p>
<p>After this step, if you open your &#8220;final_movie.mp4&#8243; file with some video player like QuickTime, mPlayer or VLC, you should have a brand new h264 file with both video and audio, and with perfect sync between the two.<br />
We need now to do some extra steps to optimize the file for progressive HTTP streaming so the flash player doesn&#8217;t needs to download the whole file before starting to play it, so lets interleave our file:</p>
<p><code>MP4Box -inter 500 final_movie.mp4</code></p>
<p>This line will interleave meta information to the file every 500 msec, that way, the flash player will be able to play the file as soon as it gets the first 500msec of video data.</p>
<p>After you are satisfied with your result, you can simply type:</p>
<p><code>rm movie_temp* -f</code></p>
<p>to get rid of all the temporal files that you created.</p>
<p>Obviously, this involves a LOT of steps in order to create the final file, and it is good to make them one by one so you get an idea of what are you doing&#8230;. after all, the idea is to learn&#8230;. isn&#8217;t it ?<br />
But as you may suppose, the logical step after doing the &#8220;manual&#8221; way, is to create a bash script that is gonna do everything for us, so i give you below, an example of how this script could look:</p>
<pre><code class="bash">#! /bin/bash
# ${foo%.*} to remove the extension
# FIRST PASS
echo "Starting Pass 1 ! ! !"

ffmpeg -y -i $1 -an -pass 1 -vcodec libx264 -b 384k -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -flags2 +mixed_refs -me umh -subq 5 -trellis 1 -refs 3 -bf 3 -b_strategy 1 -coder 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 384k -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.8 -qmin 10 -qmax 51 -qdiff 4 ${1%.*}_temp.mp4

# SECOND PASS
echo "Starting pass 2 ! ! !"

ffmpeg -y -i $1 -an -pass 2 -vcodec libx264 -b 384k -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -flags2 +mixed_refs -me umh -subq 5 -trellis 1 -refs 3 -bf 3 -b_strategy 1 -coder 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 384k -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.8 -qmin 10 -qmax 51 -qdiff 4 ${1%.*}_temp.mp4

# Exporting audio to a temporal 48k WAVE file
ffmpeg -y -i $1 -ar 48000 -ac 2 ${1%.*}_temp_audio.wav

# Encoding audio to HE-AAC V2 (aacPlus SBR + PS) -- UNCOMMENT THE FOLLOWING LINE on LINUX / UNIX with the NERO encoder
neroAacEnc -br 48000 -he -if ${1%.*}_temp_audio.wav -of ${1%.*}_temp_audio.mp4

# Encoding audio to HE-AAC V2 (aacPlus SBR + PS) -- UNCOMMENT THE FOLLOWING LINE on Mac OS X and remember to comment the LINUX one:
# enhAacPlusEnc ${1%.*}_temp_audio.wav ${1%.*}_temp_audio.aac 48000 s

#Creates final MP4 container and adds video track...
MP4Box -add "${1%.*}_temp.mp4#video" ${1%.*}_flash_ready.mp4

#Adds audio track...
# IMPORTANT: If running this script on LINUX, UNCOMMENT THIS line:
MP4Box -add "${1%.*}_temp_audio.mp4#audio" ${1%.*}_flash_ready.mp4

# IMPORTANT:if running this script on a MAC, UNCOMMENT THIS line and remember to comment the LINUX one:
#MP4Box -add "${1%.*}_temp_audio.aac" ${1%.*}_flash_ready.mp4 

#Sets MetaData...
MP4Box -lang English ${1%.*}_flash_ready.mp4

#Interleaving (For HTTP Streming... this should be removed if using FMS / RTMP )
MP4Box -inter 500 ${1%.*}_flash_ready.mp4

echo "Deleting Temporary Files..."
rm ${1%.*}_temp* *.log -f

echo "DONE!"
echo "Your file has been encoded as ${1%.*}_flash_ready.mp4"</code></pre>
<p>You should make a file called, for example, mkmp4.sh and paste the script inside it, then chmod +x the file and move it to /usr/bin , after that, you should be able to run for example:</p>
<p><code>mkmp4 mymovie.avi</code></p>
<p>and the bash script will create a new file called mymovie_flash_ready.mp4 in the same directory, that assuming that you have all the needed tools in the path.</p>
<p>So happy encoding! if you have any questions or any problem, please post a comment here and i will try to help you as soon as i can. Please avoid to post questions about how to build / configure / compile software because i don&#8217;t really have the time to help you with that and there are a lot of tutorials for that on the web, and like i said, this tutorial assumes that you have the basic linux skills already inside your little brain.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.massanti.com/2007/09/28/encoding-h264-video-aac-plus-audio-for-flash/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
<enclosure url="http://movies.apple.com/movies/us/apple/mac/imac/2007/apple_solar_20070820_848x480.mov" length="13824259" type="video/quicktime" />
<enclosure url="http://plusmediaserver.com/media/new_imac_2007.mp4" length="1597936" type="video/mp4v-es" />
		</item>
		<item>
		<title>CSSEdit 2.5, a visual CSS Editor that doesn&#8217;t suck.</title>
		<link>http://blog.massanti.com/2007/09/27/cssedit-25-a-visual-css-editor-that-doesnt-suck/</link>
		<comments>http://blog.massanti.com/2007/09/27/cssedit-25-a-visual-css-editor-that-doesnt-suck/#comments</comments>
		<pubDate>Thu, 27 Sep 2007 05:26:19 +0000</pubDate>
		<dc:creator>Diego Massanti</dc:creator>
				<category><![CDATA[Web & Design]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macintosh]]></category>
		<category><![CDATA[visual]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://massanti.com/2007/09/27/cssedit-25-a-visual-css-editor-that-doesnt-sucks/</guid>
		<description><![CDATA[Oh my God, some weeks ago I bought a license for this amazing piece of software made by the guys at macrabbit.com. This is not just another CSS Editor, this is **THE** CSS Editor. Not only you can edit each and every aspect of the css code in a visual manner, but also, every change [...]]]></description>
			<content:encoded><![CDATA[<p><a title="CSSEdit 2.5 screenshot" href="http://massanti.com/wp-content/uploads/2007/09/maingui.jpg" rel="shadowbox[post-10];player=img;"><img class="right" src="http://massanti.com/wp-content/uploads/2007/09/maingui.thumbnail.jpg" alt="CSSEdit 2.5 screenshot" /></a>Oh my God, some weeks ago I bought a license for this <a href="http://macrabbit.com/cssedit/">amazing piece of software</a> made by the guys at <a href="http://macrabbit.com">macrabbit.com</a>. This is not just another CSS Editor, this is **THE** CSS Editor.<br />
Not only you can edit each and every aspect of the css code in a visual manner, but also, <strong>every change</strong> that you do is reflected in the display window <strong>in real time!</strong> Yay!<br />
One of the features that i really love about this software is the <em>&#8220;X-Ray&#8221;</em> function, where you basically click on the different elements of the webpage you are working on, and it tells you all the CSS classes that are affecting it, you also see the full inheritance tree and you can, obviously create new CSS Classes with full inheritance control thanks to the &#8220;inspector&#8221; window.<br />
<span id="more-10"></span><br />
Obviously, you also get a fully-featured <em>text-mode</em> CSS Editor with code sense capabilities and auto completion.<br />
There is actually just one thing that I don&#8217;t like about this software, and it is the way it manages the windows, i mean that when you are working with the CSS for a page, you need to have <strong>2 different windows opened</strong>, one for the <em>&#8220;kindasorta&#8221;</em> browser where you actually <strong>see</strong> the visual impact of your changes, and another second window for the actuall CSS code where you work, so too many times you want the browser window to be full screen, so you have to be switching windows over and over while you work, is not a big deal, but it is something that could be improvied by the use of tabs, or even better <strong>by the use of a &#8220;divided&#8221; window like <a href="http://www.adobe.com/products/dreamweaver/">Adobe Dreamweaver</a> does for the Code / Design view.</strong></p>
<p>Other than that, this software is really saving hours of my time and i could not be more happy with it, if you are into web design, i think you should really go and check it.</p>
<p>I wish there were something like this for windows and IE7 too, lot of friends and colleagues always tell me &#8220;hey, you should try <a href="http://litmusapp.com/cssvista/">CSSVista</a>&#8220;&#8230; right&#8230; well, it is NOT the same, not in a million years (no offense to the CSSVista guys).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.massanti.com/2007/09/27/cssedit-25-a-visual-css-editor-that-doesnt-suck/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

