Нет звука в аудио mp4 при воспроизведении с видео на Ubuntu 20.04.5 LTS.

Вопрос или проблема

Когда я пытаюсь воспроизвести конкретный MP4 файл (output-2.mp4), который я создал с помощью ffmpeg, у него нет звука при воспроизведении с помощью видеофайлов, и он изначально без звука. Свойства файла показывают отсутствие аудио. Однако у него есть звук, и “mpv media player” воспроизводит звук, как и ffplay – почему это так?

файл без воспроизведения с ffprobe:

$ ffprobe output-2.mp4
ffprobe версия 4.2.7-0ubuntu0.1 Copyright (c) 2007-2022 разработчики FFmpeg
  собран с помощью gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
  конфигурация: --prefix=/usr --extra-version=0ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, из 'output-2.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.29.100
  Длительность: 00:30:00.00, начало: 0.000000, битрейт: 327 кбит/с
    Поток #0:0(und): Видео: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 313 кбит/с, 0.20 fps, 0.20 tbr, 16384 tbn, 0.40 tbc (по умолчанию)
    Metadata:
      handler_name    : VideoHandler
    Поток #0:1(eng): Аудио: aac (LC) (mp4a / 0x6134706D), 44100 Гц, стерео, fltp, 127 кбит/с (по умолчанию)
    Metadata:
      handler_name    : ISO Media file produced by Google Inc.

вывод ffprobe из файла, который воспроизводит звук:

$ ffprobe breton.mp4
ffprobe версия 4.2.7-0ubuntu0.1 Copyright (c) 2007-2022 разработчики FFmpeg
  собран с помощью gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
  конфигурация: --prefix=/usr --extra-version=0ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, из 'breton.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.29.100
  Длительность: 00:03:13.21, начало: 0.000000, битрейт: 208 кбит/с
    Поток #0:0(und): Видео: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1152x720 [SAR 1:1 DAR 8:5], 72 кбит/с, 30 fps, 30 tbr, 15360 tbn, 60 tbc (по умолчанию)
    Metadata:
      handler_name    : ISO Media file produced by Google Inc.
    Поток #0:1(eng): Аудио: aac (LC) (mp4a / 0x6134706D), 44100 Гц, стерео, fltp, 127 кбит/с (по умолчанию)
    Metadata:
      handler_name    : ISO Media file produced by Google Inc.

Я создал output-2.mp4 из некоторых jpg (pic-1.jpg, pic-2.jpg и т.д.) и breton.mp4 следующим образом:


ffmpeg -framerate .2 -loop 1 -i pic-%d.jpg -c:v libx264 -t 1800 -pix_fmt yuv420p -filter_complex "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2"  int.mp4
ffmpeg -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 -i int.mp4 -c:v copy -c:a aac -shortest int-silent.mp4
ffmpeg -i int-silent.mp4 -i breton.mp4 -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 output-2.mp4

Длинны потоков были разными – использование -shortest исправляет это

ffmpeg -i int-silent.mp4 -i breton.mp4 -shortest -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 output-2.mp4

Ответ или решение

Решение проблемы: Нет звука при воспроизведении MP4 на Ubuntu 20.04.5 LTS

Введение

При работе с медиафайлами на операционной системе Ubuntu 20.04.5 LTS пользователи могут столкнуться с проблемами, связанными с отсутствием звука при воспроизведении некоторых MP4 файлов. В вашем случае один из файлов (output-2.mp4), созданный с помощью FFmpeg, воспроизводится без звука в стандартном медиаплеере, однако другие плееры, такие как mpv и ffplay, воспроизводят звук корректно.

Причины проблемы

На основании представленной вами информации можно выделить несколько ключевых моментов:

  1. Структура файла: С помощью ffprobe вы показали, что в вашем файле output-2.mp4 действительно присутствует аудиопоток. Однако, медиа плеер, который вы используете, возможно, не имеет правильной обработки аудиокодека или не смог корректно интерпретировать файл. Это может происходить из-за специфики реализации библиотеки, используемой плеером, или конфигурации самой системы.

  2. Неправильная обработка метаданных: В некоторых случаях неисправный или некорректный метадатафайл может мешать нормальному восприятию аудиопотока. Например, информация о длительности аудиопотока может быть недоступна или неправильно установлена.

  3. Различие в длительности потоков: Как вы упомянули, начальная версия команды FFmpeg не применяла параметр -shortest, что могло привести к созданию файла, где video stream и audio stream имеют разные продолжительности. Видеопоток может обрабатываться плеером, но отсутствие синхронизации может вызвать его «молчание».

Решение

Пользовательская команда для обработки ошибок с длительностью потоков:

ffmpeg -i int-silent.mp4 -i breton.mp4 -shortest -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 output-2.mp4

Использование параметра -shortest обеспечит, что выходной файл output-2.mp4 создается с правильной синхронизацией между потоком видео и потоком аудио.

Подходы к диагностике проблемы

Если предложенное решение не сработает, можно предпринять следующие шаги для дальнейшей диагностики:

  1. Проверка кодеков: Убедитесь, что на вашем оборудовании установлены необходимые кодеки для воспроизведения аудиофайлов. Вы можете использовать команду:

    ffmpeg -codecs | grep aac

    Это покажет, поддерживается ли кодек aac.

  2. Обновление системы и программного обеспечения: Убедитесь, что ваша система и все медиаплееры обновлены до последних версий. Зачастую обновления могут решать проблемы совместимости и улучшать поддержку форматов.

  3. Тестирование в других плеерах: Если Videos (или любой другой выбранный вами стандартный медиаплеер) продолжает вызывать проблемы, попробуйте использовать альтернативные плееры, такие как VLC или GStreamer, которые обеспечивают более широкий спектр поддержки форматов.

Заключение

Проблема с отсутствием звука в MP4 файлах на Ubuntu может быть вызвана рядом факторов, включая синхронизацию потоков и поддержку кодеков. Используя правильные команды и стратегии, можно эффективно справляться с такими ситуациями. Ваша модификация команды FFmpeg с применением параметра -shortest – это правильный шаг к решению проблемы.

Оцените материал
Добавить комментарий

Капча загружается...