【发布时间】:2019-04-11 11:40:47
【问题描述】:
我一直在使用 AS3 在 YouTube 上流式传输 1080P 视频,视频开始上传,近 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 数据速率:3220kbps 帧率:20
提前致谢
【问题讨论】:
-
您使用的是
-vcodec copy -acodec copy,所以从-maxrate到-ar的所有内容都被忽略了,但我不知道为什么它没有退出。这可能是 ffmpeg 或您的代码或两者都有问题。因此,您应该手动运行相同的 ffmpeg 命令,无需编写脚本。它仍然永远不会退出吗?另外,显示来自 ffmpeg 命令的日志。 -
@Nayan,如果您使用命令行窗口而不是 AS3 来运行 FFmpeg,仍然没有关于 “它仍然永远不会退出” 的响应吗?或者问题现在解决了吗?
-
对不起@llogan & @VC。一个用于替代回复,但问题不在于由于“进度”功能而发生的 ffmpeg 部分。我昨晚才纠正了这个问题
标签: actionscript-3 ffmpeg youtube encode