Я работал в AS3 для потоковой передачи видео 1080P на YouTube, и видео начинает загружаться, и почти 4-5 минут видео было успешно загружено, и после этого YouTube показывает, что поток был завершен, но FFMPEG никогда не попадет "Выход "или любой другой метод, даже после ожидания в течение следующих 10 минут.
Ниже приведен метод, который я использую.
public var _nativeProcessStartupInfo:NativeProcessStartupInfo;
public var _processArgs:Vector.<String>;
public var _process:NativeProcess;
protected function StartVideo_clickHandler(event:MouseEvent):void
{
_nativeProcessStartupInfo.executable = File.applicationStorageDirectory.resolvePath("ffmpeg.exe Path");
_processArgs.push('-re');
_processArgs.push('-i');
_processArgs.push(VideoPath);
_processArgs.push('-vcodec');
_processArgs.push('copy');
_processArgs.push('-acodec');
_processArgs.push('copy');
_processArgs.push('-maxrate');
_processArgs.push('4500k');
_processArgs.push('-bufsize');
_processArgs.push('9000k');
_processArgs.push('-pix_fmt');
_processArgs.push('yuv422p');
_processArgs.push('-preset');
_processArgs.push('fast');
_processArgs.push('-ac');
_processArgs.push('2');
_processArgs.push('-r');
_processArgs.push('30');
_processArgs.push('-g');
_processArgs.push('60');
_processArgs.push('-ar');
_processArgs.push('44100');
_processArgs.push('-f');
_processArgs.push('flv');
_processArgs.push(streamurl+'/'+streamname);
_nativeProcessStartupInfo.arguments = _processArgs;
_process = new NativeProcess();
_process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData);
_process.addEventListener(ProgressEvent.STANDARD_ERROR_DATA, progress);
_process.addEventListener(NativeProcessExitEvent.EXIT, onExit);
_process.addEventListener(IOErrorEvent.STANDARD_OUTPUT_IO_ERROR, onIOErrorNativeProcess);
_process.addEventListener(IOErrorEvent.STANDARD_ERROR_IO_ERROR, onIOErrorNativeProcess);
_process.start(_nativeProcessStartupInfo);
}
public function onIOErrorNativeProcess(event:IOErrorEvent):void
{
trace(event.toString());
}
public function onOutputData(event:ProgressEvent):void
{
trace("Got: ", _process.standardOutput.readUTFBytes(_process.standardOutput.bytesAvailable));
}
public function progress(e:ProgressEvent):void
{
trace(e);
}
public function onExit(e:NativeProcessExitEvent):void
{
trace(e);
}
Я также пытался использовать видео 720P, изменив битрейт с 4500kдо 2500k, что соответствует YouTube и работает нормально, но с 1080P что-то не получилось, как ожидалось.
Вот детали видео: Разрешение: 1920 * 1080 Скорость передачи данных: 3220 Кбит / с FrameRate: 20
Заранее спасибо