Kod
E:\Pulpit\stream>lame -h
LAME 32bits version 3.98.2 (http://www.mp3dev.org/)
usage: lame [options] <infile> [outfile]
<infile> and/or <outfile> can be "-", which means stdin/stdout.
LAME 32bits version 3.98.2 (http://www.mp3dev.org/)
usage: lame [options] <infile> [outfile]
<infile> and/or <outfile> can be "-", which means stdin/stdout.
Mam problem z konwertowaniem mp3. Używam lame, ale zamiast standardowego odczytu z pliku i zapisu do pliku, wolę użyć proc_open i pipe'y (uchwyty do plików, czy jakkolwiek to sie tłumaczy). Gdy podam zamiast wejścia - plik, wszystko działa jak trzeba:
<?php $sCommand = 'lame.exe '.$sFile.' -' ?>
I otrzymuje na w $sPipe[1] poprawnie zakodowane dane.
Gdy podam zamiast wyjścia - plik, też działa jak trzeba:
<?php $sCommand = 'lame.exe --mp3input - song.mp3'; ?>
W stdin ląduje poprawnie piosenka, a w pliku song.mp3 są poprawne dane.
Ale, (jak zawsze, coś gdzieś musi polec) gdy wrzuce jako wejscie i wyjście stdin i stdout:
<?php $sCommand = 'lame.exe --mp3input - -'; $iCount = 0; $iSentCount = 0; $sFile = 'E:SharedDnB & BreakcoreKubrak-Obiebozza.mp3'; ); { { } }else throw new Exception('Nie otwarto procesu'); ?>
Zacina się przy pierwszym wykonaniu pętli na fwrite(). Tzn. nie idzie dalej.
Gdy umieszczę fwrite poza pętlą - to samo. Gdy zapiszę jedną paczkę danych odczytuje i zapisuje 8192 bajty, otrzymuje: 7914. (czyli niby ok).
Jakiś pomysł ? Najprawdopodobniej jest to wina lame, ale rozgryźć tego nie potrafię.
Zawartość encoder_error.txt:
Kod
ID3v2 found. Be aware that the ID3 tag is currently lost when transcoding.
LAME 3.98.2 32bits (http://www.mp3dev.org/)
CPU features: MMX (ASM used), SSE (ASM used), SSE2
Using polyphase lowpass filter, transition band: 16538 Hz - 17071 Hz
Encoding <stdin> to <stdout>
Encoding as 44.1 kHz j-stereo MPEG-1 Layer III (11x) 128 kbps qval=3
Error writing mp3 output
LAME 3.98.2 32bits (http://www.mp3dev.org/)
CPU features: MMX (ASM used), SSE (ASM used), SSE2
Using polyphase lowpass filter, transition band: 16538 Hz - 17071 Hz
Encoding <stdin> to <stdout>
Encoding as 44.1 kHz j-stereo MPEG-1 Layer III (11x) 128 kbps qval=3
Error writing mp3 output