Build video enc

From M1Research

(Difference between revisions)
Jump to: navigation, search
m
Line 1: Line 1:
== Encoding video using <i>ffmpeg</i> ==
== Encoding video using <i>ffmpeg</i> ==
-
===1. One-pass encoding video MPEG4,h264,h263; audio AAC
+
===1. One-pass encoding video MPEG4,h264,h263; audio AAC ===
Encoding mpeg4 video example:
Encoding mpeg4 video example:
Line 26: Line 26:
<pre>ffmpeg -i /home/video/U0003765.avi -vcodec h263 -r 12 -s qcif -b 64 -acodec aac -ac 1 -ar 16000 -ab 16 /home/enc/test04.mp4</pre>
<pre>ffmpeg -i /home/video/U0003765.avi -vcodec h263 -r 12 -s qcif -b 64 -acodec aac -ac 1 -ar 16000 -ab 16 /home/enc/test04.mp4</pre>
-
===2. Two-pass encoding video h263,MPEG4,h264; audio AAC  
+
===2. Two-pass encoding video h263,MPEG4,h264; audio AAC ===
Using two pass encoding could be VERY usefull to create more smother video. If you have pre-recorded material - use two pass encoding.
Using two pass encoding could be VERY usefull to create more smother video. If you have pre-recorded material - use two pass encoding.
Line 55: Line 55:
</pre>
</pre>
-
3. amr nb
+
=== 3. amr nb ===
#check if your ffmpeg version support AMR codec:
#check if your ffmpeg version support AMR codec:

Revision as of 20:27, 1 July 2006

Contents

Encoding video using ffmpeg

1. One-pass encoding video MPEG4,h264,h263; audio AAC

Encoding mpeg4 video example:

ffmpeg -i /home/video/U0003765.avi -vcodec mpeg4 -r 12 -s qcif -b 64 -acodec aac -ac 1 -ar 16000 -ab 16 /home/enc/test01.mp4

Where

  • -vcodec h263 - video codec h263
  • -r 12 - 12 frame per seconds
  • -s qcif - qcif=176x144 pixel
  • -b 64 - 64kbit/s video stream
  • -acodec aac - audio codec is AAC
  • -ac 1 - 1 audio channel (mono)
  • -ar 16000 - audio sampling frequency - 16kHz
  • -ab 16 - 16kBit/s audio stream

For lower bitrates i used 24kHz/32kBit (-ar 24000 -ab 32) or 16kHz/16kBit (-ar 16000 -ab 16).

Encoding h264 video example:

ffmpeg -i /home/video/U0003765.avi -vcodec h264 -r 12 -s qcif -b 64 -acodec aac -ac 1 -ar 16000 -ab 16 /home/enc/test02.mp4

Encoding h263 video example (QT player required, IMHO, .3pg extension for files with h263 codec):

ffmpeg -i /home/video/U0003765.avi -vcodec h263 -r 12 -s qcif -b 64 -acodec aac -ac 1 -ar 16000 -ab 16 /home/enc/test04.mp4

2. Two-pass encoding video h263,MPEG4,h264; audio AAC

Using two pass encoding could be VERY usefull to create more smother video. If you have pre-recorded material - use two pass encoding.

MPEG4,AAC (h264 has the same manner):

#pass 1
ffmpeg -i /home/video/U0003773.avi -pass 1 -passlogfile logfile -vcodec mpeg4 -r 12 -s qcif -b 64 -an /home/enc/test04.mp4

#delete temp file
rm -f /home/enc/test04.mp4

#pass 2
ffmpeg -i /home/video/U0003773.avi -pass 2 -passlogfile logfile -vcodec mpeg4 -r 12 -s qcif -b 64 -acodec aac -ac 1 -ar 24000 -ab 32 /home/enc/test06.3gp

H263,AAC:

#pass 1
ffmpeg -i /home/video/U0003773.avi -pass 1 -passlogfile logfile -vcodec h263 -r 12 -s qcif -b 64 -an /home/enc/test04.mp4

#delete temp file
rm -f /home/enc/test06.3gp

#pass 2
ffmpeg -i /home/video/U0003773.avi -pass 2 -passlogfile logfile -vcodec h263 -r 12 -s qcif -b 64 -acodec aac -ac 1 -ar 24000 -ab 32 /home/enc/test06.3gp

3. amr nb

  1. check if your ffmpeg version support AMR codec:

[root@dev-3 enc]# ffmpeg -formats | grep amr FFmpeg version SVN-r5504, Copyright (c) 2000-2004 Fabrice Bellard

 configuration:  --prefix=/usr/local/enctools --enable-mp3lame --enable-libogg --enable-vorbis --enable-theora --enable-faad --enable-faadbin --enable-faac --enable-xvid --enable-x264 --enable-a52 --enable-a52bin --enable-amr_nb --enable-amr_wb --enable-dc1394 --enable-gpl --enable-pp --enable-shared --extra-cflags=-I/usr/local/enctools/include --extra-ldflags=-L/usr/local/enctools/lib
 libavutil version: 49.0.0
 libavcodec version: 51.9.0
 libavformat version: 50.4.0
 built on Jun 29 2006 13:27:24, gcc: 4.1.1 20060525 (Red Hat 4.1.1-1)
DE amr             3gpp amr file format
DEA    amr_nb
DEA    amr_wb

Used amr encoder supports sampling freq is 8kHz only ( -ar 8000 ) and eight bitrate ranges: min,Hz max,Hz 0 4999 MR475 5000 5899 MR515 5900 6699 MR59 6700 7000 MR67 7001 7949 MR74 7950 9999 MR795 10000 11999 MR102 12000 64000 MR122


  1. h263 & arm_nb(4.75kBit)

ffmpeg -i /home/video/U0003765.avi -vcodec h263 -r 12 -s qcif -b 64 -acodec amr_nb -ac 1 -ar 8000 -ab 4 /home/enc/test07.3gp

  1. h263 & arm_nb(12.2kBit)

ffmpeg -i /home/video/U0003765.avi -vcodec h263 -r 12 -s qcif -b 64 -acodec amr_nb -ac 1 -ar 8000 -ab 12 /home/enc/test08.3gp

2-pass encoding like in previous topic:

  1. (h263,5fps,32kbs;amr_nb,8kHz,12kB/s)
  1. pass 1

ffmpeg -i /home/video/U0003773.avi -pass 1 -passlogfile logfile -vcodec h263 -r 5 -s qcif -b 32 -an /home/enc/test10.3gp

  1. delete temp file

rm -f /home/enc/test10.3gp

  1. pass 2

ffmpeg -i /home/video/U0003773.avi -pass 2 -passlogfile logfile -vcodec h263 -r 5 -s qcif -b 32 -acodec amr_nb -ac 1 -ar 8000 -ab 12 /home/enc/test10.3gp


Hinting.

For hinting media files we will use mpeg4ip packet. ().

NB! mp4creator use extension to determinate file type. Next extensions should be used to name elementary stream files (in our case): .263 - h263 elementary stream .264 - h264 elementary stream .mp4v, .m4v - mpeg4 elementary stream .aac - aac elementary stream .amr - amr elementary stream


1. Hinting mp4 files

check content of file:

[root@dev-3 enc]# mp4creator -list test05.mp4 Track Type Info 1 video H264 Baseline@5.1, 222.166 secs, 75 kbps, 176x144 @ 12.000036 fps 2 audio MPEG-4 AAC LC, 221.909 secs, 0 kbps, 24000 Hz

[root@dev-3 enc]# mp4creator -list test04.mp4 Track Type Info 1 video MPEG-4 Simple @ L1, 222.166 secs, 0 kbps, 176x144 @ 12.000036 fps 2 audio MPEG-4 AAC LC, 221.909 secs, 0 kbps, 24000 Hz

For creating proper mp4 file with hint track we should remultplex and add hint track:

remultiplex: mp4creator -extract=1 test05.mp4 test05.264 mp4creator -extract=2 test05.mp4 test05.aac

mp4creator -extract=1 test04.mp4 test04.mp4v mp4creator -extract=2 test04.mp4 test04.aac


  1. compose new file (mp4: h264,aac)

[root@dev-3 enc]# mp4creator -create=test05.264 -rate=12 -optimize -variable-frame-rate test05_r.mp4 [root@dev-3 enc]# mp4creator -hint=1 test05_r.mp4 [root@dev-3 enc]# mp4creator -create=test05.aac -interleave -optimize test05_r.mp4 [root@dev-3 enc]# mp4creator -hint=3 test05_r.mp4 [root@dev-3 enc]# mp4creator -list test05_r.mp4 Track Type Info 1 video H264 Baseline@5.1, 222.166 secs, 75 kbps, 176x144 @ 12.000036 fps 2 hint Payload H264 for track 1 3 audio MPEG-4 AAC LC, 221.909 secs, 32 kbps, 24000 Hz 4 hint Payload mpeg4-generic for track 3

  1. compose new file (mp4: mpeg4,aac)

[root@dev-3 enc]# mp4creator -create=test04.mp4v -rate=12 -optimize -variable-frame-rate test04_r.mp4 [root@dev-3 enc]# mp4creator -hint=1 test04_r.mp4 [root@dev-3 enc]# mp4creator -create=test04.aac -interleave -optimize test04_r.mp4 [root@dev-3 enc]# mp4creator -hint=3 test04_r.mp4 [root@dev-3 enc]# mp4creator -make-isma-10-compliant test04_r.mp4 [root@dev-3 enc]# mp4creator -list test04_r.mp4 Track Type Info 1 video MPEG-4 Simple @ L1, 222.166 secs, 64 kbps, 176x144 @ 12.000036 fps 2 hint Payload MP4V-ES for track 1 3 audio MPEG-4 AAC LC, 221.909 secs, 32 kbps, 24000 Hz 4 hint Payload mpeg4-generic for track 3 5 od Object Descriptors 6 scene BIFS


2. Hinting 3gp files

check content of source files:

[root@dev-3 enc]# mp4creator -list test06.3gp Track Type Info 1 video H.263, 222.166 secs, 64 kbps, 176x144 @ 12.000036 fps 2 audio MPEG-4 AAC LC, 221.909 secs, 0 kbps, 24000 Hz

[root@dev-3 enc]# mp4creator -list test10.3gp Track Type Info 1 video H.263, 222.400 secs, 32 kbps, 176x144 @ 5.000000 fps 2 audio AMR, 222.020 secs, 13 kbps, 8000 Hz

demultiplex:

[root@dev-3 enc]# mp4creator -extract=1 test06.3gp test06.263 [root@dev-3 enc]# mp4creator -extract=2 test06.3gp test06.aac

[root@dev-3 enc]# mp4creator -extract=1 test10.3gp test10.263 [root@dev-3 enc]# mp4creator -extract=2 test10.3gp test10.amr


multiplex:

[root@dev-3 enc]# mp4creator -create=test06.263 -rate=12 -force3GPCompliance -optimize test06_r.3gp [root@dev-3 enc]# mp4creator -create=test06.aac -interleave -optimize test06_r.3gp [root@dev-3 enc]# mp4creator -hint=1 test06_r.3gp [root@dev-3 enc]# mp4creator -hint=2 test06_r.3gp [root@dev-3 enc]# mp4creator -list test06_r.3gp Track Type Info 1 video H.263, 222.088 secs, 64 kbps, 176x144 @ 12.004251 fps 2 audio MPEG-4 AAC LC, 221.909 secs, 32 kbps, 24000 Hz 3 hint Payload H263-2000 for track 1 4 hint Payload mpeg4-generic for track 2

[root@dev-3 enc]# mp4creator -create=test10.263 -rate=5 -force3GPCompliance -optimize test10_r.3gp [root@dev-3 enc]# mp4creator -create=test10.amr -interleave -optimize test10_r.3gp [root@dev-3 enc]# mp4creator -hint=1 test10_r.3gp [root@dev-3 enc]# mp4creator -hint=2 test10_r.3gp [root@dev-3 enc]# mp4creator -list test10_r.3gp Track Type Info 1 video H.263, 222.222 secs, 32 kbps, 176x144 @ 5.004005 fps 2 audio AMR, 222.020 secs, 13 kbps, 8000 Hz 3 hint Payload H263-2000 for track 1 4 hint Payload AMR for track 2

Personal tools