这是我的代码使用ffmpeg我想有视频缩略图但我不熟悉ffmpeg可以有人知道我得到的错误.
[swscaler @ 0x7ff8da028c00] deprecated pixel format used, make sure you did set range correctly
Output #0, mjpeg, to 'image.jpg':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
encoder : Lavf56.36.100
Stream #0:0(und): Video: mjpeg, yuvj420p(pc), 320x240 [SAR 4:3 DAR 16:9], q=2-31, 200 kb/s, 1 fps, 1 tbn, 1 tbc (default)
Metadata:
creation_time : 2016-11-06 09:40:22
handler_name : ISO Media file produced by Google Inc.
encoder : Lavc56.41.100 mjpeg
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> mjpeg …Run Code Online (Sandbox Code Playgroud) 我在处理过程中遇到了问题。我使用10美元的数字托管套餐中的真实联合服务器,并使用Amazon s3的云服务。问题是上传视频时,无论视频大小如何,无论其大小是 1 MB 还是 2 Giga。上传过程结束后,处理过程开始上传,没有问题但是当处理过程需要很长时间以至于我无法完成时,解决方案是什么,是我有问题还是这个过程普通的?我使用 laravel-ffmpeg 并通过 laravel 队列将视频切割成多种质量,我将在下面将代码附加给您。
public function handle()
{
//180p
$lowBitrate1 = (new X264('aac'))->setKiloBitrate(613);
//270p
$lowBitrate2 = (new X264('aac'))->setKiloBitrate(906);
//360p
$midBitrate1 = (new X264('aac'))->setKiloBitrate(1687);
//540p
$midBitrate2 = (new X264('aac'))->setKiloBitrate(2227);
//720p
$highBitrate1 = (new X264('aac'))->setKiloBitrate(4300);
//1080
$highBitrate2 = (new X264('aac'))->setKiloBitrate(7917);
FFMpeg::fromDisk('s3')
->open($this->movie->path)
->exportForHLS()
->onProgress(function ($percent) {
$this->movie->update([
'percent' => $percent
]);
})
->setSegmentLength(10)// optional
->addFormat($lowBitrate1)
->addFormat($lowBitrate2)
->addFormat($midBitrate1)
->addFormat($midBitrate2)
->addFormat($highBitrate1)
->addFormat($highBitrate2)
->toDisk('s3')
->save("public/Movies/{$this->movie->id}/{$this->movie->id}.m3u8");
}//end of handle
Run Code Online (Sandbox Code Playgroud) 我对 ffmpeg 还很陌生,但是在对这个问题进行了几天的搜索之后,我已经完全碰壁了。任何帮助,将不胜感激。
我的用例:我们的客户想要上传多个地区的视频。每个视频都是相同的格式,1920x1080,mp4。对于每个区域,他们都希望在视频结尾添加不同的图像,持续几秒钟。此图像包含他们的徽标、一些附加信息和可变代码。他们将在上传的视频旁边输入此代码。图像保持不变,因此已经存在于服务器上。所以基本上,我有一个输入视频、一个图像视频和一个小代码。我需要将此代码添加到图像的视频中(在预定义的位置),然后我需要将生成的视频添加到输入视频的末尾。完成后,我只需要以 1920x1080 和 1024x576 输出视频。
我已经尝试了几件事,但是连接步骤总是因操作视频而失败。
尝试 1
在我的第一次尝试中,我使用 ffmpeg 从图像创建视频,并在指定区域添加文本。
ffmpeg -y -f lavfi -i image.png -r 30 -t 10 -pix_fmt yuv420p -map 0:v -vf drawtext="fontfile=HelveticaNeue.dfont: text='GLNS/TEST/1234b': fontcolor=black: fontsize=20: box=1: boxcolor=white: boxborderw=7: x=179: y=805" imageVideo.mp4
Run Code Online (Sandbox Code Playgroud)
此命令创建一个大小正确的 .mp4 视频,持续时间为 10 秒,并在正确的位置添加文本“GLNS/TEST/1234b”。
接下来,我使用以下命令连接两个视频。两者具有相同的分辨率和编解码器。
ffmpeg -f concat -safe 0 -i config.txt -vf scale=1920:1080 outputHD.mp4 -vf scale=1024:576 outputSD.mp4
Run Code Online (Sandbox Code Playgroud)
config.txt包含以下内容:
file my_input_file.mp4
file ImageVideo.mp4
Run Code Online (Sandbox Code Playgroud)
这种串联适用于常规视频。但是,当我将它与 ImageVideo.mp4(由第一个命令创建的那个)一起使用时,我收到以下错误日志:
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f86dc924600] Auto-inserting h264_mp4toannexb bitstream filtereed=0.509x
[aac @ 0x7f86dc019e00] Number of bands (31) …Run Code Online (Sandbox Code Playgroud) 我是php的新手.我在我的本地iis中安装了ffmpeg ..是否可以为flv文件生成缩略图图像.请帮忙..
我正在尝试在服务器(CentOS)上安装ffmpeg-php但在"make"命令之后我收到一个错误:
from /usr/local/src/ffmpeg-php-0.6.0/ffmpeg-php.c:40:
/usr/include/bits/stat.h:91: error: field 'st_atim' has incomplete type
/usr/include/bits/stat.h:92: error: field 'st_mtim' has incomplete type
/usr/include/bits/stat.h:93: error: field 'st_ctim' has incomplete type
In file included from /usr/local/include/php/main/php_streams.h:28,
from /usr/local/include/php/main/php.h:400,
from /usr/local/src/ffmpeg-php-0.6.0/ffmpeg-php.c:40:
/usr/include/sys/stat.h:367: error: array type has incomplete element type
/usr/include/sys/stat.h:374: error: array type has incomplete element type
In file included from /usr/local/include/php/main/php.h:406,
from /usr/local/src/ffmpeg-php-0.6.0/ffmpeg-php.c:40:
/usr/local/include/php/TSRM/tsrm_virtual_cwd.h:218: error: expected specifier-qualifier-list before 'time_t'
/usr/local/include/php/TSRM/tsrm_virtual_cwd.h:246: error: expected declaration specifiers or '...' before 'time_t'
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg-php.c: In function 'zm_startup_ffmpeg':
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg-php.c:94: warning: implicit declaration of …Run Code Online (Sandbox Code Playgroud) 我正在使用laravel 4.2.
我正在开发一个项目,用户可以上传视频,我需要对其进行转码,以便可以在所有类型的设备上播放.
对于转码我在我的项目中从git hub添加了php-ffmpeg包.根据我从http://ffmpeg.zeranoe.com/builds下载了ffmpeg软件包的说明,并将ffmpeg.exe的路径设置为环境变量Path.
现在,我尝试使用以下代码对上传的视频进行转码:
$ffmpeg = FFMpeg\FFMpeg::create();
$video = $ffmpeg->open($video_path);
$format = new FFMpeg\Format\Video\X264();
$format->setKiloBitrate(1000)
->setAudioChannels(2)
->setAudioKiloBitrate(256);
$video->save($format, public_path().$path.$save_filename);
Run Code Online (Sandbox Code Playgroud)
但它给出了如下错误:
[ERROR] ffmpeg version N-70767-gd24af70 Copyright (c) 2000-2015 the FFmpeg developers
[ERROR] built with gcc 4.9.2 (GCC)
[ERROR] configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 …Run Code Online (Sandbox Code Playgroud) 所以我正在尝试设置自适应流,我认为已经解决了 80-90% 的问题。现在,我提取源视频,将其转码为 5 种分辨率,每种分辨率具有 3 种比特率(低、中、高),然后将所有这些视频分成 5 秒的块,以便用户始终能够获得最佳观看效果。现在我需要生成/创建我的 MPD 清单文件,但我很难弄清楚如何生成/创建我的 MPD 清单文件。几乎每个人都说要使用 MP4Box,但他们的许可证对于我的项目来说限制太多。
当我分割视频时,是否可以使用 FFMPEG 生成 MPD 文件?或者也许生成一个 HLS,然后我可以将其转换为 MPD 清单?任何信息都会很棒,这是我当前的 FFMPEG 命令(工作)
请注意,$变量是 bash 脚本的输入,用于设置输入文件、比特率和比例。
/usr/bin/ffmpeg \
-re \
-i $1 \
-an \
-c:v libx264 \
-b:v $7 \
-b:a 196k \
-strict -2 \
-movflags faststart \
-pix_fmt yuv420p \
-vf "scale='$4:trunc(ow/a/2)*2'" \
-flags -global_header \
-map 0 \
-f segment \
-segment_time 5 \
-segment_list test.m3u8 \
-segment_format mpegts \
$2%05d.mp4
Run Code Online (Sandbox Code Playgroud) 当我尝试使用php-ffmpeg包装器和ffprobe获取视频的持续时间时,我得到一个巨大的对象而不仅仅是持续时间.
$ffprobe = FFMpeg\FFProbe::create();
$ffprobe->format($this->videoFile)
->get('duration');
Run Code Online (Sandbox Code Playgroud)
$ this-> videoFile是/home/admin/pat./5422346433.mp4
所以它指向正确的文件,持续时间列在巨大的对象中
[[-show_format-/home/admin/web/admin.simplewebevents.com/public_html/cron/649652027.mp4][1]] => Array
(
[0] => FFMpeg\FFProbe\DataMapping\Format Object
(
[properties:FFMpeg\FFProbe\DataMapping\AbstractData:private] => Array
(
[filename] => /home/admin/web/admin.simplewebevents.com/public_html/cron/649652027.mp4
[nb_streams] => 2
[nb_programs] => 0
[format_name] => mov,mp4,m4a,3gp,3g2,mj2
[format_long_name] => QuickTime / MOV
[start_time] => 0.000000
[duration] => 5736.833333
[size] => 668381267
[bit_rate] => 932056
[probe_score] => 100
[tags] => Array
(
[major_brand] => mp42
[minor_version] => 0
[compatible_brands] => mp42mp41isomavc1
[creation_time] => 2016-12-04 18:25:58
)
)
)
[1] =>
)
)
Run Code Online (Sandbox Code Playgroud)
但显然 …
我正在使用FFMPEG来销售2个视频以及两者之间的淡入淡出效果。控制台输出显示以下错误:
Filter setpts has an unconnected output
Run Code Online (Sandbox Code Playgroud)
我已经查找了可能出问题的地方,但是找不到与我的错误相关的任何信息来帮助我。
ffmpeg -i ./temp/1900f421192fcdaf.ts -i ./temp/35c16f3debf9e730.ts -an \
-filter_complex \
[0:v]trim=start=0:end=9,setpts=PTS-STARTPTS[firstclip];\
[1:v]trim=start=1,setpts=PTS-STARTPTS[secondclip];\
[0:v]trim=start=9:end=10,setpts=PTS-STARTPTS[fadeoutsrc];\
[1:v]trim=start=0:end=1,setpts=PTS-STARTPTS[fadeinsrc];\
[fadeinsrc]format=pix_fmts=yuva420p,fade=t=in:st=0:d=1:alpha=1[fadein];\
[fadeoutsrc]format=pix_fmts=yuva420p,fade=t=out:st=0:d=1:alpha=1[fadeout];\
[fadein]fifo[fadeinfifo];\
[fadeout]fifo[fadeoutfifo];\
[fadeoutfifo][fadeinfifo]overlay[crossfade];\
[firstclip][crossfade][secondclip]concat=n=3[output]\
-map ./rendered/2017-11-16_11:59:41.mp4
Run Code Online (Sandbox Code Playgroud)
预先感谢您对我的帮助。
编辑//控制台输出:
[root@webcasting2 videocuttool]# ffmpeg -i ./temp/1900f421192fcdaf.ts -i ./temp/35c16f3debf9e730.ts -an \
> -filter_complex \
> [0:v]trim=start=0:end=9,setpts=PTS-STARTPTS[firstclip];\
> [1:v]trim=start=1,setpts=PTS-STARTPTS[secondclip];\
> [0:v]trim=start=9:end=10,setpts=PTS-STARTPTS[fadeoutsrc];\
> [1:v]trim=start=0:end=1,setpts=PTS-STARTPTS[fadeinsrc];\
> [fadeinsrc]format=pix_fmts=yuva420p,fade=t=in:st=0:d=1:alpha=1[fadein];\
> [fadeoutsrc]format=pix_fmts=yuva420p,fade=t=out:st=0:d=1:alpha=1[fadeout];\
> [fadein]fifo[fadeinfifo];\
> [fadeout]fifo[fadeoutfifo];\
> [fadeoutfifo][fadeinfifo]overlay[crossfade];\
> [firstclip][crossfade][secondclip]concat=n=3[output]\
> -map ./rendered/2017-11-16_11:59:41.mp4
ffmpeg version 3.4-static http://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 6.4.0 …Run Code Online (Sandbox Code Playgroud) 当我尝试使用 Ajax 和 Laravel 上传大于 15MB 的视频时,出现此错误:
PHP 致命错误:第 140 行 C:\xampp\htdocs\vendor\symfony\process\Pipes\WindowsPipes.php 中超出了 60 秒的最大执行时间
我使用Ffmpeg和Symfony/process
symfony windowsPipes.phpLaravel 中的错误。
什么是问题?
我第一次尝试从视频文件创建缩略图预览,上传700mb .avi电影与209747帧.现在我正在尝试创建1个缩略图,但需要4.7秒,因为我设置了帧10000,如果我将其设置为1000,则生成缩略图只需0.4秒.
如何在不到一秒的时间内在不同的帧中生成5-10个缩略图?它甚至可能吗?使用exec(ffmpeg)或php-ffmpeg是不同的?在机器2x Xeon L5420上使用0.6-svn ffmpeg,Debian 6.0.7,php 5.4.14仍然很慢......有什么想法吗?怎么用ffmpeg +视频的时间而不是帧?
$movie = 'ai.avi';
$thumbnail = 'thumbnail.jpg';
$mov = new ffmpeg_movie($movie);
$frame = 10000;
$frame = $mov->getFrame($frame);
if($frame) {
$gd_image = $frame->toGDImage();
if($gd_image) {
imagejpeg($gd_image, $thumbnail, 100);
imagedestroy($gd_image);
}
}
echo '<img src="'.$thumbnail.'" ><br />';
Run Code Online (Sandbox Code Playgroud) 嘿,我已经在我的 windows7 64 位 wamp 服务器上成功下载并安装了 composer,我需要通过 composer 安装 php_ffmpeg。我不知道我已经阅读了他们的文档,但不是很清楚?请让我知道下一步。
我从这个链接获得了关于作曲家和 php_ffmpeg 的详细信息
https://github.com/PHP-FFMpeg/PHP-FFMpeg
Run Code Online (Sandbox Code Playgroud)
这是我通过 cmd 更新、要求和安装 composer 时得到的代码
C:\Windows\system32>composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files
C:\Windows\system32>composer require php-ffmpeg/php-ffmpeg
Using version ^0.6.0 for php-ffmpeg/php-ffmpeg
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files
C:\Windows\system32>composer install
Loading composer repositories with package information
Installing dependencies (including …Run Code Online (Sandbox Code Playgroud) 我基本上已经厌倦了自己搜索谷歌并试图解决我在使用PHP 5.4.20和Apache v2.2.25(cgi-fcgi)在CentOS/6.4-64上编译ffmpeg-php时遇到的错误.
我在尝试编译时最终得到以下内容.有没有人对如何解决/解决这个问题有任何想法?
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:311: error: âlist_entryâ undeclared (first use in this function)
Run Code Online (Sandbox Code Playgroud)
/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:311:错误:(每个未声明的标识符仅报告一次/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c: 311:错误:对于它出现的每个函数.)/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:311:错误:未解决(首次在此函数中使用)/ usr/local/src /ffmpeg-php-0.6.0/ffmpeg_movie.c:346:错误:预期â在ânew_leâ/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:356之前:错误:ânew_leâunclaclared(first在这个函数中使用)/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:在函数âzim_ffmpeg_movie_getCommentâ:/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:531:警告:âcommentâ不推荐使用(在/ usr/local/include/l ibavformat/avformat.h:760中声明)/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:531:警告:âcommentâ不推荐使用(声明在/ usr/local/include/l ibavformat/avformat.h:760)/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:在函数âzim_ffmpeg_movie_getTitle中:/ usr/local /src/ffmpeg-php-0.6.0/ffmpeg_movie.c:546:警告:不推荐使用âtitle(在/ usr/local/include/lib avformat/avformat.h:757中声明)/ usr/local/src/ffmpeg- php-0.6.0/ffmpeg_movie.c:546:警告:âtitleâ已弃用(在/ usr/local/include/lib avformat/avformat.h:757中声明)/usr/local/src/ffmpeg-php-0.6.0 /ffmpeg_movie.c:在函数âzim_ffmpeg_movie_getAuthor中:/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:561:警告:âauthorâ不推荐使用(在/ usr/local/include/li bavformat/avformat中声明. h:758)/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:561:警告:âauthorâ不推荐使用(在/ usr/local/include/li bavformat/avformat.h:758中声明)/ usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:在函数âzim_ffmpeg_movie_getCopyrightâ:/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:575:警告:不推荐使用"版权所有"(声明at/usr/local/include /libavformat/avformat.h:759)/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:575:警告:âcopyrightâ是弃用 d(在/ usr/local/include /libavformat/avformat.h:759中声明)/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:在函数âzim_ffmpeg_movie_getAlbumâ中:/ usr/local/src/ffmpeg -php-0.6.0/ffmpeg_movie.c:590:警告:不推荐使用âalbum(在/ usr/local/include/lib avformat/avformat.h:761中声明)/usr/local/src/ffmpeg-php-0.6. 0/ffmpeg_movie.c:590:警告:不推荐使用âalbum(在/ usr/local/include/lib avformat/avformat.h:761中声明)/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c :在函数âzim_ffmpeg_movie_getGenre中:/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:604:警告:不推荐使用âgenreâ(在/ usr/local/include/lib avformat/avformat.h:764中声明) /usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:604:警告:âgenreâ已弃用(在/ usr/local/include/lib avformat/avformat.h:764中声明)/ usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:在函数âzim_ffmpeg_movie_getTrackNumberâ:/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:619:警告:âtrackâ是 不推荐使用(在/usr/local/include/libavformat/avformat.h:763中声明)/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:在函数âzim_ffmpeg_movie_getYearâ中:/ usr/local/src/ffmpeg -php-0.6.0/ffmpeg_movie.c:632:警告:âyearâ已弃用(在/usr/local/include/libavformat/avformat.h:762中声明)/usr/local/src/ffmpeg-php-0.6.0 /ffmpeg_movie.c:在函数âphp_read_av_frameâ:/usr/local/src/ffmpeg-php-0.6.0/ffmpeg_movie.c:1215:警告:不推荐使用-avodec_decode_videoâ(在/ usr/l ocal/include/libavcodec/avcodec中声明. h:3656)make:* [ffmpeg_movie.lo]错误1
ffmpeg-php ×13
ffmpeg ×12
php ×7
laravel ×3
ajax ×1
composer-php ×1
file-upload ×1
mpeg-dash ×1
symfony ×1