reproduzca reproducir que poner para insertar etiqueta como codigo audio video ffmpeg ffprobe avprobe

audio - reproducir - insertar video en html5



Averiguar si el archivo de video tiene audio presente (5)

Esta pregunta ya tiene una respuesta aquí:

Estoy tratando de averiguar si un video tiene audio presente para extraer el mp3 usando ffmpeg. Cuando el video no contiene canales de audio, ffmpeg crea un archivo mp3 vacío que estoy usando para averiguar si el audio estaba presente en el video en primer lugar. Estoy seguro de que hay una mejor manera de identificar si el audio está presente en un video. ¿Ayudará avprobe con esto? ¿Alguien puede indicarme un recurso o probablemente una solución?

Edición: Sorprendentemente, el mismo comando en mi servidor que ejecuta la última compilación de ffprobe no se ejecuta. Lanza un error diciendo

Opción no reconocida ''select_stream''

Error al establecer el valor ''a'' para la opción ''select_stream''

¿Alguna idea de cómo rectificar esto?


Encontré una ronda por resolver este problema. Esto parece responder a la pregunta que hice.

ffprobe -i input.mp4 -show_streams 2>&1 | grep ''Stream #0:1''


Si es un archivo de video normal de la ruta local, puede hacer algo como esto para saber si el video tiene un archivo de audio o no.

Necesitas mirar en el MediaMetadataRetriever

Al usar METADATA_KEY_HAS_AUDIO puede verificar si el video tiene el audio o no.

private boolean isVideoHaveAudioTrack(String path) { boolean audioTrack =false; MediaMetadataRetriever retriever = new MediaMetadataRetriever(); retriever.setDataSource(path); String hasAudioStr = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_HAS_AUDIO); if(hasAudioStr.equals("yes")){ audioTrack=true; } else{ audioTrack=false; } return audioTrack; }

Aquí la ruta es la ruta del archivo de vídeo.

PD: Ya que es una pregunta antigua, escribo esta respuesta para ayudar a otras personas, a las que puede ayudar.


Si solo quiere saber si hay audio y no le importan los detalles de la transmisión, puede ejecutar el siguiente comando, que extraerá la duración de la transmisión de audio en el archivo de entrada. Si la respuesta es nula / espacio en blanco, el archivo de entrada no contiene audio.

Mando:

ffprobe -v error -of flat=s_ -select_streams 1 -show_entries stream=duration -of default=noprint_wrappers=1:nokey=1


Yo usaría FFprobe (viene junto con FFMPEG):

ffprobe -i INPUT -show_streams -select_streams a -loglevel error

En caso de que no haya audio no sale nada. Si hay una transmisión de audio, entonces obtienes algo como:

[CORRIENTE]

índice = 0

codec_name = mp3

codec_long_name = MP3 (capa de audio MPEG 3)

perfil = desconocido

codec_type = audio

codec_time_base = 1/44100

etc

etc ...

[/CORRIENTE]

Eso debería ser lo suficientemente fácil de analizar, independientemente del idioma que esté utilizando para automatizar este proceso.


ffprobe -v fatal # set log level to fatal -of default=nw=1:nk=1 # use default format and hide wrappers and keys -show_streams # show info about media streams -select_streams a # show only audio streams -show_entries stream=codec_type # show only stream.codec_type entries video.mp4 # input file

Un archivo multimedia contiene una secuencia de audio que devuelve:

audio 1 0 0 0 0 0 0 0 0 0 0 0 und SoundHandler

Un archivo multimedia no contiene ninguna secuencia de audio que devuelva el resultado vacío.

Un archivo no multimedia también devuelve un resultado vacío. Si desea devolver un mensaje de error para archivos no multimedia y en cualquier otro caso de error, use el -v error lugar:

ffprobe -v error # set log level to error -of default=nw=1:nk=1 # use default format and hide wrappers and keys -show_streams # show info about media streams -select_streams a # show only audio streams -show_entries stream=codec_type # show only stream.codec_type entries video.mp4 # input file

Entonces, tomas esto en lugar de un resultado vacío:

non-media-file.zip: Invalid data found when processing input