Я хотел бы без потерь конвертировать файл .ts в более удобный формат файла, например .mpeg . К сожалению, в преобразованном файле отсутствует звук. По крайней мере, я ничего не слышу при воспроизведении в VLC (хотя Видео работает), а некоторые другие медиаплееры (Аудитория) вообще не открывают его. Можете ли вы сказать мне, почему FFmpeg не удалось, и как это сделать правильно?

Спасибо!

Команда, которую я использовал:

privat@manuel-Inspiron-3721:~/Downloads$ ffmpeg -i hls-720p.ts -codec copy hls-720p.mpeg

Выход FFmpegs:

ffmpeg version 2.8.10-0ubuntu0.16.04.1 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
  configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mpegts, from 'hls-720p.ts':
  Duration: 00:06:31.86, start: 1.400000, bitrate: 1432 kb/s
  Program 1 
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
    Stream #0:0[0x100]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x101]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp, 139 kb/s
[mpeg @ 0x1c7b680] VBV buffer size not set, using default size of 130KB
If you want the mpeg file to be compliant to some specification
Like DVD, VCD or others, make sure you set the correct buffer size
Output #0, mpeg, to 'hls-720p.mpeg':
  Metadata:
    encoder         : Lavf56.40.101
    Stream #0:0: Video: h264 ([27][0][0][0] / 0x001B), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 25 fps, 25 tbr, 90k tbn, 25 tbc
    Stream #0:1: Audio: aac ([15][0][0][0] / 0x000F), 44100 Hz, stereo, 139 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 9796 fps=0.0 q=-1.0 Lsize=   62752kB time=00:06:31.86 bitrate=1311.8kbits/s    
video:57506kB audio:4853kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.631245%

Информация о кодеках VLC

Оригинальный .ts : Оригинальный файл .ts

Преобразованный .mpeg -file: Преобразованный файл .mpeg

1 ответ1

2

Если вы используете -c copy вы не кодируете видео, а просто меняете "конверт", который не поддерживает ни h264, ни aac.

Файлы .mpeg должны содержать видео mpeg1 o mpeg2 и аудио уровня mpeg1 1,2 или 3. H264 - это mpeg4, а aac - расширение mpeg2.

VLC может воспроизводиться, поскольку он может воспроизводить практически все, но ваш "закодированный" вывод теперь менее совместим, чем когда-либо.

Попробуйте закодировать его в .mp4, чтобы сделать его более совместимым. Я думаю, что вы можете сохранить флаг копирования в этом случае.

Примечание: .mpeg - это очень старый формат, и вывод, удаляющий флаг копирования, будет производить видео низкого качества.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .