tags:

views:

206

answers:

2

I have a bunch of, I think, x264 encoded AVIs that I'd like to convert to m4v so that I can play with Quicktime. Here's how I created them

First I dump the vob from DVD with this:

$ mplayer -dumpstream -dumpfile new.vob dvd://1

Then I compress it:

$ mencoder -oac copy -o new.avi -ovc x264 -x264encopts crf=18 new.vob

I tried doing this to convertthem to m4v, but it's blowing up...

I tried dumping the h264/acc streams:

$ mplayer new.avi -dumpvideo -dumpfile new.h264
$ mplayer new.avi -dumpaudio -dumpfile new.acc

And remuxing(?) with MP4Box but I'm getting an error:

$ MP4Box -add new.h264#video -add new.aac#audio new.m4v
Cannot find H264 start code
Error importing new.h264#video: BitStream Not Compliant

So not sure what to do now...

A: 

Use handbrake. (Question belongs on SuperUser)

Orion Edwards
handbrake can't do video passthrough... anything i do in handbrake with this file will compress the video again (even more than it already is)
crankharder
A: 

If I were you, I would just use ffmpeg. ffmpeg has a magic ‘codec’ called copy which simply copies the content, rather than re-encoding, which is useful for precisely your use case — changing container without re-encoding.

From the ffmpeg man page:

-vcodec codec

Force video codec to codec. Use the "copy" special value to tell that the raw codec data must be copied as is.

-acodec codec

Force audio codec to codec. Use the "copy" special value to specify that the raw codec data must be copied as is.

So, to put this into practice:

$ ffmpeg -i new.avi -acodec copy -vcodec copy new.m4v

I use this technique for reformatting H.264 videos inside an FLV container into an MP4 container, which drastically improves lip sync in some cases.

Jeremy Visser