Медиаплеер с открытым исходным кодом, относящийся к свободному программному обеспечению. Поддерживает более чем 192 видео и 85 аудио форматов. Работает на большинстве современных операционных систем (Linux, Windows, Mac OS X, FreeBSD и т.п.), изначально разрабатывался для Linux. Поддерживает разнообразные устройства вывода изображения, такие как DirectX, VESA, SDL, X11, Quartz Compositor, включая такое своеобразное устройство вывода как ASCII-арт, то есть имеется возможность смотреть видео в текстовом режиме. Большинство аудио и видео форматов поддерживаются родной для MPlayer свободной библиотекой libavcodec, использующей код проекта FFmpeg, которой вполне достаточно для проигрывания DVD дисков и многих XviD/DivX файлов, однако некоторые файлы в проприетарном формате могут потребовать внешних DLL библиотек, поддержка которых также предусмотрена.
Официально последние версии MPlayer доступны только в виде исходников, поэтому рекомендуется пользоваться неофициальными сборками от сторонних авторов, либо самому компилировать файлы плеера из исходников. Поскольку плеер является консольным (не имеет графического интерфейса), для комфортной работы с ним также понадобится какая-нибудь графическая оболочка (GUI), а для поддержки дополнительных форматов необходимо будет установить пакет бинарных кодеков.
MPlayer for Windows - универсальная сборка от LoRd MuldeR. Включает последние билды MPlayer от Gianluigi Tiesi, оптимизированные для различных CPU, две самых популярных графических оболочки SMPlayer и MPUI и пакет бинарных кодеков (в полной версии). Обновляется, по крайней мере, раз в месяц, включает автозагрузку. Упрощенная сборка содержит только MPlayer и MPUI.
Новичкам дальше читать необязательно (а то опухнуть можно, если увлечься).
Другие сборки: Gianluigi Tiesi, william0wang, [more=BakLAN]MPlayer-SVN-r29418
MPlayer-SVN-r31978-4.5.0[/more], другие
Графические оболочки для MPlayer: SMPlayer, MPUI, MPUI-hcb, MPlayerGUI, MPF, rulesPlayer, Kliper, другие
Графические оболочки для MEncoder: MEninX, gui4menc0, MEncoder264, MeWiG, X-Mencoder, другие (см. также здесь и здесь). Сам MEncoder как правило распространяется вместе с ними.
Дополнительные шрифты для OSD.
[more=Скрипт по "нарезке" фрагментов фильмов при помощи mencoder-а и ffmpeg-а для *nix систем]
#!/bin/sh
###############################################################
# Licensed under Creative Commons by-nc-sa #
# http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB #
# created by sda (sda00@himki.net) #
###############################################################
export TMPDIR="/tmp"
export RESULTDIR="./movies_splitted"
export INPUTDIR="./"
export ffmpeg="ffmpeg"
export mencoder="mencoder"
export FORMAT="x264" # there's only 2 supported at the moment: x264 and mpeg4
export output_qty="3"
export output_timing="30"
export output_dimension="240x180"
# export use_ffmpeg="1"
export encoder_time_shift="1200"
case $1 in
--help)
echo -e '\E[37;44m'"\033[1mNAME\033[0m"
echo " movie_splitter - is a script aimed to be handy in making multiple cuttings out of a movies."
echo " It uses 'mencoder' or 'ffmpeg' (or both of them) and capable to make encoding"
echo " in 'x264' or 'mpeg4' video codec."
echo ""
echo -e '\E[37;44m'"\033[1mSYNOPSIS\033[0m"
echo " movie_splitter [options]"
echo ""
echo -e '\E[37;44m'"\033[1mOPTIONS\033[0m"
echo " You're welcome to tune them as you like... "
echo ""
echo " -d Set 'output_dimension' of [WxH], like: -d 240x180. Aspect always preserved. "
echo ""
echo " -f Use 'ffmpeg' for encoding."
echo ""
echo " -F Set full path to 'ffmpeg' binary."
echo ""
echo " -fmt Set video codec format: -fmt mpeg4 or -fmt x264. x264 is a default value."
echo ""
echo " -i Turn on 'single file mode' by setting a full path to a desired movie."
echo " In this case filename should not contain spaces and other 'special' characters."
echo ""
echo " -I Turn on processing of a desired catalogue with your movies. Nested folders are left intact."
echo " In this case filenames are NOT restricted."
echo ""
echo " -m Use 'mencoder' for encoding."
echo ""
echo " -M Set full path to 'mencoder' binary."
echo ""
echo " -O Set desired catalogue for encoded results. It's highly recommended to keep them seperate from the sources."
echo ""
echo " -q Set quantity of a 'thumbnails' per source movie. Default value is 3."
echo ""
echo " -s Set 'time shift' - interval in seconds between cuts."
echo ""
echo " -t Set the duration of cuts in seconds."
echo ""
echo " -T Set catalogue for temporary files. The default is /tmp."
echo ""
echo "Hope you like it :). Though it's pretty raw and definitely should be improved."
exit 0
;;
esac
for ARGS in $* ; do
case $ARGS in
-f)
export use_ffmpeg="1"
;;
-m)
export use_mencoder="1"
;;
-F)
export ffmpeg=$(echo $* | awk -F\-F '{ print $2 }' | awk '{ print $1 }')
;;
-M)
export mencoder=$(echo $* | awk -F\-M '{ print $2 }' | awk '{ print $1 }')
;;
-O)
export RESULTDIR=$(echo $* | awk -F\-O '{ print $2 }' | awk '{ print $1 }')
;;
-i)
export input_file=$(echo $* | awk -F\-i '{ print $2 }' | awk -F\ \- '{ print $1 }')
;;
-I)
export INPUTDIR=$(echo $* | awk -F\-I '{ print $2 }' | awk '{ print $1 }')
;;
-T)
export TMPDIR=$(echo $* | awk -F\-T '{ print $2 }' | awk '{ print $1 }')
;;
-fmt)
export FORMAT=$(echo $* | awk -F\-fmt '{ print $2 }' | awk '{ print $1 }')
;;
-q)
export output_qty=$(echo $* | awk -F\-q '{ print $2 }' | awk '{ print $1 }')
;;
-t)
export output_timing=$(echo $* | awk -F\-t '{ print $2 }' | awk '{ print $1 }')
;;
-d)
export output_dimension=$(echo $* | awk -F\-d '{ print $2 }' | awk '{ print $1 }')
;;
-s)
export encoded_time_shift=$(echo $* | awk -F\-s '{ print $2 }' | awk '{ print $1 }')
;;
esac
done
mkdir -p $TMPDIR
mkdir -p $RESULTDIR
if [ -d $RESULTDIR ] ; then echo "RESULTDIR created as $RESULTDIR"
else echo "Check your permissions for a proper $RESULTDIR. Going to exit." && read a1 && exit 0
fi
if [ -d $TMPDIR ] ; then echo "TMPDIR created as $TMPDIR"
else echo "Check your permissions for a proper $TMPDIR. Going to exit." && read a1 && exit 0
fi
if [ -n "$(eval which ${ffmpeg})" ]; then echo "Good... ffmpeg is here"
else echo "ffmpeg is missing" && touch "$TMPDIR/noffmpeg"
fi
if [ -n "$(eval which ${mencoder})" ]; then echo "Good... mencoder is here"
else echo "mencoder is missing" && touch "$TMPDIR/nomencoder"
fi
if [ -e "$TMPDIR/noffmpeg" -a -e "$TMPDIR/nomencoder" ]
then echo "Can't locate 'ffmpeg' or 'mplayer'. Check your setup" && read a1 && exit 0
fi
if [ "$FORMAT" = "x264" ]
then export vcodec_ffmpeg="libx264" && export vcodec_mencoder="x264"
fi
if [ "$FORMAT" = "mpeg4" ]
then export vcodec_ffmpeg="mpeg4" && export vcodec_mencoder="lavc"
fi
export mencoder_dimension=$(echo $output_dimension | awk -Fx '{ print $1 }' )
get_time_ffmpeg_function ()
{
export movie_total_time=$(expr $(find $input_file -exec ${ffmpeg} -i {} \; 2>&1 | grep -i duration |\
awk -F: '{ print $2 }') '*' 3600 \
'+' $(find $input_file -exec ${ffmpeg} -i {} \; 2>&1 | grep -i duration | awk -F: '{ print $3 }') '*' 60 \
'+' $(find $input_file -exec ${ffmpeg} -i {} \; 2>&1 | grep -i duration | awk -F: '{ print $4 }' |\
awk -F\. '{ print $1 }' ))
}
split_by_ffmpeg_single ()
{
a1=0
get_time_ffmpeg_function
while [ "$a1" -lt "$output_qty" ]
do
$( ${ffmpeg} -ss $(expr $movie_total_time '/' $output_qty '*' $a1) \
-t $output_timing -i $(find $input_file) -f avi \
-s $output_dimension -vcodec $vcodec_ffmpeg -sameq -bf 2 -ab 128k -ac 2 -y \
"$input_file"_ffmpeg_"$a1".avi )
mv $INPUTDIR/*_ffmpeg_*.avi $RESULTDIR/
a1=$(expr $a1 '+' 1)
done
find $RESULTDIR/ -size 0c -exec rm {} \;
find $RESULTDIR/ -size 4108c -exec rm {} \;
}
split_by_ffmpeg_multiple ()
{
a1=0
while [ "$a1" -lt "$output_qty" ]
do
$(find $INPUTDIR -maxdepth 1 -exec ${ffmpeg} -ss $(expr $encoder_time_shift '*' $a1) \
-t $output_timing -i {} -f avi \
-s $output_dimension -vcodec $vcodec_ffmpeg -sameq -bf 2 -ab 128k -ac 2 -y \
{}_ffmpeg_"$a1".avi \; )
mv $INPUTDIR/*_ffmpeg_*.avi $RESULTDIR/
a1=$(expr $a1 '+' 1)
done
find $RESULTDIR/ -size 0c -exec rm {} \;
# find $RESULTDIR/ -size 4108c -exec rm {} \;
}
split_by_mencoder_multiple ()
{
a1=0
while [ "$a1" -lt "$output_qty" ]
do
find $INPUTDIR -maxdepth 1 -exec ${mencoder} {} -ss $(expr "$a1" '*' "$encoder_time_shift") -endpos $output_timing \
-oac copy -ovc $vcodec_mencoder -vf scale=$mencoder_dimension:-2 \
-forceidx -zoom \
-o {}_mencoder_"$a1".avi \;
mv $INPUTDIR/*_mencoder_*.avi $RESULTDIR/
a1=$(expr $a1 '+' 1)
done
find $RESULTDIR/ -size 0c -exec rm {} \;
# find $RESULTDIR/ -size 4108c -exec rm {} \;
}
split_by_mencoder_single ()
{
a1=0
while [ "$a1" -lt "$output_qty" ]
do
find $input_file -exec ${mencoder} {} -ss $(expr "$a1" '*' "$encoder_time_shift") -endpos $output_timing \
-oac copy -ovc $vcodec_mencoder -vf scale=$mencoder_dimension:-2 \
-forceidx -zoom \
-o {}_mencoder_"$a1".avi \;
mv $INPUTDIR/*_mencoder_*.avi $RESULTDIR/
a1=$(expr $a1 '+' 1)
done
find $RESULTDIR/ -size 0c -exec rm {} \;
# find $RESULTDIR/ -size 4108c -exec rm {} \;
}
if [ "$use_ffmpeg" = "1" -a "$input_file" != "" ] ; then
split_by_ffmpeg_single
fi
if [ "$use_ffmpeg" = "1" -a "$input_file" = "" ] ; then
split_by_ffmpeg_multiple
fi
if [ "$use_mencoder" = "1" -a "$input_file" = "" ] ; then
split_by_mencoder_multiple
fi
if [ "$use_mencoder" = "1" -a "$input_file" != "" ] ; then
split_by_mencoder_single
fi
if [ -e "$TMPDIR/noffmpeg" ]
then rm "$TMPDIR/noffmpeg"
fi
if [ -e "$TMPDIR/nomencoder" ]
then rm "$TMPDIR/nomencoder"
fi
[/more]
Внимание! Не рекомендуется пользоваться русской версией оф. сайта, т.к. она уже сильно устарела.
Голосование "Лучший плеер для видео 2014"