Nemáte někdo zkušenosti s přehráváním rtsp streamů v XMMS? Našel jsem na to nějaký
popCorn plugin, ale nevím si moc rady s kompilací:
********************
***soubor INSTALL***
********************
popCorn MPEG1 Streaming Player
popcorn ----- addon ----- rtspw3c => rtsp addons for libwww
|
|
|
|--- lib ----- SDL ----- SDL.mbplay => SDL directory link
| |
| |
| |-- smpeg ----- smpeg.mbplay => smpeg directory link
| |
| |
| |-- w3c ----- w3c.mbplay => libwww directory link
|
|
|
|--- player => stand alone player
|
|
|--- plugin => plugin xmms
|
|
|--- src => overrides classes from
smpeg library
Requirements:
------------
To build from the PopCorn tarball, you need the following
source packages to sit untarred somewhere on your linux box (ideally
in the same directory where you untarred the PopCorn sources release):
- libwww (version 5.3.2) available at
http://www.w3.org/Library/Distribution/w3c-libwww-5.3.2.tar.gz
- libSDL (version 1.1.7) dloadable here:
http://www.libsdl.org/release/SDL-1.1.7.tar.gz
- libSMPEG (0.4.2) available via ftp at:
ftp://ftp.linuxgames.com/loki/open-source/smpeg/smpeg-0.4.2.tar.gz
Make sure you have enough freespace to build the release (with the libraries
above): about a 100 Mbytes.
Building & Installing of PopCorn:
--------------------------------
1. before compiling the plugin, verify the configuration in the
install-sh shell script:
- set the libraries source trees path variables to
your setup (LIB_WWW_PATH, LIB_SDL_PATH, LIB_SMPEG_PATH).
- Depending on your version of Xfree86, you will need to set
the XFREE_VERSION variable to either "3", if you have a previous
version of the X server, or to "4" if you have one of the latest
release of the Xfree software.
- Finally, check if the Xmms Input Plugin directory variable
(XMMS_IP_DIR) is set to a path corresponding to your setup.
If not, update it.
2. Log in as root ("su").
Run the install-sh script which takes care of the entire build and
install process.
If the script exits with no error, then you're all set to use PopCorn
as an xmms plugin.
Extras:
------
To use the stand alone player
1. cd player
2. make clean && make
3. ./mbplay --help
To use the rtsp program test
1. cd addon/rtspw3c
2. make clean;make
3. ./test
Michel Darricau V nápovědě k instalaci (uvedený kód) se píše, že potřebuji ty tři knihovny. Dvě už v systému mám a třetí jsem doinstaloval, pak jsem si ale všiml, že se po mě chtějí zdrojové kódy. Nevím, ale jestli se mám snažit postupovat přes jejich stažení a použití, nebo ne (když už je přece mám nainstalované?!). Potom se má upravit tenhle soubor:
********************
***soubor install.sh
********************
#!/bin/bash
# ---------------------------------------------------------------------------- #
# Copyright (C) 2001 eProcess S.A.
# This install.sh is free software; eProcess S.A.
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANDABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
# Install shell automating the building and installation process
# of the PopCorn package as well as the required libraries.
# ---------------------------------------------------------------------------- #
# ################################ #
# ******************************** #
# !!!CHANGE THESE TO YOUR NEEDS!!! #
# ******************************** #
# ################################ #
LIB_WWW_PATH=../w3c-libwww-5.3.2
LIB_SDL_PATH=../SDL-1.1.7
LIB_SMPEG_PATH=../smpeg-0.4.2
POPCORN_SRCDIR=$PWD
PLAYER_SRC_PATH=$POPCORN_SRCDIR/player
PLUGIN_SRC_PATH=$POPCORN_SRCDIR/plugin
LIBS_DIR=$POPCORN_SRCDIR/.libs
W3C_PATCH_FILE=$POPCORN_SRCDIR/patches/libw3c-patch
SMPEG_PATCH_FILE=$POPCORN_SRCDIR/patches/smpeg-patch
# Xmms Input plugin directory
export XMMS_IP_DIR=/usr/lib/xmms/Input
#export XMMS_IP_DIR=/usr/local/lib/xmms/Input
#export XMMS_IP_DIR=/usr/X11R6/lib/xmms/Input
#export XFREE_VERSION=3
export XFREE_VERSION=4
# ############################################################################ #
# clear the .libs dir
if [ -d "$LIBS_DIR" ]; then
rm -rf $LIBS_DIR
mkdir $LIBS_DIR
fi
# ################################### #
# Lib W3C patching & building process #
# ################################### #
echo "Starting the libW3C patching & building process"
if [ -e "$LIB_WWW_PATH" ]; then
if [ -f "$W3C_PATCH_FILE" ]; then
cd $LIB_WWW_PATH
patch -p1 < $W3C_PATCH_FILE || (echo "Patching process error!!!" && exit 1)
else
echo "!!!Error!!!"
echo "Unable to find the libw3c patch file!!!"
echo "Giving up..."
exit 1
fi
./configure --prefix=$LIBS_DIR && make && make install || (echo "!!!Error while building libW3C!!! Giving up..." && exit 1)
cd $POPCORN_SRCDIR
else
echo "!!!Error!!!"
echo "Unable to find the libw3c source tree!!!"
echo "Giving up..."
echo "Check the LIB_WWW_PATH value."
exit 1
fi
# ######################## #
# Lib SDL building process #
# ######################## #
echo "Starting the libSDL patching & building process"
if [ -e "$LIB_SDL_PATH" ]; then
cd $LIB_SDL_PATH
# make sure to clean old libSDL.a
./configure --prefix=$LIBS_DIR && make clean && make && make install || (echo "!!!Error while building libSDL!!! Giving up..." && exit 1)
cd $POPCORN_SRCDIR
else
echo "!!!Error!!!"
echo "Unable to find the SDL source tree!!!"
echo "Giving up..."
echo "Check the LIB_SDL_PATH value."
exit 1
fi
# ##################################### #
# Lib SMPEG patching & building process #
# ##################################### #
echo "Starting the libSMPEG patching & building process"
if [ -e "$LIB_SMPEG_PATH" ]; then
if [ -f "$SMPEG_PATCH_FILE" ]; then
cd $LIB_SMPEG_PATH
patch -p1 < $SMPEG_PATCH_FILE || (echo "Patching process error!!!" && exit 1)
else
echo "!!!Error!!!"
echo "Unable to find the smpeg patch file!!!"
echo "Giving up..."
exit 1
fi
./configure --with-sdl-prefix=$LIBS_DIR --prefix=$LIBS_DIR --disable-opengl-player && make clean && make && make install || (echo "!!!Error while building libSMPEG!!! Giving up..." && exit 1)
cd $POPCORN_SRCDIR
else
echo "!!!Error!!!"
echo "Unable to find the Smpeg source tree!!!"
echo "Giving up..."
echo "Check the LIB_SMPEG_PATH value."
exit 1
fi
# ##################################### #
# PopCorn libSMPEGRTSP building process #
# ##################################### #
echo "Starting the libSMPEGRTSP building process"
cd $PLAYER_SRC_PATH
make clean && make && make install || (echo "!!!Error while building libsmpegrtsp.a!!! Giving up..." && exit 1)
cd $POPCORN_SRCDIR
# #################################### #
# PopCorn XMMS plugin building process #
# #################################### #
echo "Starting the plugin building process"
cd $PLUGIN_SRC_PATH
if [ "$XFREE_VERSION" = "3" ]; then
make clean && make all-3 && make install-3 || (echo "!!!Error while building the plugin for XFree86 3.X!!! Giving up..." && exit 1)
else
make clean && make all-4 && make install-4 || (echo "!!!Error while building the plugin for XFree86 4.X!!! Giving up..." && exit 1)
fi
cd $POPCORN_SRCDIRMusí se v něm změnit cesty k těm knihovnám (asi jsou na mysli cesty ke zdrojákům), ale ty já už mám, tak mě napadlo (asi špatně), že bych tam napsal cesty k již nainstalovaným verzím. Jak ale na to, když jsou rozstrkány všude po systému (/usr/bin, /usr/lib, /usr/share/.., atd.). Další co nechápu je ta verze XFree - v Ubuntu je Xorg (nebo tu jde o něco úplně jiného?). A vůbec, když se tak dívám, na ten instalační skript, tak se mi zdá, že si to chce udělat všechno sám. Taky se mi nelíbí "make install", radši bych použil "checkinstall", abych měl všechno hezky v balíčcích. Mohl by mi někdo poradit, jak ten skript poupravit?
Nebo to udělat jinak (jde mi jen o ten plugin do XMMS) - že by se nějak (netuším jak) vycucal z těch všech souborů těch zdrojáků (nic by se nikam nijak neinstalovalo) a ty potřebné soubory bych si jen překopíroval do ~/.xmms/Plugins. Přikládám výpis ls -R toho adresáře:
********************
***adresářová struktura
********************
addon INSTALL install-sh patches player plugin README src
./addon:
rtsp_w3c
./addon/rtsp_w3c:
HTRTSP.c makefile RTSPGen.h RTSPLib.h RTSPRdr.h RTSPReq.h RTSPSession.h test_session.c
HTRTSP.h RTSPGen.c RTSPLib.c RTSPRdr.c RTSPReq.c RTSPSession.c RTSPUtil.h WWWRTSP.h
./patches:
libw3c-patch smpeg-patch
./player:
makefile mbplay.cpp mbplay.h
./plugin:
cmd_MBPlayerStub.cpp makefile MBPlayerStub.h test_xmms_plug.cpp xmms_MBPlayerStub.h
cmd_MBPlayerStub.h MBPlayerStub.cpp popcorn_debug.h xmms_MBPlayerStub.cpp
./src:
MBMPEG.cpp MBMPEG.h MBMPEGsystem.cpp MBMPEGsystem.hNa
audiocoding.com se o jednom z přehrávačů píše
can decode MP4 streams via RTSP with FAAD2
, tak jsem nainstaloval xmms-mp4 plugin, ale ani ten nepomohl
Na ty rtsp:// streamy jsem dosud používal VLC, ale nelíbí se mi. Přehrávání funguje i v MPlayeru, ale to grafické rozhraní mi taky moc nesedí. Pak jsem objevil geniální xmmplayer plugin, který nechá XMMS, ať si na přehrávání zavolá mplayer, takže chci přehrávání multimédií řídit pěkně z jednoho místa - z XMMS (dokonce jsem si našel i pěkný desklet, který jsem si trochu poupravil). Nikde jsem ale nenašel, jak přinutit XMMS, aby si na rtsp zavolal taky toho MPlayera.
Hledal jsem všude možně, ale nic moc uspokojivého jsem nenašel (akorát ten popCorn - což bude asi taky nejsnazší cesta). Buďto je to všechno tak jednoduché, že se o tom nikdo nerozepisuje, nebo neexistuje žádný (anglicky mluvící) člověk, co by přehrával audio&video tak, jak si to představuji.
Bohužel teď nemám čas na to, abych to dořešil a pak tu nabídl nějaký ten návod. Doufám, že jsem aspoň někoho zaujal natolik, že se pokusí to odzkoušet, nebo mi aspoň poradit jak na to. Pro takové jedince přikládám pár dalších stránek, co jsem prošel a shledávám je zajímavými.
Další info:
Implementace RTSPNějaký podobný případ jako já - moc jsem to ale nepochopil - je to nepochybně drobně nad moji současnou úroveň
PS: nebráním se ani kompletní změně přehrávače, pokud ale bude umět to co mi nabízí (resp. doufám, že bude) XMMS (včetně pluginů, z nichž některé jsou pro požadované chování vhodné). Stačí, když bude mít podobně intuitivní rozhraní, a přitom klidně může spouštět jiné prográmky obsluhující speciální funkce (vždyť přece takovýto princip - přirovnávaný ke stavebnici - je jedním ze základních kamenů *NIXů