ffplay - как воспроизвести отдельные видео и аудио файлы

9

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

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 -
Билл Рудольф Ябер Рассел
источник

Ответы:

4

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

Это должен быть формат пикселя. Вы применяете 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 -

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

slhck
источник
slhck, спасибо тебе за это! Хорошо, я получил это: <br/> <br/> Невозможно найти подходящий выходной формат для '-filter: v' -filter: v: Неверный аргумент <br> <br> ?? (то же самое для -vf). Кодек и фильтр отсюда: goo.gl/avE1f - автор написал его и разработал пользовательскую установку ffmpeg (только одна версия, которая работает с этой процедурой и его файлами), которая включает в себя фирменный кодек и фильтр цветового пространства, и, таким образом, может расшифровать это. Пользовательская установка ffmeg должна быть в состоянии прочитать запатентованную последовательность изображений JPEG2000 MJPEG, содержащуюся внутри изображения MFX. Если это поможет отметить :)
Билл Рудольф Ябер Рассел
Ой, я дурачок, я забыл удалить разрывы "\" в командной строке. В любом случае, теперь, когда я ввожу ваше предложение, цифры показывают потоковую передачу, но окно не открывается, а примерно через 20 секунд оно останавливается с: <br /> <br /> Ошибка сегментации: размер 1136.0 = время 138 КБ = битрейт 00: 00: 00.08 = 13445,2 кбит / с
Билл Рудольф Ябер Рассел
КАРТИНА СТОИТ ТЫСЯЧИ СЛОВ - вот это удобное видео с экрана показывает, что работает, а что нет: dl.dropbox.com/u/11290938/screen_grab_ffdcp_750.mov
Билл Рудольф Ябер Рассел
Большое спасибо за видео. Прежде всего, ваша первая команда rawvideo имеет проблему с тем, что вы указываете неправильный размер. Ваш вход имеет 500x270 - или, по крайней мере, это то, что по трубопроводу ffplay. Кроме того , ваш выход имеет в rgb48leкачестве формата пикселя (из - фильтра), но ffplayпредполагает yuv420p, поэтому вам также необходимо указать , что: ffplay -f rawvideo -s 500x270 -pix_fmt rgb48le -. Что касается segfault: не знаю ... может быть, вы могли бы создать и загрузить небольшой тестовый файл куда-нибудь?
Slhck
Ооо, боже мой, тестовые файлы! Действительно, спасибо. Причиной 500x270 является то, что я указал «lores 2», который сокращает его размер в два раза (чтобы поместиться в аккуратный экран для вас :) Так что, кажется, я пропустил один. В качестве справки, этот файл представляет собой самодельный DCP (представьте себе «цифровую печать фильма» для кинотеатра, вот почему СМИ так чертовски странны), 2K в 1998x1080 (1,85 квадратных пикселя). При извлечении последовательности изображений это правильно, и я и вчера отправил пакет, и они проиграли его на DLP в кинотеатре, где он будет показан (на одну ночь на фестивале) - и это было правильно (фу!).
Билл Рудольф Ябер Рассел
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его длина будет меньше длины файла.

LRI
источник
Спасибо за эту информацию. Мне не нужен выходной файл, но об этих ключах действительно полезно знать.
Билл Рудольф Ябер Рассел
3
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), вы можете теоретически просмотреть фильм 2K Качество DCP точно так же, как есть. Ну, кроме каких-либо специальных инструкций, включенных в XML - субтитры или другое программирование. Но в целом. (Кстати, "-ac: 2" микширует с 5.1 до 2.0 - хотя у вас может быть аппаратное обеспечение, которое поддерживает прослушивание 5.1, в этом случае используйте "-c: копия".)

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

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

Cheereo - b worldpoop.com

Билл Рудольф Ябер Рассел
источник
Я получил эту ошибку: Нет такого фильтра: 'xyz2rgb'
Dr.jacky