Мне поручено перекодировать кучу видео файлов GoToMeeting каждый вечер. Как только видео было перекодировано, оно будет загружено на веб-сайт. Однако, прежде чем я зашел слишком далеко в проект, я хотел выяснить, возможно ли это.Синхронные команды C# при запуске внешних программ
Мой текущий образец сценария - это простой командный файл, в котором я могу перетащить несколько файлов в пакетный файл. Он перекодирует первый файл, отображает вывод и затем переходит ко второму файлу для перекодирования. Это ожидаемое поведение, которое я ищу.
@echo off
C:\g2mtranscoder.exe source=%~1
echo %~1 has completed.
C:\g2mtranscoder.exe source=%~2
echo %~2 has completed.
C:\g2mtranscoder.exe source=%~3
echo %~3 has completed.
C:\g2mtranscoder.exe source=%~4
echo %~4 has completed.
pause
Мой вопрос заключается в том, что если в C# (будет служба Windows, в конечном счете), это было бы так просто, как вызов внешней программы g2mtranscoder.exe
сделать транскодирование, а затем положить мой сценарий загрузки сразу после этого? Очевидно, что я бы не захотел загружать видео, которое в настоящее время перекодировано, и я не хочу, чтобы видео было загружено, не будучи предварительно перекодированным.
Мое подзапрос будет помещать это в цикл (для каждого файла в каталоге), вызывают какие-либо проблемы, если содержимое каталога всегда является перекодированным видео в ожидании? Если в цикле попытаться выполнить цикл и начать транскодирование всех файлов в каталоге асинхронно или было бы более синхронным? Я хотел бы избежать цикла, выполняющегося асинхронно, поскольку он может перегружать машину, вызывая артефакты или проблемы синхронизации с синхронизацией аудио/видео. Самое главное, видео в середине перекодирования или нетранзированного видео не может быть загружено.
Любые предложения по кодированию для этого были бы замечательными, но я действительно ищу больше понимания того, как C# работает с выполнением кода с внешней программой, вызванной в середине исполняемого кода C#.
Я больше человек из Руби/Рельсов и Linux и не имею большого опыта работы на C#. Я знаю достаточно, чтобы быть опасным, но просто хочу убедиться, что то, что я ищу, возможно.