Vi dico come ho fatto io per convertire i video in formato 3gp per poi esportare sul cellulare.
Allora innanzi tutto ho usato l'overlay di portage aggiungendo questo al /etc/make.conf
Code: Select all
PORTDIR_OVERLAY="/usr/local/portage"Code: Select all
cd /usr/portage/distfilesCode: Select all
wget http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-510.zip
wget http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-510.zipe quindi ho copiato
Code: Select all
cp /usr/portage/media-video/ffmpeg/ffmpeg-0.4.9_p20051216.ebuild /usr/local/portage/media-video/ffmpeg/ffmpeg-0.4.9_p20051216-r1.ebuildquindi ho modificato ffmpeg-0.4.9_p20051216-r1.ebuild in questo modo :
Code: Select all
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/media-video/ffmpeg/ffmpeg-0.4.9_p20051216.ebuild,v 1.19 2006/01/30 06:07:35 lu_zero Exp $
inherit eutils flag-o-matic multilib toolchain-funcs
DESCRIPTION="Complete solution to record, convert and stream audio and video. Includes libavcodec."
HOMEPAGE="http://ffmpeg.sourceforge.net/"
MY_P=${P/_/-}
S=${WORKDIR}
S_BASE=${WORKDIR}/${MY_P}
S_STATIC=${S_BASE}-static
S_SHARED=${S_BASE}-shared
SRC_URI="mirror://gentoo/${MY_P}.tar.bz2"
LICENSE="GPL-2"
SLOT="0"
# ~alpha need to test aac useflag
# ~ia64 ~arm ~mips ~hppa
#KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc-macos ~ppc64 ~sparc ~x86"
KEYWORDS="-* alpha amd64 arm hppa ia64 ppc ~ppc-macos ppc64 sparc x86"
IUSE="aac altivec debug doc ieee1394 a52 encode imlib mmx ogg vorbis oss test theora threads truetype v4l xvid dts network zlib sdl"
DEPEND="imlib? ( media-libs/imlib2 )
truetype? ( >=media-libs/freetype-2 )
sdl? ( >=media-libs/libsdl-1.2.1 )
doc? ( app-text/texi2html )
encode? ( media-sound/lame )
ogg? ( media-libs/libogg )
vorbis? ( media-libs/libvorbis )
theora? ( media-libs/libtheora )
aac? ( media-libs/faad2 media-libs/faac )
a52? ( >=media-libs/a52dec-0.7.4-r4 )
xvid? ( >=media-libs/xvid-1.0.3 )
zlib? ( sys-libs/zlib )
dts? ( media-libs/libdts )
ieee1394? ( =media-libs/libdc1394-1*
sys-libs/libraw1394 )
test? ( net-misc/wget )"
src_unpack() {
unpack ${A} || die
cd ${S_BASE}
##############
# Qui ho aggiunto il supporto al formato 3gp
cd libavcodec
mkdir amr_float
mkdir amrwb_float
cd amr_float
unzip /usr/portage/distfiles/26104-510.zip
unzip 26104-510_ANSI_C_source_code.zip
cd ..
cd amrwb_float
unzip /usr/portage/distfiles/26204-510.zip
unzip 26204-510_ANSI-C_source_code.zip
cd ../..
################
#Append -fomit-frame-pointer to avoid some common issues
use debug || append-flags "-fomit-frame-pointer"
# for some reason it tries to #include <X11/Xlib.h>, but doesn't use it
sed -i s:\#define\ HAVE_X11:\#define\ HAVE_LINUX: ffplay.c
epatch ${FILESDIR}/ffmpeg-unknown-options.patch
epatch ${FILESDIR}/ffmpeg-soname-symlink.patch
# ffmpeg doesn'g use libtool, so the condition for PIC code
# is __PIC__, not PIC.
sed -i -e 's/#\(\(.*def *\)\|\(.*defined *\)\|\(.*defined(*\)\)PIC/#\1__PIC__/' \
libavcodec/i386/dsputil_mmx{.c,_rnd.h,_avg.h} \
libavcodec/msmpeg4.c \
libavutil/common.h \
|| die "sed failed (__PIC__)"
# Make it use pic always since we don't need textrels
sed -i -e "s:LIBOBJFLAGS=\"\":LIBOBJFLAGS=\'\$\(PIC\)\':" configure
# To make sure the ffserver test will work
sed -i -e "s:-e debug=off::" tests/server-regression.sh
cd ${S}
cp -R ${S_BASE} ${S_STATIC}
mv ${S_BASE} ${S_SHARED}
# Patch for gcc-4 shared build only
cd ${S_SHARED}
epatch ${FILESDIR}/ffmpeg-shared-gcc4.patch
}
src_compile() {
#Note; library makefiles don't propogate flags from config.mak so
#use specified CFLAGS are only used in executables
replace-flags -O0 -O2
local myconf=""
#disable mmx accelerated code if not requirested, or if PIC is required
# as the provided asm decidedly is not PIC.
if ( ! has_pic && use mmx ) || use amd64; then
myconf="${myconf} --enable-mmx"
else
myconf="${myconf} --disable-mmx"
fi
if use elibc_FreeBSD; then
myconf="${myconf} --enable-memalign-hack"
fi
myconf="${myconf}
$(use_enable altivec) \
$(use_enable debug) \
$(use_enable encode mp3lame) \
$(use_enable a52) --disable-a52bin \
$(use_enable oss audio-oss) \
$(use_enable v4l) \
$(use_enable ieee1394 dv1394) $(use_enable ieee1394 dc1394) \
$(use_enable threads pthreads) \
$(use_enable xvid) \
$(use_enable ogg libogg) \
$(use_enable vorbis) \
$(use_enable theora) \
$(use_enable dts) \
$(use_enable network) \
$(use_enable zlib) \
$(use_enable sdl ffplay) \
$(use_enable aac faad) $(use_enable aac faac) --disable-faadbin \
--enable-gpl \
--enable-pp \
--disable-opts \
--enable-amr_nb \
--enable-amr_wb"
######## Ho aggiunto --enable-amr_nb e --enable-amr_wb nelle USE ##########
cd ${S_STATIC}
econf --disable-shared-pp --disable-shared --enable-static ${myconf} || die "Configure failed"
emake CC="$(tc-getCC)" || die "static failed"
# Specific workarounds for too-few-registers arch...
if [[ $(tc-arch) == "x86" ]]; then
filter-flags -fforce-addr -momit-leaf-frame-pointer
append-flags -fomit-frame-pointer
is-flag -O? || append-flags -O2
ewarn ""
ewarn "Debug information will be almost useless as the frame pointer is omitted."
ewarn "This makes debugging harder, so crashes that has no fixed behavior are"
ewarn "difficult to fix. Please have that in mind."
ewarn ""
fi
cd ${S_SHARED}
econf --enable-shared-pp --enable-shared --disable-static ${myconf} || die "Configure failed"
emake CC="$(tc-getCC)" || die "shared failed"
}
src_install() {
for d in ${S_STATIC} ${S_SHARED}; do
cd ${d}
make DESTDIR=${D} \
prefix=${D}/usr \
libdir=${D}/usr/$(get_libdir) \
mandir=${D}/usr/share/man \
infodir=${D}/usr/share/info \
bindir=${D}/usr/bin \
install installlib || die "Install Failed"
done
cd ${S_SHARED}
use doc && make documentation
dodoc ChangeLog README INSTALL
dodoc doc/*
cd ${S_STATIC}/libavcodec/libpostproc
make prefix=${D}/usr libdir=${D}/usr/$(get_libdir) \
install || die "Failed to install libpostproc.a!"
cd ${S_SHARED}/libavcodec/libpostproc
make prefix=${D}/usr libdir=${D}/usr/$(get_libdir) \
SHARED_PP="yes" \
install || die "Failed to install libpostproc.so!"
# Some stuff like transcode can use this one.
dolib ${S_STATIC}/libavcodec/libpostproc/libpostproc.a
preplib /usr
}
# Never die for now...
src_test() {
for d in ${S_STATIC} ${S_SHARED}; do
cd ${d}/tests
for t in "codectest libavtest test-server" ; do
make ${t} || ewarn "Some tests in ${t} failed for ${d}"
done
done
}
pkg_postinst() {
ewarn "ffmpeg may had ABI changes, if ffmpeg based programs"
ewarn "like xine-lib or vlc stop working as expected please"
ewarn "rebuild them."
}Code: Select all
mkdir files
cp /usr/portage/media-video/ffmpeg/files/* /usr/local/portage/media-video/ffmpeg/files/Code: Select all
ebuild ffmpeg-0.4.9_p20051216-r1.ebuild digestATTENZIONE
Io ho utilizzato l'ultima versione masked di ffmpeg, se non si vuole questa si possono apportare le stesse modifiche alla versione stable di ffmpeg
Adesso per chi usa KDE c'è questo bello script (ha bisogno di kommander) che si aggiunge nel menu di konqueror quando si clicca su di un file video http://www.kde-apps.org/content/show.php?content=35274
oppure come c'è scritto nel 3ed originale si può usare
Code: Select all
ffmpeg -i small_file.avi -ar 8000 -ac 1 -acodec amr_nb -vcodec h263 -s 176x144 -r 12 -b 30 -ab 12 new_file.3gp Ciao!!






