Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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.

share|improve this question
    
@gry, What is missing from the current answer? –  soandos Dec 29 '11 at 8:10
    
@gry, but you want the exact same features, but a different name? or is there a functionality difference you are looking for. I disagree that this is what the OP was asking for. He wanted his files concatenated, and oggCat was not working. Now it is, so I don't follow as to what is missing. –  soandos Dec 29 '11 at 8:44
    
@soandos: The original question was "oggCat does not work for me, is there an alternative?" and though the asker got it to work, it could be useful to find possible alternatives as originally expected. –  user89272 Dec 29 '11 at 8:47
    
@gry, it 1) is fixed now (see last comment on my answer) and 2) I can't find the comment you are citing. –  soandos Dec 29 '11 at 8:47
1  
My main intention was to get the videos concatenated. By the time the answers came up, I moved away from ogv and so didn't really care about the question too much. I explicitly mentioned that I didn't want to use oggCat because it wasn't working for me when I asked the question. –  Noufal Ibrahim Dec 29 '11 at 18:07
show 1 more comment

4 Answers

up vote 5 down vote accepted
+50

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.

share|improve this answer
2  
I've mentioned my experiences with oggCat in my question. Didn't work even when I tried to concatenate the file to itself. –  Noufal Ibrahim Dec 22 '11 at 7:59
    
Have you tried downloading the package directly? And what was the error? –  soandos Dec 22 '11 at 8:13
1  
I tried compiling it from source. I got a very large hexdump and then a segfault. –  Noufal Ibrahim Dec 22 '11 at 8:21
    
this file? You might want to try an earlier version if compiling this fails. –  soandos Dec 22 '11 at 8:25
    
Not sure if this is any use to you, but the binary version I downloaded works. –  soandos Dec 22 '11 at 8:30
show 1 more comment

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

share|improve this answer
1  
Merging is different from concatenation and doesn't do what I want. sox is audio only and doesn't handle videos. –  Noufal Ibrahim Dec 19 '11 at 5:46
1  
It "interleaves pages in order of presentation time". I want to concatenate. One should play after the other is over. –  Noufal Ibrahim Dec 19 '11 at 6:50
1  
Since this is the only answer, I guess Stack Exchange will award it the bounty even though it doesn't answer the question at all. –  Noufal Ibrahim Dec 19 '11 at 17:24
1  
I can get any of these tools "fixed" by asking on the respective mailing lists, issue trackers. I'm searching for alternatives to the ones I've specified. –  Noufal Ibrahim Dec 20 '11 at 16:12
1  
I'll try mkvtoolnix although I'd prefer something like oggCat which actually works. I've given up on ogg though. Many people can't seem to play it. I've switched to webm and an flv fallback. –  Noufal Ibrahim Dec 21 '11 at 6:12
show 1 more comment

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

share|improve this answer
    
Yes but it's not command line. I can't automate this using a script if I use PiTiVi. –  Noufal Ibrahim Dec 22 '11 at 7:35
1  
I've mentioned the point in my question now. –  Noufal Ibrahim Dec 22 '11 at 7:36
add comment

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
share|improve this answer
    
I wasn't aware of this. Thanks. –  Noufal Ibrahim Jan 31 '13 at 4:54
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.