19

Okay. I've got a few ogg files I've created using a desktop recording tool. I've transcoded them using ffmpeg once (mainly to clip out the beginnings and the ends).

Now, I have 3 such files which I want to concatenate into a single .ogv file. I tried using oggCat, it crashed with some kind of error (I tried concatenating a file to itself using oggCat and that failed too leading me to believe that my distro is shipping a broken version of the package). Simply cating the files works but I can't seek which is not cool. mencoder run like this mencoder -ovc lavc -oac lavc file1.ogv file2.ogv file3.ogv -o complete.ogv. It transcodes the files into an avi and clips off a little of the 3 videos.

So, how do I do this?

Update 1: My current workaround is to transcode the 3 files into .mpg using ffmpeg, then cating them together and then transcoding them back into ogv.

Update 2: PiTiVi works for this kind of thing but I need something from the command line that I can automate and script.

4 Answers4

9

Ogg Video Tools seems to do what you are looking for.

Short description:

Sometimes it would be nice to concatenate (join) two or more video files. For that you can use oggCat, which creates a continuous Ogg video file from the given files.

# oggCat newFile.ogv file1.ogv file2.ogv [ file3.ogv [...] ]

Note: The video files must correspond in framerate, keyframe gap, framesize etc.

See more here and here.

soandos
  • 24,600
  • 29
  • 105
  • 136
6

I would use ffmpeg's concat demuxer for this (requires a recent version of ffmpeg).

First, create a file called inputs.txt (or any arbitrary name), containing lines like:

file '/path/to/input1.ogv'
file '/path/to/input2.ogv'
file '/path/to/input3.ogv'

Note that that can be a relative or an absolute file path. If your files are all in the same directory and named in a pattern similar to input1.ogv, input2.ogv..., you can use a for loop to generate inputs.txt:

rm inputs.txt; for f in input*.ogv; do echo "$f" >> inputs.txt; done

Once you've created your file, you can losslessly concatenate the ogv files like so:

ffmpeg -f concat -i inputs.txt -c copy output.ogv
evilsoup
  • 14,056
1

http://www.xiph.org/oggz/ has a feature,

  • merge Merge Ogg files together, interleaving pages in order ofpresentation time.

Edit: This does not do what you want as you want to play one video after another one.


http://sox.sourceforge.net might work too, the syntax ( http://sox.sourceforge.net/sox.html ):

 sox infile1 infile2 outfile

Edit: this handles audio only.


You could try to compile the oggvideotools and see if oggCat works then.

Edit: this worked for you...


You could ask at http://sourceforge.net/projects/oggvideotools/support to fix the issues with your distribution, including the text of error messages that you have when you 1) run the binary you get from your distribution repositories 2) compile 3) run the compiled version.

Edit: you are looking for alternative programs to do the concatenation.


Try using mkvtoolnix to concatenate ogg files into single mkv, then extract ogg from it using the same tool

1

Have you tried using PiTiVi? Place the three clips sequentially on the timeline and then save the result as one file.