MyTetra Share
Делитесь знаниями!
Опции кодирования FFMpeg для формата MTS камеры SONY HANDYCAM HDR CX-130 в формат, пригодный для видеоредактирования
Время создания: 17.12.2017 13:14
Текстовые метки: ffmpeg, mts, sony, handycam конвертирование, convert, видео, видеоредактор
Раздел: Компьютер - Linux - Видео в Linux - FFmpeg
Запись: xintrea/mytetra_syncro/master/base/1513505678c3w5v44qdt/text.html на raw.github.com

Здесь даны опции конвертирования исходного видео в формате 1440x1080 50FPS interlace. Информация о файле выглядит так:


$ ffmpeg -i 00014.MTS

Input #0, mpegts, from '00014.MTS':

Duration: 00:00:49.92, start: 1.040000, bitrate: 10492 kb/s

Program 1

Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p(top first), 1440x1080 [SAR 4:3 DAR 16:9], 25 fps, 50 tbr, 90k tbn, 50 tbc

Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 256 kb/s

Stream #0:2[0x1200]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080


Здесь следует обратить внимание, что FPS написан как 25, но tbc установлена в 50, то есть полукадры interlaced режима следуют с частотой 50Гц.


Рабочие параметры конвертирования следующие:


ffmpeg -threads 2 \

-i input.MTS \

-vf yadif \

-vf scale=960:720:flags=bicubic \

-r 25 \

-vsync 1 \

-y \

-codec:v mjpeg \

-q:v 1 \

-g 0 \

-codec:a adpcm_ima_wav \

output.avi


Результирующее видео будет иметь:


  • прогрессивную развертку (т. к. применяется фильтр yadif)
  • отмасштабировано в размер 960x720
  • частота кадров 25FPS
  • видеокодек MJPEG
  • аудиокодек ADPCM WAV


Здесь есть два важных момента:


1. Вместо кодека mjpeg, который представляет собой, по сути, поток отдельных кадров в формате JPEG, а посему не является кодеком без потерь, можно использовать кодек rawvideo который представляет каждый кадр в явном виде без потери качества (формат размещения пикселей yuv420p по умолчанию). Но размер выходного файла будет в разы больше.


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


$ ffmpeg -codecs | grep -i wav

DEVI.S alias_pix Alias/Wavefront PIX image

D.VI.. targa_y216 Pinnacle TARGA CineWave YUV16

DEA.L. adpcm_ima_wav ADPCM IMA WAV

DEA.L. adpcm_swf ADPCM Shockwave Flash

D.A... wavesynth Wave synthesis pseudo-codec

DEA.LS wavpack WavPack (encoders: wavpack libwavpack )


Хотелось бы использовать свободный WavPack, но непонятно как он себя ведет, так как он умеет работать и без потерь качества и с потерями, а в документации не написано как выбирать режим, есть только уровень сжатия. Поэтому из всего этого списка единственный кодек, который понятно как работает - это адаптивный PCM кодек ADPCM IMA WAV. Да, плохо что он адаптивный, но дельта на крутых фронтах у него считается по специальной таблице, а не напрямую, так что качество сильно не страдает.


Да, если в качестве имени кодека указать flac, то звук закодируется, но будет явная рассинхронизация видео и звука. Почему так происходит - непонятно. Единственный вменяемый звуковой кодек, с которым нету рассинхрона звука и видео - это adpcm_ima_wav, проверено опытным путем.




Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования