2014-03-28 4 views
0

Я пробирался через Интернет, чтобы найти хорошее прохождение FFMPeg и его нюансы.FFMPeg 2 pass C#

У меня сейчас есть рабочая настройка. Это двухпроходная кодировка. Если я использую CMD окно и используйте следующие аргументы:

FFmpeg -ic: \ TEMP \ 175663.lbl.mp4.mps -vcodec mpeg4 -b: v 1300K -s 640x360 -aspect 16: 9 - проход 1 -r 29.970 -an -f rawvideo -y NUL & & ffmpeg -ic: \ temp \ 175663.lbl.mp4.mps -vcodec mpeg4 -b: v 1300k -s 640x360 -спектр 16: 9 -pass 2 -r 29,970 -acodec libmp3lame -ab 128K -ar 48000 C: \ Temp \ кодируются \ 175663.NTP.mp4

я получаю файл журнала в каталоге ffmpeg.exe. Который я считаю хорошим досье. Я также получаю действительный хороший файл mp4. Однако я не знаю, действительно ли файл журнала используется на pass2. Если я запускаю только второй проход (все после & &) в CMD-окне все отдельно. Я получаю действительный файл mp4. Почему нет ошибки? Это заставляет меня подозревать, что первоначальный проход вообще не используется для второго прохода.

Во-вторых, как я могу программно удалить журнал pass1? Есть ли соглашение об именах, в которое я могу войти? В конце концов это приложение будет работать на нескольких потоках на тех же/других машинах. Поэтому я не могу просто удалить * .log из папки ffmpeg. Есть ли способ назвать файлы по мере их создания?

Наконец, я, похоже, не могу запустить новый процесс на C# с приведенным выше аргументом. Если я опускаю ffmpeg (потому что процесс запускает сам ffmpeg), я получаю сообщение об ошибке & &. Я не думаю, что ему нравится делать два прохода. Если я делаю один проход за раз, я не получаю файл журнала, даже пытающийся использовать его на втором проходе.

Любая информация была бы потрясающей. Спасибо за ваше время заранее!

ответ

0

Прежде всего, если вы спрашиваете о правильных переключателях cmdline для ffmpeg, тогда это, вероятно, не является правильным вопросом для StackOverflow, и он принадлежит SuperUser.

Во-вторых, да, журнал используется во время второго прохода. Роль журнала заключается в сохранении требований к битрейту в каждом кадре, поэтому общая пропускная способность может быть лучше использована, если вы укажете целевой битрейт (который вы сделали с -b: v); в качестве побочного примечания, если вы используете постоянный квантователь (также называемый «постоянное качество»), то он не будет использоваться, но с постоянным квантизатором вам не потребуется многократная кодировка.

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

+0

Благодарим за помощь. Я просто хотел убедиться, что журнал использовался на этапе 2. У меня не было никакого способа проверить. У меня есть довольно много файлов для кодирования, и я бы не хотел снова возвращаться к ним. Еще раз спасибо! – zerosandones