Ziel: Streaming über NUR 256 KBits (ADSL upload) mittels mplayer -vo xv http://IP:3000/Extern/1
mein /root/externremux.sh:
#!/bin/bash
rm -f /tmp/out.avi
/usr/bin/mkfifo /tmp/out.avi
cat /tmp/out.avi &
/usr/bin/mencoder -oac mp3lame -lameopts cbr:br=48 -vf scale=0:0:1:0:0.33:0.33:qpal -ovc xvid -xvidencopts bitrate=128 -quiet -o /tmp/out.avi -- - &>/tmp/out.log
?? hat da wer eine Lösung ohne fifo ??
Mit folgenden Patch für streamdev/remux/extern.c hat das streaming dann bei mir funktioniert:
---------------------------------------------------- cut ----------------------------------------------------
--- extern.c_orig 2005-12-08 11:37:10.000000000 +0100
+++ extern.c 2005-12-08 11:38:34.000000000 +0100
@@ -3,6 +3,7 @@
#include <vdr/tools.h>
#include <sys/types.h>
#include <signal.h>
+#include <wait.h>
class cTSExt: public cThread {
private:
@@ -57,7 +58,7 @@
for (int i = STDERR_FILENO + 1; i < MaxPossibleFileDescriptors; i++)
close(i); //close all dup'ed filedescriptors
- printf("starting externremux.sh\n");
+// printf("starting externremux.sh\n");
execl("/bin/sh", "sh", "-c", "/root/externremux.sh", NULL);
printf("failed externremux.sh\n");
_exit(-1);
@@ -77,6 +78,7 @@
close(m_Outpipe);
close(m_Inpipe);
kill(m_Process, SIGTERM);
+ waitpid(m_Process, 0, 0);
}
void cTSExt::Action(void)
---------------------------------------------------- cut ----------------------------------------------------
das Problem war dass die prinf Ausgabe in den stream geschrieben wurde und somit der
avi header von mplayer nicht erkannt wurde, den mplayer aber für mpeg4 anscheinend benötigt
waitpid verhindert zombie's
cu Peter