3

我尝试了一堆使用 FFProbe 获取视频编解码器的不同示例,包括这个,除了偶尔的[/STREAM].

这就是我目前正在尝试的

$codec = exec("ffprobe -v error -show_entries -show_streams stream=codec_name {$input['filename']}");

这个也试过...

$codec = exec("ffprobe -v quiet -print_format json -show_format -show_streams {$input['filename']}");

我知道视频很好,它正在 CLI 上运行,因为当我使用以下内容获取持续时间时,我得到了预期的结果

$duration = exec("ffprobe {$input['filename']} -show_format 2>&1 | sed -n 's/duration=//p'");

有任何想法吗?

4

2 回答 2

8

弄清楚了。

$codec = exec("ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 {$input['filename']}");

echo $codec;

生产

h264

于 2015-11-13T19:00:40.083 回答
1

timgavin的一个很好的回答,谢谢!

我的要求意味着我需要一个不同的应用程序,我使用了命令提示符:

set probe="<YOUR PATH>/ffmpeg/bin/ffprobe.exe"
%probe% -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 input.avi

在这种情况下,返回:

mpeg4

不确定这是否足以满足我的要求。从我目前的研究来看,HTML5 视频标签是一个记录不充分的标准?

感谢@llogan 的评论和更多的研究,我决定在视频标签上发布我发现的内容:

ffmpeg/bin/ffmpeg.exe" -i input.avi -b 1500k -vcodec libx264 "output.mp4"

或者

ffmpeg/bin/ffmpeg.exe -i input.mov -vcodec h264 -acodec aac -strict -2 output.mp4

当然,以下:

h264

视频编解码器是唯一受支持的 .mp4 Mime 文件类型的编解码器。本指南可能有用:https ://trac.ffmpeg.org/wiki/Encode/H.264

据我所知,如果正在使用的浏览器是最新的,它应该支持这些视频 Mime 类型!

感谢@llogan 的建议,我们不再需要:

-strict -2

但使用:

-movflags +faststart

由于劳埃德的帮助和研究,我现在拥有的是:

string ffmpeg = "Utils/ffmpeg/ffmpeg.exe";
string encode = "-y -i \"" + InputFile + "\" -movflags +faststart -vcodec libx264 -crf 22 -acodec aac -b:a 192k \"" + OutputFile + "\"";

其中:OutputFile是 OutputFile.mp4

截至:06.12.2020,这是 HTML5 视频标签的良好 ffmpeg 编码。

于 2020-12-05T01:14:54.457 回答