Recherche avancée

Médias (1)

Mot : - Tags -/swfupload

Autres articles (27)

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

  • De l’upload à la vidéo finale [version standalone]

    31 janvier 2010, par

    Le chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
    Upload et récupération d’informations de la vidéo source
    Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
    Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier ; La génération d’une vignette : extraction d’une (...)

  • Support audio et vidéo HTML5

    10 avril 2011

    MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
    Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
    Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
    Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)

Sur d’autres sites (4612)

  • MediaCodec hardware decoder much slower with different server configuration ?

    19 octobre 2013, par mathieujofis

    I've been using the Android MediaCodec in order to (hardware) decode H.264 frames on my Galaxy S4 coming from a Live 555 RTSP live (real-time) stream. After changing my Live 555 server configuration from using ffmpeg (with x264) to encode frames, to using strictly x264 to encode frames, the time to decode frames with MediaCodec takes much longer. Basically, MediaCodec can't keep up with the stream, and displays the video in slow motion, getting slower and slower as time goes on. Going back to ffmpeg isn't a solution for me, because I need the ability to encode into discrete NAL units, rather than a whole frame like ffmpeg does.

    I was wondering if this was either : A) An issue with the way my server is encoding NAL units, or B) An issue with my Android client, specifically the way it is receiving and decoding NAL units.

    My encoding configuration with x264 is :

    x264_param_default_preset(&param,"ultrafast", "zerolatency:fastdecode");
    param.i_threads = 1;
    param.i_bframe = 1;
    param.i_width = image_width;
    param.i_height = image_height;
    param.i_fps_num = 60;
    param.i_fps_den = 1;
    param.i_keyint_max = 10;

    param.rc.i_rc_method = X264_RC_ABR;
    param.rc.i.bitrate = 6000;
    param.i_sps_id = 7;
    param.b_repeat_headers = 1;
    param.b_annexb = 0;

    My Android MediaCodec client is set up as follows :

    I receive each individual NAL unit on a separate Live 555 RTSP client thread. Each NAL is put into a queue along with its size and presentation time. A separate decoder thread grabs NALs from this queue, and if there are none available, waits until there are.

    Some notes :

    What I generally see happen is the queue starts filling up with NALs, instead of staying close to empty. So, I know that the decoder thread is not working fast enough. I don't think this is an inherent problem with decoding on an Android phone (for example, processing limitations) because it does the same thing for very low bitrates— also again, it DID work when I was using ffmpeg to encode. If I omit certain NAL units, the decoder can start to keep up. Since I'm using Cyanogenmod 10.1, bumping up the minimum CPU frequency helps, too.

    Edit :

    Here is a log of the Android client, as well as a log highlighting the garbage collector specifically—

    Entire Logcat :

    10-15 16:40:03.955: D/DecodeActivity(18859): INFO_OUTPUT_BUFFERS_CHANGED
    10-15 16:40:03.995: E/OMX-VDEC-1080P(288): Sync frame received
    10-15 16:40:03.995: E/OMX-VDEC-1080P(288):  No color conversion required
    10-15 16:40:03.995: E/OMX-VDEC-1080P(288): Get_parameter: OMX_IndexParamPortDefinition: nPortIndex (1), nFrameWidth (1280), nFrameHeight (720), nStride (1280), nSliceHeight (736), nBitrate (-1073741824), xFramerate (0x1e), nBufferSize (1433600), nBufferCountMin (4), nBufferCountActual (8), bBuffersContiguous (1918394328), nBufferAlignment (1075643347), bEnabled (1), bPopulated (1), eCompressionFormat (0x0), eColorFormat (0x7fa30c03)
    10-15 16:40:03.995: D/DecodeActivity(18859): New format {height=720, what=1869968451, color-format=2141391875, slice-height=736, crop-left=0, width=1280, crop-bottom=719, crop-top=0, mime=video/raw, stride=1280, crop-right=1279}
    10-15 16:40:04.005: E/OMX-VDEC-1080P(288): set_frame_rate: frm_int(4966) fps(201.369308)
    10-15 16:40:04.015: W/IInputConnectionWrapper(1069): showStatusIcon on inactive InputConnection
    10-15 16:40:04.025: I/ActivityManager(698): Displayed com.mathieu.alloclient.javadecoder/.MainActivity: +617ms
    10-15 16:40:04.025: E/OMX-VDEC-1080P(288): set_frame_rate: frm_int(4766) fps(209.819550)
    10-15 16:40:04.125: E/OMX-VDEC-1080P(288): set_frame_rate: frm_int(4733) fps(211.282486)
    10-15 16:40:04.445: E/OMX-VDEC-1080P(288): set_frame_rate: frm_int(4711) fps(212.269150)
    10-15 16:40:04.495: E/OMX-VDEC-1080P(288): set_frame_rate: frm_int(4700) fps(212.765961)
    10-15 16:40:05.676: E/OMX-VDEC-1080P(288): set_frame_rate: frm_int(4688) fps(213.310577)
    10-15 16:40:06.087: D/dalvikvm(698): WAIT_FOR_CONCURRENT_GC blocked 1ms
    10-15 16:40:06.207: D/dalvikvm(698): GC_EXPLICIT freed 4120K, 39% free 24216K/39664K, paused 7ms+9ms, total 117ms
    10-15 16:40:06.537: D/ALSADevice(288): standby: handle 0x40024450 h 0x0
    10-15 16:40:06.577: D/alsa_ucm(288): snd_use_case_set(): uc_mgr 0x400fbfb0 identifier _verb value Inactive
    10-15 16:40:06.577: D/alsa_ucm(288): Set mixer controls for HiFi Lowlatency enable 0
    10-15 16:40:06.577: D/alsa_ucm(288): Setting mixer control: SLIMBUS_0_RX Audio Mixer MultiMedia5, value: 0
    10-15 16:40:06.577: D/alsa_ucm(288): snd_use_case_set(): uc_mgr 0x400fbfb0 identifier _disdev value Line
    10-15 16:40:06.577: D/alsa_ucm(288): disdev: device Line not enabled, no need to disable
    10-15 16:40:06.577: D/alsa_ucm(288): snd_use_case_set(): uc_mgr 0x400fbfb0 identifier _disdev value Speaker
    10-15 16:40:06.577: D/alsa_ucm(288): Set mixer controls for Speaker enable 0
    10-15 16:40:06.577: D/alsa_ucm(288): Setting mixer control: RX5 MIX1 INP1, value: ZERO
    10-15 16:40:06.587: D/alsa_ucm(288): Setting mixer control: RX5 MIX1 INP2, value: ZERO
    10-15 16:40:06.587: D/alsa_ucm(288): Setting mixer control: LINEOUT2 Volume, value: 0
    10-15 16:40:06.587: D/alsa_ucm(288): Setting mixer control: LINEOUT4 Volume, value: 0
    10-15 16:40:06.587: D/alsa_ucm(288): Setting mixer control: RX5 Digital Volume, value: 0
    10-15 16:40:06.587: D/AudioUsbALSA(288): exitPlaybackThread, mproxypfdPlayback: -1
    10-15 16:40:06.587: D/AudioUsbALSA(288): closeDevice handle 0x0
    10-15 16:40:06.587: D/AudioUsbALSA(288): closeDevice handle 0x0
    10-15 16:40:17.638: E/OMX-VDEC-1080P(288): set_frame_rate: frm_int(4677) fps(213.812271)
    10-15 16:40:17.698: E/OMX-VDEC-1080P(288): set_frame_rate: frm_int(4644) fps(215.331604)
    10-15 16:40:20.681: E/OMX-VDEC-1080P(288): set_frame_rate: frm_int(4633) fps(215.842865)
    10-15 16:40:21.111: E/OMX-VDEC-1080P(288): set_frame_rate: frm_int(4611) fps(216.872696)
    10-15 16:40:25.746: D/dalvikvm(698): GC_CONCURRENT freed 5829K, 41% free 23778K/39664K, paused 10ms+24ms, total 165ms
    10-15 16:40:28.448: E/MP-Decision(1385): num online cores: 4 reqd : 3 available : 4 rq_depth:2.800000 hotplug_avg_load_dw: 74
    10-15 16:40:28.448: E/MP-Decision(1385): DOWN cpu:3 core_idx:3 Ns:3.100000 Ts:240 total_time_down:243.000000
    10-15 16:40:30.841: W/SystemClock(698): time going backwards: prev 16555345563411(ioctl) vs now 16555345441341(ioctl), tid=764
    10-15 16:40:44.684: D/dalvikvm(698): GC_CONCURRENT freed 5302K, 41% free 23774K/39664K, paused 6ms+9ms, total 107ms
    10-15 16:40:57.467: E/OMX-VDEC-1080P(288): set_frame_rate: frm_int(4577) fps(218.483719)
    10-15 16:41:14.383: D/dalvikvm(698): GC_CONCURRENT freed 5371K, 41% free 23768K/39664K, paused 7ms+8ms, total 146ms
    10-15 16:41:14.403: E/MP-Decision(1385): num online cores: 3 reqd : 4 available : 4 rq_depth:4.500000 hotplug_avg_load_dw: 89
    10-15 16:41:14.403: E/MP-Decision(1385): UP cpu:1 core_idx:1 Nw:1.900000 Tw:140 total_time_up:0.000000
    10-15 16:41:14.403: E/MP-Decision(1385): UP cpu:2 core_idx:2 Nw:2.700000 Tw:90 total_time_up:0.000000
    10-15 16:41:14.403: E/MP-Decision(1385): UP cpu:3 core_idx:3 Nw:3.500000 Tw:90 total_time_up:922.000000
    10-15 16:41:27.466: E/kickstart(862): Total bytes received so far: 48
    10-15 16:41:27.466: E/kickstart(862): EVENT: RECEIVED <-- SAHARA_HELLO
    10-15 16:41:27.466: E/kickstart(862): EVENT: SENDING --> SAHARA_HELLO_RESPONSE
    10-15 16:41:27.466: E/kickstart(862): EVENT: sahara_mode                         = 2
    10-15 16:41:27.466: E/kickstart(862): EVENT: m_comm->sahara_hello_packet_rx.mode = 2
    10-15 16:41:27.466: E/kickstart(862): EVENT: helloRx.mode                        = 2
    10-15 16:41:27.466: E/kickstart(862): Total bytes received so far: 64
    10-15 16:41:27.466: E/kickstart(862): EVENT: RECEIVED <-- SAHARA_MEMORY_DEBUG
    10-15 16:41:27.466: E/kickstart(862): Total bytes received so far: 116
    10-15 16:41:27.466: E/kickstart(862): EVENT: 0x46980000, len=000C0000, "m9kefs1", ""
    10-15 16:41:27.466: E/kickstart(862): EVENT: STATE <-- SAHARA_WAIT_MEMORY_REGION
    10-15 16:41:27.466: E/kickstart(862): EVENT: Saving "/dev/block/platform/msm_sdcc.1/by-name/m9kefs1"
    10-15 16:41:27.526: E/kickstart(862): Total bytes received so far: 786548
    10-15 16:41:27.526: E/kickstart(862): EVENT: Received: 786432 bytes
    10-15 16:41:27.526: E/kickstart(862): EVENT: Writing to disk
    10-15 16:41:27.526: E/kickstart(862): EVENT: Successfully wrote to disk
    10-15 16:41:27.526: E/kickstart(862): Received file "m9kefs1"
    10-15 16:41:27.576: E/kickstart(862): Sync finish Received file "m9kefs1"
    10-15 16:41:27.576: E/kickstart(862): 786432 bytes transferred in 0.106s (7.10 MBps)
    10-15 16:41:27.576: E/kickstart(862): EVENT: num_debug_entries not >=0
    10-15 16:41:27.576: E/kickstart(862): Successfully downloaded files from target
    10-15 16:41:27.576: E/kickstart(862): EVENT: SENDING --> SAHARA_RESET
    10-15 16:41:27.576: E/kickstart(862): Total bytes received so far: 786556
    10-15 16:41:27.576: E/kickstart(862): EVENT: RECEIVED <-- SAHARA_RESET_RESP
    10-15 16:41:27.576: E/kickstart(862): Sahara protocol completed
    10-15 16:41:27.576: E/kickstart(862): EVENT: STATE <-- SAHARA_WAIT_HELLO
    10-15 16:41:27.746: E/MP-Decision(1385): num online cores: 4 reqd : 3 available : 4 rq_depth:2.100000 hotplug_avg_load_dw: 79
    10-15 16:41:27.746: E/MP-Decision(1385): DOWN cpu:3 core_idx:3 Ns:3.100000 Ts:240 total_time_down:244.000000
    10-15 16:41:49.598: D/dalvikvm(698): GC_CONCURRENT freed 5339K, 41% free 23775K/39664K, paused 10ms+7ms, total 134ms
    10-15 16:42:17.225: I/ActivityManager(698): Start proc com.cyanogenmod.lockclock for service com.cyanogenmod.lockclock/.weather.WeatherUpdateService: pid=18954 uid=10028 gids={50028, 3003, 1028}
    10-15 16:42:17.865: D/WeatherXmlParser(18954): Weather updated: WeatherInfo for Santa Barbara@ Tue Oct 15 16:42:17 PDT 2013: Fair(34), temperature 29°C, low 11°, high 27°, humidity 14%, wind 11km/h at W
    10-15 16:42:17.945: I/ActivityManager(698): No longer want com.google.android.apps.uploader (pid 13565): empty #17
    10-15 16:42:24.021: D/dalvikvm(698): GC_CONCURRENT freed 5277K, 41% free 23770K/39664K, paused 8ms+11ms, total 106ms
    10-15 16:42:35.983: W/ThrottleService(698): unable to find stats for iface rmnet0
    10-15 16:42:59.476: D/dalvikvm(698): GC_CONCURRENT freed 5345K, 41% free 23770K/39664K, paused 6ms+13ms, total 168ms
    10-15 16:43:02.098: E/kickstart(862): Total bytes received so far: 48
    10-15 16:43:02.098: E/kickstart(862): EVENT: RECEIVED <-- SAHARA_HELLO
    10-15 16:43:02.098: E/kickstart(862): EVENT: SENDING --> SAHARA_HELLO_RESPONSE
    10-15 16:43:02.098: E/kickstart(862): EVENT: sahara_mode                         = 2
    10-15 16:43:02.098: E/kickstart(862): EVENT: m_comm->sahara_hello_packet_rx.mode = 2
    10-15 16:43:02.098: E/kickstart(862): EVENT: helloRx.mode                        = 2
    10-15 16:43:02.098: E/kickstart(862): Total bytes received so far: 64
    10-15 16:43:02.098: E/kickstart(862): EVENT: RECEIVED <-- SAHARA_MEMORY_DEBUG
    10-15 16:43:02.108: E/kickstart(862): Total bytes received so far: 116
    10-15 16:43:02.108: E/kickstart(862): EVENT: 0x46980000, len=000C0000, "m9kefs2", ""
    10-15 16:43:02.108: E/kickstart(862): EVENT: STATE <-- SAHARA_WAIT_MEMORY_REGION
    10-15 16:43:02.108: E/kickstart(862): EVENT: Saving "/dev/block/platform/msm_sdcc.1/by-name/m9kefs2"
    10-15 16:43:02.158: E/kickstart(862): Total bytes received so far: 786548
    10-15 16:43:02.158: E/kickstart(862): EVENT: Received: 786432 bytes
    10-15 16:43:02.158: E/kickstart(862): EVENT: Writing to disk
    10-15 16:43:02.168: E/kickstart(862): EVENT: Successfully wrote to disk
    10-15 16:43:02.168: E/kickstart(862): Received file "m9kefs2"
    10-15 16:43:02.218: E/kickstart(862): Sync finish Received file "m9kefs2"
    10-15 16:43:02.218: E/kickstart(862): 786432 bytes transferred in 0.113s (6.65 MBps)
    10-15 16:43:02.218: E/kickstart(862): EVENT: num_debug_entries not >=0
    10-15 16:43:02.218: E/kickstart(862): Successfully downloaded files from target
    10-15 16:43:02.218: E/kickstart(862): EVENT: SENDING --> SAHARA_RESET
    10-15 16:43:02.218: E/kickstart(862): Total bytes received so far: 786556
    10-15 16:43:02.218: E/kickstart(862): EVENT: RECEIVED <-- SAHARA_RESET_RESP
    10-15 16:43:02.218: E/kickstart(862): Sahara protocol completed
    10-15 16:43:02.218: E/kickstart(862): EVENT: STATE <-- SAHARA_WAIT_HELLO
    10-15 16:43:17.563: W/SystemClock(698): time going backwards: prev 16722067121029(ioctl) vs now 16722066968441(ioctl), tid=764
    10-15 16:43:34.610: D/dalvikvm(698): GC_CONCURRENT freed 5359K, 41% free 23772K/39664K, paused 9ms+9ms, total 113ms
    10-15 16:43:36.452: E/MP-Decision(1385): num online cores: 3 reqd : 4 available : 4 rq_depth:3.900000 hotplug_avg_load_dw: 100
    10-15 16:43:36.452: E/MP-Decision(1385): UP cpu:1 core_idx:1 Nw:1.900000 Tw:140 total_time_up:0.000000
    10-15 16:43:36.452: E/MP-Decision(1385): UP cpu:2 core_idx:2 Nw:2.700000 Tw:90 total_time_up:0.000000
    10-15 16:43:36.452: E/MP-Decision(1385): UP cpu:3 core_idx:3 Nw:3.500000 Tw:90 total_time_up:194.000000
    10-15 16:44:09.965: D/dalvikvm(698): GC_CONCURRENT freed 5369K, 41% free 23779K/39664K, paused 8ms+8ms, total 103ms
    10-15 16:44:09.965: D/dalvikvm(698): WAIT_FOR_CONCURRENT_GC blocked 30ms
    10-15 16:44:10.605: E/MP-Decision(1385): num online cores: 4 reqd : 3 available : 4 rq_depth:2.800000 hotplug_avg_load_dw: 133
    10-15 16:44:10.605: E/MP-Decision(1385): DOWN cpu:3 core_idx:3 Ns:3.100000 Ts:240 total_time_down:244.000000
    10-15 16:44:12.707: E/MP-Decision(1385): num online cores: 3 reqd : 4 available : 4 rq_depth:4.100000 hotplug_avg_load_dw: 116
    10-15 16:44:12.707: E/MP-Decision(1385): UP cpu:1 core_idx:1 Nw:1.900000 Tw:140 total_time_up:0.000000
    10-15 16:44:12.707: E/MP-Decision(1385): UP cpu:2 core_idx:2 Nw:2.700000 Tw:90 total_time_up:0.000000
    10-15 16:44:12.707: E/MP-Decision(1385): UP cpu:3 core_idx:3 Nw:3.500000 Tw:90 total_time_up:97.000000
    10-15 16:44:14.008: E/MP-Decision(1385): num online cores: 4 reqd : 3 available : 4 rq_depth:1.700000 hotplug_avg_load_dw: 140
    10-15 16:44:14.008: E/MP-Decision(1385): DOWN cpu:3 core_idx:3 Ns:3.100000 Ts:240 total_time_down:240.000000
    10-15 16:44:14.759: E/MP-Decision(1385): num online cores: 3 reqd : 4 available : 4 rq_depth:4.900000 hotplug_avg_load_dw: 132
    10-15 16:44:14.759: E/MP-Decision(1385): UP cpu:1 core_idx:1 Nw:1.900000 Tw:140 total_time_up:0.000000
    10-15 16:44:14.759: E/MP-Decision(1385): UP cpu:2 core_idx:2 Nw:2.700000 Tw:90 total_time_up:0.000000
    10-15 16:44:14.759: E/MP-Decision(1385): UP cpu:3 core_idx:3 Nw:3.500000 Tw:90 total_time_up:97.000000
    10-15 16:44:15.360: E/MP-Decision(1385): num online cores: 4 reqd : 3 available : 4 rq_depth:2.300000 hotplug_avg_load_dw: 139
    10-15 16:44:15.360: E/MP-Decision(1385): DOWN cpu:3 core_idx:3 Ns:3.100000 Ts:240 total_time_down:243.000000
    10-15 16:44:15.560: E/MP-Decision(1385): num online cores: 3 reqd : 4 available : 4 rq_depth:3.900000 hotplug_avg_load_dw: 133
    10-15 16:44:15.560: E/MP-Decision(1385): UP cpu:1 core_idx:1 Nw:1.900000 Tw:140 total_time_up:0.000000
    10-15 16:44:15.560: E/MP-Decision(1385): UP cpu:2 core_idx:2 Nw:2.700000 Tw:90 total_time_up:0.000000
    10-15 16:44:15.560: E/MP-Decision(1385): UP cpu:3 core_idx:3 Nw:3.500000 Tw:90 total_time_up:95.000000
    10-15 16:44:16.361: E/MP-Decision(1385): num online cores: 4 reqd : 3 available : 4 rq_depth:2.500000 hotplug_avg_load_dw: 132
    10-15 16:44:16.361: E/MP-Decision(1385): DOWN cpu:3 core_idx:3 Ns:3.100000 Ts:240 total_time_down:242.000000
    10-15 16:44:16.661: E/MP-Decision(1385): num online cores: 3 reqd : 4 available : 4 rq_depth:3.700000 hotplug_avg_load_dw: 127
    10-15 16:44:16.661: E/MP-Decision(1385): UP cpu:1 core_idx:1 Nw:1.900000 Tw:140 total_time_up:0.000000
    10-15 16:44:16.661: E/MP-Decision(1385): UP cpu:2 core_idx:2 Nw:2.700000 Tw:90 total_time_up:0.000000
    10-15 16:44:16.661: E/MP-Decision(1385): UP cpu:3 core_idx:3 Nw:3.500000 Tw:90 total_time_up:97.000000
    10-15 16:44:20.605: E/MP-Decision(1385): num online cores: 4 reqd : 3 available : 4 rq_depth:1.700000 hotplug_avg_load_dw: 122
    10-15 16:44:20.605: E/MP-Decision(1385): DOWN cpu:3 core_idx:3 Ns:3.100000 Ts:240 total_time_down:244.000000
    10-15 16:44:20.615: W/ProcessStats(698): Skipping unknown process pid 19038
    10-15 16:44:20.615: W/ProcessStats(698): Skipping unknown process pid 19041

    Garbage collector entries in Logcat :

    10-15 16:40:06.087: D/dalvikvm(698): WAIT_FOR_CONCURRENT_GC blocked 1ms
    10-15 16:40:06.207: D/dalvikvm(698): GC_EXPLICIT freed 4120K, 39% free 24216K/39664K,   paused 7ms+9ms, total 117ms
    10-15 16:40:25.746: D/dalvikvm(698): GC_CONCURRENT freed 5829K, 41% free 23778K/39664K, paused 10ms+24ms, total 165ms
    10-15 16:40:44.684: D/dalvikvm(698): GC_CONCURRENT freed 5302K, 41% free 23774K/39664K, paused 6ms+9ms, total 107ms
    10-15 16:41:14.383: D/dalvikvm(698): GC_CONCURRENT freed 5371K, 41% free 23768K/39664K, paused 7ms+8ms, total 146ms
    10-15 16:41:49.598: D/dalvikvm(698): GC_CONCURRENT freed 5339K, 41% free 23775K/39664K, paused 10ms+7ms, total 134ms
    10-15 16:42:24.021: D/dalvikvm(698): GC_CONCURRENT freed 5277K, 41% free 23770K/39664K, paused 8ms+11ms, total 106ms
    10-15 16:42:59.476: D/dalvikvm(698): GC_CONCURRENT freed 5345K, 41% free 23770K/39664K, paused 6ms+13ms, total 168ms
    10-15 16:43:34.610: D/dalvikvm(698): GC_CONCURRENT freed 5359K, 41% free 23772K/39664K, paused 9ms+9ms, total 113ms
    10-15 16:44:09.965: D/dalvikvm(698): GC_CONCURRENT freed 5369K, 41% free 23779K/39664K, paused 8ms+8ms, total 103ms
    10-15 16:44:09.965: D/dalvikvm(698): WAIT_FOR_CONCURRENT_GC blocked 30ms
    10-15 16:44:24.389: D/dalvikvm(698): GC_EXPLICIT freed 3618K, 41% free 23768K/39664K, paused 12ms+11ms, total 123ms
  • Windows again

    24 septembre 2013, par Mikko Koppanen — Imagick

    Seems like the new Windows build system is online and Imagick for Windows is now provided here :

    http://windows.php.net/downloads/pecl/releases/imagick/

  • Re-creating/matching ffmpeg settings

    8 novembre 2013, par Pete Helgren

    I have an MP4 file that plays pretty much on every browser using either HTML5 or flash fallback (using mediaelement.js). I also have a series of additional video files that I would like to have "match" the one file that does play consistently but I haven't been able to match the ffmpeg settings so it produces a like file. I used ffprobe and got the following results on the file that plays successfully :

    ffprobe version N-53616-g7a2edcf Copyright (c) 2007-2013 the FFmpeg developers
    built on May 29 2013 01:21:08 with gcc 4.7.3 (GCC)
    configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
    isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
    le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp
    e --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --ena
    ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-l
    ibopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp
    eex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-
    amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --
    enable-libxvid --enable-zlib
    libavutil      52. 34.100 / 52. 34.100
    libavcodec     55. 12.102 / 55. 12.102
    libavformat    55.  7.100 / 55.  7.100
    libavdevice    55.  1.101 / 55.  1.101
    libavfilter     3. 72.100 /  3. 72.100
    libswscale      2.  3.100 /  2.  3.100
    libswresample   0. 17.102 /  0. 17.102
    libpostproc    52.  3.100 / 52.  3.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'MyFile.mp4':
    Metadata:
     major_brand     : M4V
     minor_version   : 1
     compatible_brands: M4V mp42isom
     creation_time   : 2013-05-29 16:08:29
    Duration: 00:01:58.10, start: 0.000000, bitrate: 1155 kb/s
    Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 854x480 [SAR 1:1 DAR 427:240], 995 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc
    Metadata:
     creation_time   : 2013-05-29 16:08:29
     handler_name    : Mainconcept MP4 Video Media Handler
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 157 kb/s
    Metadata:
     creation_time   : 2013-05-29 16:08:29
     handler_name    : Mainconcept MP4 Sound Media Handler

    Following a few guides I found online, I am using the following ffmpeg settings :

    ffmpeg -i {input file name} -y -acodec aac -ac 2 -strict experimental -ab 64k -s 320x240 -vcodec libx264 -pix_fmt yuv420p -preset slow -profile:v baseline -level 30 -maxrate 300k -bufsize 600k -b:v 300k -f mp4 -threads 0 -movflags +faststart {output file name}

    That command produces the following output :

    ffmpeg -i "testin.mp4" -y -acodec aac -ac 2 -strict experimental -ab 64k -s 320x240 -vcodec libx264 -pix_fmt yuv420p -preset slow-profile:v baseline -level 30 -maxrate 300k -bufsize 600k -b:v 300k -f mp4 -threads 0 -movflags +faststart testout.mp4

    ffmpeg version N-53616-g7a2edcf Copyright (c) 2000-2013 the FFmpeg developers  built on May 29 2013 01:21:08 with gcc 4.7.3 (GCC)  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
     libavutil      52. 34.100 / 52. 34.100
     libavcodec     55. 12.102 / 55. 12.102
     libavformat    55.  7.100 / 55.  7.100
     libavdevice    55.  1.101 / 55.  1.101
     libavfilter     3. 72.100 /  3. 72.100
     libswscale      2.  3.100 /  2.  3.100
     libswresample   0. 17.102 /  0. 17.102
     libpostproc    52.  3.100 / 52.  3.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'testin.mp4':
     Metadata:
       major_brand     : mp42
       minor_version   : 0
       compatible_brands: mp42mp41
       creation_time   : 2013-10-01 17:11:42
     Duration: 00:04:33.75, start: 0.000000, bitrate: 725 kb/s
       Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 596 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc
       Metadata:
         creation_time   : 2013-10-01 17:11:42
         handler_name    : ?Mainconcept Video Media Handler
       Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s
       Metadata:
         creation_time   : 2013-10-01 17:11:42
         handler_name    : #Mainconcept MP4 Sound Media Handler
    [libx264 @ 0000000000358160] using SAR=1/1
    [libx264 @ 0000000000358160] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2AVX
    [libx264 @ 0000000000358160] profile Constrained Baseline, level 3.0
    [libx264 @ 0000000000358160] 264 - core 133 r2334 a3ac64b - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=0 ref=5 deblock=1:0:0 analyse=0x1:0x111 me=umh subme=8 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=50 rc=cbr mbtree=1 bitrate=300 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=300 vbv_bufsize=600 nal_hrd=none ip_ratio=1.40 aq=1:1.00

    Output #0, mp4, to 'testout.mp4':
     Metadata:
       major_brand     : mp42
       minor_version   : 0
       compatible_brands: mp42mp41
       encoder         : Lavf55.7.100
      Stream #0:0(eng): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 320x240 [SAR 1:1 DAR 4:3], q=-1--1, 300 kb/s, 30k tbn, 29.97 tbc
       Metadata:
         creation_time   : 2013-10-01 17:11:42
         handler_name    : ?Mainconcept Video Media Handler
       Stream #0:1(eng): Audio: aac ([64][0][0][0] / 0x0040), 48000 Hz, stereo, fltp, 64 kb/s
       Metadata:
         creation_time   : 2013-10-01 17:11:42
         handler_name    : #Mainconcept MP4 Sound Media Handler
    Stream mapping:
     Stream #0:0 -> #0:0 (h264 -> libx264)
     Stream #0:1 -> #0:1 (aac -> aac)
    Press [q] to stop, [?] for help
    frame=  283 fps=0.0 q=21.0 size=     329kB time=00:00:09.30 bitrate= 289.9kbits/
    frame=  565 fps=564 q=20.0 size=     760kB time=00:00:18.64 bitrate= 333.7kbits/
    frame=  846 fps=564 q=21.0 size=    1179kB time=00:00:28.20 bitrate= 342.5kbits/
    frame= 1123 fps=561 q=22.0 size=    1603kB time=00:00:37.33 bitrate= 351.7kbits/
    frame= 1376 fps=550 q=25.0 size=    1986kB time=00:00:45.69 bitrate= 356.1kbits/
    frame= 1651 fps=550 q=22.0 size=    2377kB time=00:00:55.01 bitrate= 353.9kbits/
    frame= 1914 fps=546 q=24.0 size=    2776kB time=00:01:03.70 bitrate= 357.0kbits/
    frame= 2181 fps=545 q=24.0 size=    3163kB time=00:01:12.70 bitrate= 356.4kbits/
    frame= 2443 fps=543 q=24.0 size=    3566kB time=00:01:21.38 bitrate= 358.9kbits/
    frame= 2702 fps=540 q=24.0 size=    3939kB time=00:01:30.04 bitrate= 358.4kbits/
    frame= 2965 fps=539 q=24.0 size=    4338kB time=00:01:38.73 bitrate= 359.9kbits/
    frame= 3236 fps=539 q=23.0 size=    4731kB time=00:01:48.03 bitrate= 358.7kbits/
    frame= 3505 fps=539 q=24.0 size=    5130kB time=00:01:56.75 bitrate= 360.0kbits/
    frame= 3765 fps=537 q=26.0 size=    5521kB time=00:02:05.41 bitrate= 360.6kbits/
    frame= 4036 fps=538 q=24.0 size=    5905kB time=00:02:14.59 bitrate= 359.4kbits/
    frame= 4326 fps=540 q=24.0 size=    6343kB time=00:02:24.10 bitrate= 360.6kbits/
    frame= 4606 fps=542 q=27.0 size=    6783kB time=00:02:33.49 bitrate= 362.0kbits/
    frame= 4886 fps=543 q=24.0 size=    7168kB time=00:02:42.81 bitrate= 360.7kbits/
    frame= 5166 fps=544 q=27.0 size=    7616kB time=00:02:52.13 bitrate= 362.5kbits/
    frame= 5456 fps=545 q=24.0 size=    8020kB time=00:03:01.84 bitrate= 361.3kbits/
    frame= 5736 fps=546 q=27.0 size=    8458kB time=00:03:11.18 bitrate= 362.4kbits/
    frame= 6001 fps=545 q=30.0 size=    8849kB time=00:03:20.17 bitrate= 362.1kbits/
    frame= 6264 fps=544 q=27.0 size=    9233kB time=00:03:28.85 bitrate= 362.2kbits/
    frame= 6526 fps=544 q=26.0 size=    9611kB time=00:03:37.55 bitrate= 361.9kbits/
    frame= 6793 fps=543 q=26.0 size=   10006kB time=00:03:46.51 bitrate= 361.9kbits/
    frame= 7076 fps=544 q=24.0 size=   10410kB time=00:03:55.86 bitrate= 361.6kbits/
    frame= 7355 fps=544 q=25.0 size=   10835kB time=00:04:05.20 bitrate= 362.0kbits/
    frame= 7615 fps=543 q=27.0 size=   11236kB time=00:04:13.88 bitrate= 362.5kbits/
    frame= 7883 fps=543 q=25.0 size=   11625kB time=00:04:22.89 bitrate= 362.3kbits/
    frame= 8166 fps=544 q=21.0 size=   12040kB time=00:04:32.31 bitrate= 362.2kbits/
    Starting second pass: moving header on top of the file
    frame= 8203 fps=540 q=-1.0 Lsize=   12417kB time=00:04:33.74 bitrate= 371.6kbits/s
    video:10035kB audio:2150kB subtitle:0 global headers:0kB muxing overhead 1.901929%
    [libx264 @ 0000000000358160] frame I:41    Avg QP:14.13  size: 18349
    [libx264 @ 0000000000358160] frame P:8162  Avg QP:17.24  size:  1167
    [libx264 @ 0000000000358160] mb I  I16..4: 24.8%  0.0% 75.2%
    [libx264 @ 0000000000358160] mb P  I16..4:  0.4%  0.0%  0.3%  P16..4: 29.1%  6.4%  3.2%  0.0%  0.0%    skip:60.7%
    [libx264 @ 0000000000358160] coded y,uvDC,uvAC intra: 66.1% 74.1% 53.1% inter: 15.3% 20.2% 4.0%
    [libx264 @ 0000000000358160] i16 v,h,dc,p: 23% 21% 11% 45%
    [libx264 @ 0000000000358160] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 21% 25% 14%  6%  7% 7%  7%  6%  7%
    [libx264 @ 0000000000358160] i8c dc,h,v,p: 43% 28% 19% 10%
    [libx264 @ 0000000000358160] ref P L0: 78.4% 12.6%  4.9%  2.4%  1.7%
    [libx264 @ 0000000000358160] kb/s:300.33

    The one problem with the incantation above is that on iPad's and iPhones and some Android tablets all you hear is the audio with no video. But the file listed above (contents of the ffprobe) does not have that problem, it WILL play on an iPad, iPhone, Android tablet. I researched causes for "audio, no video" and the recommendations were all over the deck. But, the file listed in the ffprobe DOES play, so if I can match those settings described by the ffprobe for all of the other videos, they should play consistently as well. My challenge is to match the ffprobe settings using ffmpeg and there doesn't seem to be a 1 to 1 match between what I see in ffprobe and the corresponding settings in ffmpeg (a nice utility would be to have ffprobe output the ffmpeg settings that could be used to create a file of similar format).

    I walked through the ffprobe documentation but couldn't find anything that would produce a format that could be used as input to ffmpeg. Suggestions ?