8

Поэтому я могу перекодировать отдельные видео и аудио файлы в один файл фильма, например, так:

ffmpeg -ss 0 -lowres 0 -r 24 -i dcp/picture.mxf -vf "xyz2rgb" -i mov/sound.wav -ac 2 -ab 256k -vb 3000k -t 10 -y mov/movie.mp4

И посмотреть и услышать получившийся фильм вот так:

ffplay -ss 0 -lowres 1 -vf "xyz2rgb" mov/movie.mp4

Тем не менее, чтобы избежать необходимости перекодировать фильм и звук в один файл, прежде чем его можно будет увидеть, я хотел бы просто воспроизвести два отдельных файла вместе. Насколько я знаю, ffplay не позволяет объединять два разных файла (верно?).

Читая эти форумы, кажется, что вы можете передать вывод ffmpeg в ffplay. Следующее настолько близко, насколько я понял. Это не так близко. :( Видеоинформация явно передается, но это зеленый "снег" в правильном размере кадра, с намеками на фактические образы, танцующие внутри ужасного зеленого снега. Таким образом, я знаю, что что-то из фактических данных изображения переносится, но не отображается правильно. Совсем.

И нет звука играет. Звук не переносится (я не думаю.) Сейчас... Я застрял. Следующее предлагает то, что я пытаюсь сделать, но это не работает:

ffmpeg -ss 0 -lowres 0 -r 24 -i dcp/picture.mxf -vf "xyz2rgb" -i mov/sound.wav -f rawvideo - | ffplay -f rawvideo -vf "xyz2rgb" -s 1998x1080 -

3 ответа3

3

Это не перекодирует потоки:

ffmpeg -i video.mkv -i audio.mkv -c copy -map 0:0 -map 1:1 output.mkv

-map 1:1 = второй файл, поток 1 (обычно аудио). -c copy = -c:v copy -c:a copy . По умолчанию файл мультиплексирования имеет длину, равную более длинному файлу, но -shortest сделает его длиннее, чем файл короче.

3

Видеоинформация явно передается, но это зеленый "снег" в правильном размере кадра, с намеками на фактические образы, танцующие внутри ужасного зеленого снега.

Это должен быть формат пикселя. Вы применяете фильтр xyz2rgb который преобразует цветовое пространство DCP в RGB, а затем передаете необработанное видео в ffplay . Здесь вы претендуете на xyz2rgb фильтр снова, что , вероятно , приводит к distortiions, так как FFmpeg не имеет ни малейшего представления о том , как кодируется сырой видео. Он будет делать с видео все, что угодно, даже дважды преобразуя цветовое пространство.


У меня были хорошие результаты, передавая формат Matroska в ffplay вместо rawvideo , что также дает вам возможность декодировать аудио (см. Ниже). Формат Matroska может содержать любой кодек.

Обратите внимание, что порядок параметров имеет значение в FFmpeg, и вам, вероятно, следует использовать более свежую версию, так как она более строга в отношении того, где вы помещаете параметры:

  • Глобальные опции, такие как -y идут первыми.
  • Затем укажите параметры для чтения входных файлов - -r 24 задает частоту кадров для файла picture.mxf .
  • Затем укажите все входные файлы.
  • Затем идут параметры кодека, такие как видеофильтры, битрейт видео и т.д.

В вашей ситуации имеет смысл просто скопировать аудиопоток, поскольку нам не нужно перекодировать его. Чтобы применить фильтр, видео необходимо перекодировать.

Нечто подобное должно делать. Обратите внимание, как мы явно устанавливаем формат вывода как matroska и позволяем ffplay разобраться:

ffmpeg -r 24 -i dcp/picture.mxf -i mov/sound.wav \
-filter:v "xyz2rgb" -b:v 3000k -c:a copy -t 10 -f matroska - | \
ffplay -

Я использовал (IMO менее неоднозначный) синтаксис для таких опций, как -filter:v вместо -vf , -b:v вместо -vb и -c:a вместо -acodec .

Если этот формат не работает для вас, попробуйте AVI:

ffmpeg -i picture.mxf -i sound.wav -f avi - | ffplay -

Это сработало для меня без проблем, и даже не потребовало от меня использования фильтра, который вам нужен. Аудио работало также.

2
ffmpeg -lowres 2 -ss 0 -r24 -i MOVIE.MOV -ss 0 -i AUDIO.WAV -vf xyz2rgb -ac: 2 -c:v mpeg2video -f avi - | ffplay -

Для моих целей это позволяет быстро просмотреть содержимое DCP (Digital Cinema Package), которое вы можете создать с помощью инструментов с открытым исходным кодом . DCP использует цветовое пространство xyz, поэтому вам необходимо установить видеофильтр xyz, иначе вы не сможете использовать его в строке выше. (Ничего страшного, он будет выглядеть сильно оранжевым, вы не увидите настоящие цвета.)

Я добавил кодек mpeg2video b/c, хотя он и снижает качество, но и низкую скорость и немного буферизирует, поэтому на моей машине он работает более плавно. (Кроме того, по какой-то причине, без предварительного перекодирования, я получаю только стоп-кадр из последовательности jpeg2000 mjpeg, подаваемой со скоростью 125 Мбит / с от MXF, если только я не запускаю «- ss 0», то есть в самом начале файл.) На машине ОЧЕНЬ БЫСТРО, без указания кодека (удаление «-c:v mpeg2video»), полноразмерного («-lores 0») и начиная с 0 (-ss 0), вы можете теоретически точно проверить DCP качества кино 2K как есть. Ну, кроме каких-либо специальных инструкций, включенных в XML - субтитры или другое программирование. Но в целом. (Кстати, «-ac: 2» микширует с 5.1 до 2.0 - хотя у вас может быть аппаратное обеспечение, которое поддерживает прослушивание 5.1, в этом случае используйте «-c: копия».)

Благодаря Matthias в Бель-Нут и slhck выше терпеливейше ходить со мной через это. Спасибо!!!! Это довольно полезно. И на самом деле, спас меня от потенциально неловкого показа фильма в Аэро театре в воскресенье вечером. Моя нумерация последовательности изображений была не в порядке - нашел это с этим и исправил!

Ух ты, все это только для одной командной строки, кто бы знал;)

Cheereo - b worldpoop.com

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