FFMPEG преобразование в MXF
Я должен обернуть видеофайл MPEG2 в контейнер MXF и конвертировать аудио в процессе. У меня работает упаковка MXF, но она не преобразует аудиопоток (который должен быть 16-битным, 48 кГц, линейным PCM).
Вот что я пытаюсь:
ffmpeg -i input.mpg -map 0:0 -map 0:1 -vcodec copy -f mpeg2video -acodec pcm_s16le -ar 48000 -ac 2 output.mxf
Результаты:
ffmpeg version 0.10 Copyright (c) 2000-2012 the FFmpeg developers
built on Jan 30 2012 17:49:23 with gcc 4.2.1 (Apple Inc. build 5666) (dot 3)
configuration: *{snipped}*
runtime-cpudetect
libavutil 51. 34.101 / 51. 34.101
libavcodec 53. 60.100 / 53. 60.100
libavformat 53. 31.100 / 53. 31.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 60.100 / 2. 60.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 6.100 / 0. 6.100
libpostproc 52. 0.100 / 52. 0.100
[mpeg @ 0x10201ae00] max_analyze_duration 5000000 reached at 5000000
Input #0, mpeg, from '/Volumes/Extra/test.mpg':
Duration: 00:00:59.97, start: 0.192911, bitrate: 6513 kb/s
Stream #0:0[0x1c0]: Audio: mp2, 48000 Hz, stereo, s16, 384 kb/s
Stream #0:1[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x576 [SAR 16:15 DAR 4:3], 12000 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Output #0, mpeg2video, to 'video.mxf':
Metadata:
encoder : Lavf53.31.100
Stream #0:0: Video: mpeg2video, yuv420p, 720x576 [SAR 16:15 DAR 4:3], q=2-31, 12000 kb/s, 25 fps, 90k tbn, 25 tbc
Stream mapping:
Stream #0:1 -> #0:0 (copy)
Press [q] to stop, [?] for help
frame= 1500 fps= 0 q=-1.0 Lsize= 43949kB time=00:00:59.96 bitrate=6004.6kbits/s
video:43949kB audio:0kB global headers:0kB muxing overhead 0.000000%
Видео воспроизводится нормально, как MXF, но аудиопотока нет вообще. Любая помощь будет отличной.
2 ответа
В вашей команде видеокодек указан как формат выходного файла. В результате звук удаляется, а выходной файл mpeg
не mxf
,
Преобразование может быть сделано с помощью следующей команды:
ffmpeg -i input.mpg -vcodec mpeg2video -acodec pcm_s16le -ar 48000 -ac 2 output.mxf
Формат выходного файла будет угадан по расширению файла. В качестве альтернативы, вариант -f mxf
может быть использован. Из-за MXF
ограничения формата, может потребоваться указание частоты кадров -r 25
, Опции -vcodec
а также -acodec
может быть опущен до того же результата.
Я думаю, что вы слишком много уточняете. Пытаться:
ffmpeg -i input.mpg -vcodec copy -acodec pcm_s16le -ar 48000 -ac 2 output.mxf
Вам не нужно -map
с простыми файлами ввода и вывода, имеющими только один аудио и один видеопоток. В наши дни ffmpeg также знает, как форматировать файлы MXF, и может догадаться, использовать ли этот формат в зависимости от расширения.
Я подозреваю, что ваша проблема была результатом указания mpeg2video
("сырое видео MPEG-2"), формат, который, по-видимому, не включает аудио.