Toon posts:

[FFmpeg] Conversie naar FLV

Pagina: 1
Acties:
  • 117 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Momenteel voer ik vanuit PHP met behulp van system() het programma ffmpeg uit, wat vooralsnog erg goed werkt:
Het is me gelukt om serverside van allerlei formaten (wmv, avi, ,quicktime, mpeg, 3gp) naar FLV te converteren. Als ik met de commandline switch -na geef voor 'no audio' dan werkt het
als een trein...

Probeer ik echter het geluid uit het bronbestand naar de FLV te encoden, dan krijg ik:
"fatal error: mp3 not padded"

Veel kan ik er niet over vinden.. op mailinglists speculeert men dat dit zou liggen aan de "NellyMoser" audio-codec van Sorenson die in FLV wordt gebruikt - en dat is een 'closed format', waar FFmpeg niet naartoe kan converten. (maar waarom dan wel WMV enzo? da's toch ook propietary?)

Betekent dit einde verhaal voor serverside *.* -> *.FLV conversie?
Of is dit iemand gelukt hier?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

* NMe ziet geen regel code hieraan te pas komen. Softwareproblemen horen niet in Programming & Webscripting, maar in dit geval eerder in Non-Windows Operating Systems. :)

PW>>NOS

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Niemand ervaring met serverside FLV genereren?
(excuses voor de kick, maar tis niet onbelangrijk)

Het is me nog steeds niet gelukt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
gijs@basecamp:~/public_html/transcoding> ffmpeg -y -i invoer.avi -acodec mp3 -ab 128 uitvoer.flv
Input #0, avi, from 'invoer.avi':
  Duration: 00:00:21.1, bitrate: 846 kb/s
  Stream #0.0: Video: mjpeg, 160x120, 20.00 fps
  Stream #0.1: Audio: pcm_u8, 11024 Hz, mono, 88 kb/s
Output #0, flv, to 'uitvoer.flv':
  Stream #0.0: Video: flv, 160x120, 20.00 fps, q=2-31, 200 kb/s
  Stream #0.1: Audio: mp3, 11024 Hz, mono, 128 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Error while opening codec for stream #0.1 - maybe incorrect parameters such as bit_rate, rate, width or height

[ Voor 78% gewijzigd door Verwijderd op 11-05-2005 21:47 ]


Verwijderd

Je hebt ffmpeg niet met lame support (--enable-gpl --enable-lame) gecompileerd? En elk probleem is nooit onbelangrijk. ;).

Verwijderd

Topicstarter
Verwijderd schreef op donderdag 12 mei 2005 @ 19:11:
Je hebt ffmpeg niet met lame support (--enable-gpl --enable-lame) gecompileerd? En elk probleem is nooit onbelangrijk. ;).
had ik gedaan... maar ook dat werkte niet... ik heb het maar opgegeven:

update:

ik ben overgestapt op een clientside encoding mechanisme: (scheelt veel server cpu)
een C# programma waar je een file in kan slepen
op die file wordt 'ffmpeg.exe -y -i "input.ext" "output.flv"' losgelaten totdat het ffmpeg proces klaar is
daarna wordt het resulterende bestand geupload maar dat terzijde...

ik heb onder windows met MingW en MSYS de current CVS versie gecompiled mét LAME-support
(en met 3GP, Zlib & Xvid libs)
dit levert een versie van ffmpeg.exe op die in elk geval meer kan dan de versie in de startpost, maar ik stuit op een aantal andere problemen:

-bij invoer bestanden boven pakweg 15MB stopt ffmpeg ermee (cpu nul %)
(dit wil ik vooral graag oplossen... kan dit ook aan de manier van coden liggen?
soms werkt het in C# niet terwijl het via de commandline wel werkt...
iets te maken met bufferen, locken van resources/streams.. anything?)

-soms krijg ik "MPEG motion vector out of boundary" meldingen
geen idee wat dat inhoud maar het klinkt vrij complex om op te lossen
-quicktime files worden niet omgezet (??)
-wmv files ook niet maar dat boeit niet zo

dit is een snippet uit de code:
(dont shoot me, ben geen programmeur.. in elk geval geen goeie)
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
....
                try
                {
                    System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create ();
                    string encryptedHash = BitConverter.ToString(md5.ComputeHash(System.Text.Encoding.ASCII.GetBytes(inputClip))).Replace("-", String.Empty).ToLower();
                    string outputClip = encryptedHash + ".flv";
                    //MessageBox.Show(encryptedClipName);

                    sendStatus.Text = "Converting...";
                    //MessageBox.Show("Converting footage:\n" + inputClip + "\nClick OK to proceed...");
                    System.Diagnostics.Process ffmpegProc = new System.Diagnostics.Process();
                    System.Diagnostics.ProcessStartInfo i = new System.Diagnostics.ProcessStartInfo();
                    i.FileName = "ffmpeg.exe";
                    //i.Arguments = "-y -i " + inputClip + " -o output.flv";
                    //i.WorkingDirectory = ".";
                    //MessageBox.Show(inputClip);
                    i.Arguments = "-y -i \""+inputClip+"\" "+ outputClip;
                    //i.Arguments = "-y -i input.avi output.flv";
                    i.RedirectStandardOutput = true;
                    i.RedirectStandardInput = true;
                    i.RedirectStandardError = true;
                    i.CreateNoWindow = true;
                    i.UseShellExecute = false;
                    ffmpegProc.StartInfo = i;
                    ffmpegProc.Start();
                    SendProgressBar.Value = 1;
                    string output = ffmpegProc.StandardOutput.ReadToEnd();
                    while(!ffmpegProc.HasExited) 
                    {
                        SendProgressBar.Value = 2;
                        // hold for ffmpeg
                        SuspendLayout();
                    }
                    SendProgressBar.Value = 3;
                    if(ffmpegProc.ExitCode != 0) 
                    {
                        // reset progressbar
                        SendProgressBar.Value = 0;
                        sendStatus.Text = "Error";
                        MessageBox.Show(output);
                    }
                    else 
                    {
                        // ffmpeg should've finished by now.. continuing
                        sendStatus.Text = "Done!";
....

[ Voor 10% gewijzigd door Verwijderd op 17-05-2005 22:57 ]


Verwijderd

Topicstarter
ja nu mag het topic eigelijk wel weer terug naar Programming (?)

Verwijderd

Verwijderd schreef op dinsdag 17 mei 2005 @ 22:55:
had ik gedaan... maar ook dat werkte niet... ik heb het maar opgegeven:[/code]
Jij bent ook een mooie, ik heb de code hier recht voor m'n neus. Je krijgt dan in ieder geval een andere foutmelding. De vraag: welke? Met c# heb ik geen ervaring, kan ik dus niks over zeggen.

Verwijderd

Topicstarter
ja nu lijkt het alsof ik puur daardoor ben geswitched qua aanpak
maar het is bij nader inzien ook niet echt slim om op (middel)grote schaal serverside video te gaan converteren..althans niet op mijn lowtech openbsd systeem

'had ik gedaan' moet zijn 'had ik geprobeert' want zelfs het compilen lukte niet (met de cvs versie)
echt veel verder dan ./configure make make install kom ik normaalgesproken niet (hoeft ook niet)
maar het configure script stond niet eens in de tarball volgens mij... het was in elk geval onuitvoerbaar en ik snapte er geen hout van

eerder (in beginpost) gebruikte ik dus de ffmpeg versie die ik met pkg_add had geinstalleerd (dus waarschijnlijk zonder LAME support)

heb je nog tips over het compilen van ffmpeg-cvs-current (met lame) onder openbsd?
(ik hoef geen tutorials, meer een waar-te-beginnen tip)

Verwijderd

Verwijderd schreef op dinsdag 17 mei 2005 @ 23:33:
'had ik gedaan' moet zijn 'had ik geprobeert' want zelfs het compilen lukte niet (met de cvs versie)
echt veel verder dan ./configure make make install kom ik normaalgesproken niet (hoeft ook niet)
maar het configure script stond niet eens in de tarball volgens mij... het was in elk geval onuitvoerbaar en ik snapte er geen hout van
[..]
heb je nog tips over het compilen van ffmpeg-cvs-current (met lame) onder openbsd?
(ik hoef geen tutorials, meer een waar-te-beginnen tip)
Ja, vertel me eens wat er nou echt fout gaat, ik wil best helpen maar ik kan gewoon weinig met dit verhaal. Welk commando ging fout? Wat was de foutmelding? Je verhaal is echt zwaar vaag. Het lijkt alsof je onder BSD geen automatisch permissie-vergeving hebt, en dan is configure idd onuitvoerbaar. "chmod a+x configure" zou dat bijvoorbeeld kunnen oplossen. Echter, als het bestand weg is (wat dus niks met een onuitvoerbaar bestand te maken heeft), lijkt het alsof je de SourceForge repository hebt geprobeerd. Je weet toch dat ffmpeg op mplayer's CVS zit (zie mplayerhq.hu -> download -> onderaan)?
eerder (in beginpost) gebruikte ik dus de ffmpeg versie die ik met pkg_add had geinstalleerd (dus waarschijnlijk zonder LAME support)
Dat klopt inderdaad. :).
Pagina: 1