PDA

View Full Version : FFMPEG: Fast encoding optimizations (help needed)



David75
Sun, 09-25-2011, 12:09 PM
There's a TV channel, broadcasting over IPADSL, I need to watch for 2 hours each saturday night.
For many reasons, I can't access it from my new place.

At my office, I have that channel available and a synology NAS with a ARM CPU.
I can VPN that network and access the IPADSL stream.

Thing is, the max upload speed at said office is 115KB/s.

So I need to transcode the stream in realtime and access it from my home.

I've done some testing, transcoding in realtime is possible and the result is more than enough for my needs. I need to transcode the video to around 800kb/s sound included and try to keep sound bitrate at 192kb/s if possible since sound is more important than image in that case.

The testing has been done with fairly low end computer by today's standards, using VLC transcoding/broadcasting.
But I can't use that comp as a longterm solution.

Since I have full access to the nas, the idea is that I use it. But its computing power is far below that of the test comp I used obviously.

Hence the need for help in finding the best set of options to optimize transcoding speed.

Source stats reported by ffmpeg (1 minute sample):

Duration: 00:00:59.21, start: 13060.597889, bitrate: 3549 kb/s
Program 1
Stream #0.0[0x44]: Video: mpeg2video (Main), yuv420p, 720x576 [PAR 64:45 DAR 16:9], 3100 kb/s, 26.89 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0.1[0x45](fra): Audio: mp2, 48000 Hz, stereo, s16, 192 kb/s

With FFMPEG default settings, I get 7-8 FPS processing speed. When I first got that number, I was quite surprised as I thought I would get a much lower "score".

Stats from media for the test sample result:

General
Complete name : \\192.168.0.33\public\test.avi
Format : AVI
Format/Info : Audio Video Interleave
File size : 1.48 MiB
Duration : 18s 80ms
Overall bit rate : 687 Kbps
Writing application : Lavf52.108.0

Video
ID : 0
Format : MPEG-4 Visual
Format profile : Simple@L1
Format settings, BVOP : No
Format settings, QPel : No
Format settings, GMC : No warppoints
Format settings, Matrix : Default (H.263)
Codec ID : FMP4
Duration : 18s 80ms
Bit rate : 484 Kbps
Width : 720 pixels
Height : 576 pixels
Display aspect ratio : 16:9
Frame rate : 25.000 fps
Standard : PAL
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Compression mode : Lossy
Bits/(Pixel*Frame) : 0.047
Stream size : 1.04 MiB (71%)
Writing library : Lavc52.120.0

Audio
ID : 1
Format : MPEG Audio
Format version : Version 1
Format profile : Layer 2
Codec ID : 50
Duration : 17s 472ms
Bit rate mode : Constant
Bit rate : 192 Kbps
Channel(s) : 2 channels
Sampling rate : 48.0 KHz
Compression mode : Lossy
Stream size : 410 KiB (27%)
Alignment : Aligned on interleaves
Interleave, duration : 25 ms (0.62 video frame)
Interleave, preload duration : 528 ms



ffmpeg -formats result:

ffmpeg version UNKNOWN, Copyright (c) 2000-2011 the FFmpeg developers
built on Sep 4 2011 02:28:29 with gcc 4.2.1
configuration: --arch=arm --target-os=linux --cross-prefix=/usr/local/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi- --enable-cross-compile --enable-optimizations --disable-yasm --disable-altivec --enable-pic --enable-shared --disable-static --disable-swscale-alpha --disable-ffserver --disable-ffplay --enable-libmp3lame
libavutil 50. 40. 1 / 50. 40. 1
libavcodec 52.120. 0 / 52.120. 0
libavformat 52.108. 0 / 52.108. 0
libavdevice 52. 4. 0 / 52. 4. 0
libavfilter 1. 77. 0 / 1. 77. 0
libswscale 0. 14. 0 / 0. 14. 0
File formats:
D. = Demuxing supported
.E = Muxing supported
--
E 3g2 3GP2 format
E 3gp 3GP format
D 4xm 4X Technologies format
D IFF IFF format
D ISS Funcom ISS format
D MTV MTV format
DE RoQ raw id RoQ format
E a64 a64 - video for Commodore 64
D aac raw ADTS AAC
DE ac3 raw AC-3
E adts ADTS AAC
D aea MD STUDIO audio
DE aiff Audio IFF
DE alaw PCM A-law format
DE amr 3GPP AMR file format
D anm Deluxe Paint Animation
D apc CRYO APC format
D ape Monkey's Audio
D applehttp Apple HTTP Live Streaming format
DE asf ASF format
E asf_stream ASF format
DE ass Advanced SubStation Alpha subtitle format
DE au SUN AU format
DE avi AVI format
E avm2 Flash 9 (AVM2) format
D avs AVS format
D bethsoftvid Bethesda Softworks VID format
D bfi Brute Force & Ignorance
D bink Bink
D c93 Interplay C93
D caf Apple Core Audio Format
DE cavsvideo raw Chinese AVS video
D cdg CD Graphics Format
E crc CRC testing format
DE daud D-Cinema audio format
D dfa Chronomaster DFA
DE dirac raw Dirac
DE dnxhd raw DNxHD (SMPTE VC-3)
D dsicin Delphine Software International CIN format
DE dts raw DTS
DE dv DV video format
D dv1394 DV1394 A/V grab
E dvd MPEG-2 PS format (DVD VOB)
D dxa DXA
D ea Electronic Arts Multimedia Format
D ea_cdata Electronic Arts cdata
DE eac3 raw E-AC-3
DE f32be PCM 32 bit floating-point big-endian format
DE f32le PCM 32 bit floating-point little-endian format
DE f64be PCM 64 bit floating-point big-endian format
DE f64le PCM 64 bit floating-point little-endian format
D fbdev Linux framebuffer
DE ffm FFM (FFserver live feed) format
DE ffmetadata FFmpeg metadata in text format
D film_cpk Sega FILM/CPK format
DE filmstrip Adobe Filmstrip
DE flac raw FLAC
D flic FLI/FLC/FLX animation format
DE flv FLV format
E framecrc framecrc testing format
E framemd5 Per-frame MD5 testing format
DE g722 raw G.722
E gif GIF Animation
D gsm raw GSM
DE gxf GXF format
DE h261 raw H.261
DE h263 raw H.263
DE h264 raw H.264 video format
D idcin id Cinematic format
DE image2 image2 sequence
DE image2pipe piped image2 sequence
D ingenient raw Ingenient MJPEG
D ipmovie Interplay MVE format
E ipod iPod H.264 MP4 format
D iv8 A format generated by IndigoVision 8000 video server
DE ivf On2 IVF
D jv Bitmap Brothers JV
D lmlm4 lmlm4 raw format
D lxf VR native stream format (LXF)
DE m4v raw MPEG-4 video format
E matroska Matroska file format
D matroska,webm Matroska/WebM file format
E md5 MD5 testing format
DE microdvd MicroDVD subtitle format
DE mjpeg raw MJPEG video
DE mlp raw MLP
D mm American Laser Games MM format
DE mmf Yamaha SMAF
E mov MOV format
D mov,mp4,m4a,3gp,3g2,mj2 QuickTime/MPEG-4/Motion JPEG 2000 format
E mp2 MPEG audio layer 2
DE mp3 MPEG audio layer 3
E mp4 MP4 format
D mpc Musepack
D mpc8 Musepack SV8
DE mpeg MPEG-1 System format
E mpeg1video raw MPEG-1 video
E mpeg2video raw MPEG-2 video
DE mpegts MPEG-2 transport stream format
D mpegtsraw MPEG-2 raw transport stream format
D mpegvideo raw MPEG video
E mpjpeg MIME multipart JPEG format
D msnwctcp MSN TCP Webcam stream
DE mulaw PCM mu-law format
D mvi Motion Pixels MVI format
DE mxf Material eXchange Format
E mxf_d10 Material eXchange Format, D-10 Mapping
D mxg MxPEG clip file format
D nc NC camera feed format
D nsv Nullsoft Streaming Video
E null raw null video format
DE nut NUT format
D nuv NuppelVideo format
DE ogg Ogg
D oma Sony OpenMG audio
DE oss Open Sound System playback
D pmp Playstation Portable PMP format
E psp PSP MP4 format
D psxstr Sony Playstation STR format
D pva TechnoTrend PVA file and stream format
D qcp QCP format
D r3d REDCODE R3D format
DE rawvideo raw video format
E rcv VC-1 test bitstream
D rl2 RL2 format
DE rm RealMedia format
D rpl RPL/ARMovie format
DE rso Lego Mindstorms RSO format
DE rtp RTP output format
DE rtsp RTSP output format
DE s16be PCM signed 16 bit big-endian format
DE s16le PCM signed 16 bit little-endian format
DE s24be PCM signed 24 bit big-endian format
DE s24le PCM signed 24 bit little-endian format
DE s32be PCM signed 32 bit big-endian format
DE s32le PCM signed 32 bit little-endian format
DE s8 PCM signed 8 bit format
DE sap SAP output format
D sdp SDP
D shn raw Shorten
D siff Beam Software SIFF
D smk Smacker video
D sol Sierra SOL format
DE sox SoX native format
DE spdif IEC 61937 (used on S/PDIF - IEC958)
DE srt SubRip subtitle format
E svcd MPEG-2 PS format (VOB)
DE swf Flash format
D thp THP
D tiertexseq Tiertex Limited SEQ format
D tmv 8088flex TMV
DE truehd raw TrueHD
D tta True Audio
D tty Tele-typewriter
D txd Renderware TeXture Dictionary
DE u16be PCM unsigned 16 bit big-endian format
DE u16le PCM unsigned 16 bit little-endian format
DE u24be PCM unsigned 24 bit big-endian format
DE u24le PCM unsigned 24 bit little-endian format
DE u32be PCM unsigned 32 bit big-endian format
DE u32le PCM unsigned 32 bit little-endian format
DE u8 PCM unsigned 8 bit format
D vc1 raw VC-1
D vc1test VC-1 test bitstream format
E vcd MPEG-1 System format (VCD)
D video4linux Video4Linux device grab
D video4linux2 Video4Linux2 device grab
D vmd Sierra VMD format
E vob MPEG-2 PS format (VOB)
DE voc Creative Voice file format
D vqf Nippon Telegraph and Telephone Corporation (NTT) TwinVQ
D w64 Sony Wave64 format
DE wav WAV format
D wc3movie Wing Commander III movie format
E webm WebM file format
D wsaud Westwood Studios audio format
D wsvqa Westwood Studios VQA format
D wtv Windows Television (WTV)
D wv WavPack
D xa Maxis XA File Format
D xwma Microsoft xWMA
D yop Psygnosis YOP Format
DE yuv4mpegpipe YUV4MPEG pipe format




I tried halving height and width, setting 15FPS for the output and many codecs, but never really got over 9FPS... only when I divided height and width by 4 and got 14 FPS. But it's not very watchable anymore.

I can accept halving height and width
I can accept pixelisation
I can accept going to 20FPS for the output
If I have no other option I can accept going to 128kb/s for the audio although transcoding it would impact processing speed I guess.

The resulting file must be 800kb/s max and I need transcoding settings that allow for maximum speed. I know that maybe it's impossible to cope with all those conditions on such a slow system (DS109) but I wish to try.

Thanks for reading ;) Even more if you can and do help :D