Page 1 of 1

[how-to] Convertire files in 3gp per il cellulare

Posted: Mon Feb 20, 2006 10:37 am
by CarloJekko
Prendendo spunto da questo topic : http://forums.gentoo.org/viewtopic-t-13 ... coder.html
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"
poi sono andato in

Code: Select all

cd /usr/portage/distfiles
ed ho scaricato i seguenti files

Code: 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.zip
poi ho creato la cartella /usr/local/portage/media-video/ffmpeg/ e fatto cd /usr/local/portage/media-video/ffmpeg/
e 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.ebuild
(ho aggiunto l'r1)
quindi 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."

}
quindi ho copiato

Code: Select all

mkdir files
cp /usr/portage/media-video/ffmpeg/files/* /usr/local/portage/media-video/ffmpeg/files/
poi ho dato

Code: Select all

ebuild ffmpeg-0.4.9_p20051216-r1.ebuild digest
ed aggiornato con emerge -u ffmpeg
ATTENZIONE
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 
(Probabilmente non ci sono errori... se qualcuno ne trova uno o non gli funziona qualcosa o ha qualche suggerimento ... )
Ciao!!

Posted: Mon Feb 20, 2006 10:45 am
by skakz
scusa ma in che consiste la modifica dell'ebuild?
io ho semplicemente installato l'ultima versione di ffmpeg e poi mi sono fatto questo semplice script per la conversione:

Code: Select all

csk@omega ~ $ cat /usr/local/bin/avi23gp
ffmpeg -y -i "$1" -ac 1 -acodec aac -vcodec h263 -s 176x144 -r 12 -b 60 "`basename "$1" | sed 's:avi:3gp:'`"
sk@omega ~ $

e funziona.. tra l'altro non solo con gli avi...

Posted: Mon Feb 20, 2006 10:58 am
by CarloJekko
Si aggiungono questi formati

Code: Select all

ffmpeg -formats

  E 3g2             3gp2 format
  E 3gp             3gp format
 DE amr             3gpp amr file format
 D  mov,mp4,m4a,3gp,3g2 QuickTime/MPEG4 format
 DEA    amr_nb
 DEA    amr_wb
Edit: non ho mai detto che funziona solo con gli avi...

Posted: Mon Feb 20, 2006 11:54 am
by gutter
Moved from Forum di discussione italiano to Risorse italiane (documentazione e tools).

Ho cambiato il titolo rimuovento il tag [abbozzo di how-to].

Posted: Mon Feb 20, 2006 2:34 pm
by skakz
CarloJekko wrote:Si aggiungono questi formati

Code: Select all

ffmpeg -formats

  E 3g2             3gp2 format
  E 3gp             3gp format
 DE amr             3gpp amr file format
 D  mov,mp4,m4a,3gp,3g2 QuickTime/MPEG4 format
 DEA    amr_nb
 DEA    amr_wb
i 3gp li ho anche io senza modifca... aggiungi amr.. ottimo!! :wink: non tutti i cellulari supportano aac..

grasie :)

edit: non dicevo a te per gli avi, qualcuno poteva fraintendere dal mio script che funzionava solo con gli avi..

Posted: Mon Feb 20, 2006 5:02 pm
by earcar
Bello ehehe :D

Io ho usato proprio [topic=32849]quell'howto[/topic] per convertire il video di no1984.org contro il trusted computing in 3gp

Scaricate e diffondete! :D

Ciauz

Posted: Sun May 28, 2006 10:55 am
by earcar
Buone notizie: l'ultimo ebuild in portage di ffmpeg ha il supporto amr integrato :D

Code: Select all

hulk ~ # emerge -av ffmpeg

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R   ] media-video/ffmpeg-0.4.9_p20060302  USE="a52 aac amr* encode imlib ogg* sdl threads truetype vorbis* xvid zlib -debug -doc -dts -ieee1394 -network -oss -test -theora -v4l -x264" 0 kB

Total size of downloads: 0 kB

Would you like to merge these packages? [Yes/No]

3gp

Posted: Sun Jan 14, 2007 5:14 pm
by alexbgl
Vorrei sapere come posso fare per gestire i file 3gp; in particolare vorrei poterli leggere e convertire in altri formati.
(Altrimenti mi tocca usare windows emulato! :) )

Posted: Sun Jan 14, 2007 5:51 pm
by cloc3

Re: 3gp

Posted: Sun Jan 14, 2007 8:57 pm
by codadilupo
alexbgl wrote:Vorrei sapere come posso fare per gestire i file 3gp; in particolare vorrei poterli leggere e convertire in altri formati.
ffmpeg con use amr ?

Coda

Posted: Mon Jan 15, 2007 8:55 pm
by gutter
Fatto il merge con il topic indicato da cloc3.

P.S.: Grazie per la segnalazione.

@alexbgl: per favore cerchiamo prima di postare.

Posted: Sun Jan 28, 2007 4:38 pm
by mr_dub
Premesso che il cellulare in mio possesso e` un nokia N71, dopo aver letto "tutto" quel che sono riuscito a trovare in rete riguardo questo tipo di conversione "avi->3gp", ho pensato di aggiungere qui alcune mie considerazioni che a qualcuno potrebbero risultare utili (sperando di essermi agganciato al thread giusto :P )

ho effettuato varie prove/comandi:

il (per ora) piu` complesso ..

Code: Select all

mencoder "film.avi" -nosound -ovc lavc -lavcopts vcodec=mpeg4 -vop expand=176:144,scale=176:-2 -ofps 12 -o movie.avi
mplayer -vo null -ao pcm -af resample=8000,volume=+4db:sc "film.avi"
ffmpeg -i movie.avi -i audiodump.wav -b 48 -ac 1 -ab 12 -map 0.0 -map 1.0 movie.3gp
e in alternativa

Code: Select all

ffmpeg -y -i "film.avi" -ac 1 -acodec aac -vcodec h263 -s 176x144 -r 12 -b 60 movie.3gp
Il risultato non mi sembrava tanto soddisfacente/entusiasmante, per cui ho iniziato a curiosare in giro (di nuovo), finendo per trovare/provare un programma in windows "3GP_Converter031", che crea dei filmati migliori a parita` di dimensione.
Be`, a questo punto mi e` scattato il ... "perche` ?"

Guardando meglio il programma, ho notato che per la conversione utilizza "ffmpeg" (la 0.4.9_pre1), allora ho controllato anche con quali opzioni (da notare che codifica in MPEG4 e non H263), e scoprendo anche, che il 'nostro' (0.4.9_20061016) non ha alcune di queste 'opzioni'.

A questo punto le prove sono state molteplici, e ho individuato dei filmati accettabili (o paragonabili, come preferite) con questi comandi:

Code: Select all

ffmpeg -y -i "film.avi" -flags bitexact -vcodec mpeg4 -s 320x240 -r 14.985 -b 190 -muxrate 64 -acodec aac -ac 1 -ar 16000 -ab 48 -muxrate 32 -f 3gp film.3gp

Code: Select all

ffmpeg -y -i "film.avi" -flags bitexact -vcodec mpeg4 -s 320x240 -r 14.985 -b 190 -qscale 1 -muxrate 64 -mbd rd -flags +4mv+trell+aic -cmp 2 -subcmp 2 -g 300 -acodec aac -ac 1 -ar 16000 -ab 32 -muxrate 32 -f 3gp film.3gp

Code: Select all

ffmpeg -y -i "film.avi" -flags bitexact -vcodec h263 -s 176x144 -r 12 -b 64 -qscale 1 -acodec aac -ac 1 -ar 16000 -ab 32 -f 3gp film.3gp
Mi sono arreso qui, se qualcuno avesse altre idee/soluzioni ... alla fine ho optato per l'uso di "ffmpeg" incluso nel programma windows:

Code: Select all

wine c:\3GP_Converter031\cores\ffmpeg.exe -y -i z:\film.avi -bitexact -vcodec mpeg4 -fixaspect -s 320x240 -r 14.985 -b 190 -acodec aac -ac 1 -ar 16000 -ab 48 -f 3gp -muxvb 64 -muxab 32 z:\film.3gp
L'output e` paragonabile al primo dei tre comandi precedenti, ma occupa 1/3 !!!

Ciao.

Posted: Sun Jan 28, 2007 10:40 pm
by .:deadhead:.
Io uso ffmpeg preso da svn [ svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg] e compilato a mano (ovviamente in una dir a parte. sotto /tmp) . solito ./configure e poi make && make install e via.

Ho notato spesso miglioramenti nel corso delle settimane: ffmpeg è un tool in continuo aggiornamento per cui usare svn è una necessità se si vuol beneficiare degli ultimi miglioramenti apportati.

Detto ciò con audio aac e video h263 direi che sei a cavallo.

Posted: Mon Jan 29, 2007 10:30 am
by drizztbsd
Puoi usare ffmpeg scm version dal mio overlay 8)
http://overlays.gentoo.org/dev/drizzt/b ... deo/ffmpeg

Posted: Mon Jan 29, 2007 11:49 am
by .:deadhead:.
Drizzt Do` Urden wrote:Puoi usare ffmpeg scm version dal mio overlay 8)
http://overlays.gentoo.org/dev/drizzt/b ... deo/ffmpeg
L'utente propone, Drizzt dispone ehehe :D