Alrighty. Here's what I did.
I got a video (A) from Youtube. It plays fine with various media players. I used FLVExtract to separate it into its FLV (B) and MP3 (C) components, both of which play fine. I've got a new MP3 (D) of precisely the same duration which I want to mux back into the audio-less FLV (B) I generated with FLVExtract.
I tried this command with ffmpeg:
ffmpeg -i B.avi -i D.mp3 E.flv
Ffmpeg properly recognized B.avi as an FLV file, and D.mp3 as an mp3. It generated E.flv. But it reencoded the data, and the result is highly degraded in quality. In order to overcome this, I then tried:
ffmpeg -i B.avi -i D.mp3 -vcodec copy -acodec copy E.flv
This time, ffmpeg was kind enough to fail, informing me that, "error, non monotone timestamps 13 >= 0". I'm quite fuzzy on what this means. But some hunting revealed that Mencoder should be able to generate timestamps without re-encoding. Accordingly, I tried this:
mencoder B.avi -ovc copy -D.mp3 -oac copy -o E.flv
This seemed to work, but I got a little suspicious when the output file was actually a hair smaller than the video component (never mind the combined size of video and audio). Sure enough, nothing could play the E.flv Mencoder had generated.
Anyway, that's all I'm trying to do. Combine the FLV video with the MP3 audio without reencoding. They're both the same duration. The MP3 is a CBR with nothing fancy. Should I be using something else? Some other command line?
+ Reply to Thread
Results 1 to 10 of 10
ffmpeg doesn't fail with the non-mono tone errors. It's just informing you your source files weren't created correctly. There should be a different error message at the end to preclude what the problems is. Considering both mencoder and ffmpeg fail to do a simple copy of streams, suggests the streams are at fault?
Why don't you use ffmpeg to process the original flv and just add a new audio file to it? -newaudioLinux _is_ user-friendly. It is not ignorant-friendly and idiot-friendly.
Originally Posted by disturbed1
ffmpeg -i A.flv -i B.wav -ab 96 E.flv
It processes the original flv alright, but it ignores the wav file and uses the original flv's audio. Furthermore, any attempt I make to undertake the - let's face it - convoluted process for 2-pass encoding fails utterly. Usually I get a complaint about not being to scale an "unsupported format", which strikes me as perhaps an inaccurate assessment.
But before I move on to the grandiose achievement of 2-pass encoding, I'd better figure out why I can't get ffmpeg to use video from A, audio from B, and generate C. Or, rather, see if anyone's used the program enough to be able to intuit what I'm doing wrong. ;p
Here's the last quandry I am dealing with. I cannot get ffmpeg to encode a wav file. Not by itself (with -vn), and not as the audio component merged with a flv which it created. It recognizes the wav as audio. The wav is the same duration as the flv. Here is what it says:
ffmpeg.exe -i trying.wav -vn -ab 96kb blah1.mp3
Input #0, wav, from 'trying.wav':
Duration: 00:05:29.2, bitrate: 2822 kb/s
Stream #0.0: Audio: 0x003, 44100 Hz, stereo, 2822 kb/s
Output #0, mp3, to 'blah1.mp3':
Stream #0.0: Audio: libmp3lame, 44100 Hz, stereo, 96 kb/s
Stream #0.0 -> #0.0
Unsupported codec (id=0) for input stream #0.0
I have tried three different ffmpegs and they all say the same thing. I have also tried getting ffmpeg to combine the flv (which, again, it created) with an mp3 made from the wav with Adobe Audition, CBR so nothing fancy, and that's when it instead decides there are timestamp issues and doesn't work.
Maybe there needs to be a front-end for ffmpeg, called "Ffmpeg baby" or something, whose sole purpose is to ensure that the hygiene of the input files aren't going to generate ambiguous failure messages.
44100 Hz, stereo, 2822 kb/s