
Recherche avancée
Médias (1)
-
Bug de détection d’ogg
22 mars 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Video
Autres articles (88)
-
Amélioration de la version de base
13 septembre 2013Jolie sélection multiple
Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...) -
Emballe médias : à quoi cela sert ?
4 février 2011, parCe plugin vise à gérer des sites de mise en ligne de documents de tous types.
Il crée des "médias", à savoir : un "média" est un article au sens SPIP créé automatiquement lors du téléversement d’un document qu’il soit audio, vidéo, image ou textuel ; un seul document ne peut être lié à un article dit "média" ; -
Gestion de la ferme
2 mars 2010, parLa ferme est gérée dans son ensemble par des "super admins".
Certains réglages peuvent être fais afin de réguler les besoins des différents canaux.
Dans un premier temps il utilise le plugin "Gestion de mutualisation"
Sur d’autres sites (11444)
-
Anomalie #4505 (Fermé) : Version commit Git non affichée par SPIP
24 juin 2020, par b bSuper, merci marcimat, on ferme :)
-
Evolution #4471 (En cours) : singulier_ou_pluriel pour l’arabe
5 juin 2020, par b bSuper, merci pour le patch ! Je viens justement de corriger cette fonction pour le français, ton patch sera l’occasion de la compléter :)
-
exo player mp2, aac audio format and avi video format [closed]
27 mai 2020, par Muhammet

/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.google.android.exoplayer2.ext.ffmpeg;

import android.os.Handler;
import androidx.annotation.Nullable;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.ExoPlaybackException;
import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.audio.AudioProcessor;
import com.google.android.exoplayer2.audio.AudioRendererEventListener;
import com.google.android.exoplayer2.audio.AudioSink;
import com.google.android.exoplayer2.audio.DefaultAudioSink;
import com.google.android.exoplayer2.audio.SimpleDecoderAudioRenderer;
import com.google.android.exoplayer2.drm.DrmSessionManager;
import com.google.android.exoplayer2.drm.ExoMediaCrypto;
import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.MimeTypes;
import java.util.Collections;
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;

/**
 * Decodes and renders audio using FFmpeg.
 */
public final class FfmpegAudioRenderer extends SimpleDecoderAudioRenderer {

 /** The number of input and output buffers. */
 private static final int NUM_BUFFERS = 16;
 /** The default input buffer size. */
 private static final int DEFAULT_INPUT_BUFFER_SIZE = 960 * 6;

 private final boolean enableFloatOutput;

 private @MonotonicNonNull FfmpegDecoder decoder;

 public FfmpegAudioRenderer() {
 this(/* eventHandler= */ null, /* eventListener= */ null);
 }

 /**
 * @param eventHandler A handler to use when delivering events to {@code eventListener}. May be
 * null if delivery of events is not required.
 * @param eventListener A listener of events. May be null if delivery of events is not required.
 * @param audioProcessors Optional {@link AudioProcessor}s that will process audio before output.
 */
 public FfmpegAudioRenderer(
 @Nullable Handler eventHandler,
 @Nullable AudioRendererEventListener eventListener,
 AudioProcessor... audioProcessors) {
 this(
 eventHandler,
 eventListener,
 new DefaultAudioSink(/* audioCapabilities= */ null, audioProcessors),
 /* enableFloatOutput= */ false);
 }

 /**
 * @param eventHandler A handler to use when delivering events to {@code eventListener}. May be
 * null if delivery of events is not required.
 * @param eventListener A listener of events. May be null if delivery of events is not required.
 * @param audioSink The sink to which audio will be output.
 * @param enableFloatOutput Whether to enable 32-bit float audio format, if supported on the
 * device/build and if the input format may have bit depth higher than 16-bit. When using
 * 32-bit float output, any audio processing will be disabled, including playback speed/pitch
 * adjustment.
 */
 public FfmpegAudioRenderer(
 @Nullable Handler eventHandler,
 @Nullable AudioRendererEventListener eventListener,
 AudioSink audioSink,
 boolean enableFloatOutput) {
 super(
 eventHandler,
 eventListener,
 /* drmSessionManager= */ null,
 /* playClearSamplesWithoutKeys= */ false,
 audioSink);
 this.enableFloatOutput = enableFloatOutput;
 }

 @Override
 @FormatSupport
 protected int supportsFormatInternal(
 @Nullable DrmSessionManager<exomediacrypto> drmSessionManager, Format format) {
 Assertions.checkNotNull(format.sampleMimeType);
 if (!FfmpegLibrary.isAvailable()) {
 return FORMAT_UNSUPPORTED_TYPE;
 } else if (!FfmpegLibrary.supportsFormat(format.sampleMimeType) || !isOutputSupported(format)) {
 return FORMAT_UNSUPPORTED_SUBTYPE;
 } else if (!supportsFormatDrm(drmSessionManager, format.drmInitData)) {
 return FORMAT_UNSUPPORTED_DRM;
 } else {
 return FORMAT_HANDLED;
 }
 }

 @Override
 @AdaptiveSupport
 public final int supportsMixedMimeTypeAdaptation() throws ExoPlaybackException {
 return ADAPTIVE_NOT_SEAMLESS;
 }

 @Override
 protected FfmpegDecoder createDecoder(Format format, @Nullable ExoMediaCrypto mediaCrypto)
 throws FfmpegDecoderException {
 int initialInputBufferSize =
 format.maxInputSize != Format.NO_VALUE ? format.maxInputSize : DEFAULT_INPUT_BUFFER_SIZE;
 decoder =
 new FfmpegDecoder(
 NUM_BUFFERS, NUM_BUFFERS, initialInputBufferSize, format, shouldUseFloatOutput(format));
 return decoder;
 }

 @Override
 public Format getOutputFormat() {
 Assertions.checkNotNull(decoder);
 int channelCount = decoder.getChannelCount();
 int sampleRate = decoder.getSampleRate();
 @C.PcmEncoding int encoding = decoder.getEncoding();
 return Format.createAudioSampleFormat(
 /* id= */ null,
 MimeTypes.AUDIO_RAW,
 /* codecs= */ null,
 Format.NO_VALUE,
 Format.NO_VALUE,
 channelCount,
 sampleRate,
 encoding,
 Collections.emptyList(),
 /* drmInitData= */ null,
 /* selectionFlags= */ 0,
 /* language= */ null);
 }

 private boolean isOutputSupported(Format inputFormat) {
 return shouldUseFloatOutput(inputFormat)
 || supportsOutput(inputFormat.channelCount, C.ENCODING_PCM_16BIT);
 }

 private boolean shouldUseFloatOutput(Format inputFormat) {
 Assertions.checkNotNull(inputFormat.sampleMimeType);
 if (!enableFloatOutput || !supportsOutput(inputFormat.channelCount, C.ENCODING_PCM_FLOAT)) {
 return false;
 }
 switch (inputFormat.sampleMimeType) {
 case MimeTypes.AUDIO_RAW:
 // For raw audio, output in 32-bit float encoding if the bit depth is > 16-bit.
 return inputFormat.pcmEncoding == C.ENCODING_PCM_24BIT
 || inputFormat.pcmEncoding == C.ENCODING_PCM_32BIT
 || inputFormat.pcmEncoding == C.ENCODING_PCM_FLOAT;
 case MimeTypes.AUDIO_AC3:
 // AC-3 is always 16-bit, so there is no point outputting in 32-bit float encoding.
 return false;
 default:
 // For all other formats, assume that it's worth using 32-bit float encoding.
 return true;
 }
 }

}</exomediacrypto>








I use exoplayer but no sound from mp2 and aac audio formats in android application.



I get this error when I open mp2 and aac audio format videos "media includes audio tracks but none



are playable by this device"and some are not working in .avi format, some are working please can you help me





/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.google.android.exoplayer2.ext.ffmpeg;

import androidx.annotation.Nullable;
import com.google.android.exoplayer2.ExoPlayerLibraryInfo;
import com.google.android.exoplayer2.util.LibraryLoader;
import com.google.android.exoplayer2.util.Log;
import com.google.android.exoplayer2.util.MimeTypes;

/**
 * Configures and queries the underlying native library.
 */
public final class FfmpegLibrary {

 static {
 ExoPlayerLibraryInfo.registerModule("goog.exo.ffmpeg");
 }

 private static final String TAG = "FfmpegLibrary";

 private static final LibraryLoader LOADER =
 new LibraryLoader("avutil", "swresample", "avcodec", "ffmpeg");

 private FfmpegLibrary() {}

 /**
 * Override the names of the FFmpeg native libraries. If an application wishes to call this
 * method, it must do so before calling any other method defined by this class, and before
 * instantiating a {@link FfmpegAudioRenderer} instance.
 *
 * @param libraries The names of the FFmpeg native libraries.
 */
 public static void setLibraries(String... libraries) {
 LOADER.setLibraries(libraries);
 }

 /**
 * Returns whether the underlying library is available, loading it if necessary.
 */
 public static boolean isAvailable() {
 return LOADER.isAvailable();
 }

 /** Returns the version of the underlying library if available, or null otherwise. */
 public static @Nullable String getVersion() {
 return isAvailable() ? ffmpegGetVersion() : null;
 }

 /**
 * Returns whether the underlying library supports the specified MIME type.
 *
 * @param mimeType The MIME type to check.
 */
 public static boolean supportsFormat(String mimeType) {
 if (!isAvailable()) {
 return false;
 }
 String codecName = getCodecName(mimeType);
 if (codecName == null) {
 return false;
 }
 if (!ffmpegHasDecoder(codecName)) {
 Log.w(TAG, "No " + codecName + " decoder available. Check the FFmpeg build configuration.");
 return false;
 }
 return true;
 }

 /**
 * Returns the name of the FFmpeg decoder that could be used to decode the format, or {@code null}
 * if it's unsupported.
 */
 /* package */ static @Nullable String getCodecName(String mimeType) {
 switch (mimeType) {
 case MimeTypes.AUDIO_AAC:
 return "aac";
 case MimeTypes.AUDIO_MPEG:
 case MimeTypes.AUDIO_MPEG_L1:
 case MimeTypes.AUDIO_MPEG_L2:
 return "mp3";
 case MimeTypes.AUDIO_AC3:
 return "ac3";
 case MimeTypes.AUDIO_E_AC3:
 case MimeTypes.AUDIO_E_AC3_JOC:
 return "eac3";
 case MimeTypes.AUDIO_TRUEHD:
 return "truehd";
 case MimeTypes.AUDIO_DTS:
 case MimeTypes.AUDIO_DTS_HD:
 return "dca";
 case MimeTypes.AUDIO_VORBIS:
 return "vorbis";
 case MimeTypes.AUDIO_OPUS:
 return "opus";
 case MimeTypes.AUDIO_AMR_NB:
 return "amrnb";
 case MimeTypes.AUDIO_AMR_WB:
 return "amrwb";
 case MimeTypes.AUDIO_FLAC:
 return "flac";
 case MimeTypes.AUDIO_ALAC:
 return "alac";
 case MimeTypes.AUDIO_MLAW:
 return "pcm_mulaw";
 case MimeTypes.AUDIO_ALAW:
 return "pcm_alaw";
 default:
 return null;
 }
 }

 private static native String ffmpegGetVersion();
 private static native boolean ffmpegHasDecoder(String codecName);

}








[enter image description here][1]
[enter image description here][2]