标签: ffmpeg-php

我得到错误"使用不推荐使用的像素格式,请确保使用ffmpeg正确设置了范围"..有人可以检查下面的代码吗?

这是我的代码使用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)

php ffmpeg ffmpeg-php

16
推荐指数
1
解决办法
3万
查看次数

有什么方法可以加快 ffmpeg 的处理时间

我在处理过程中遇到了问题。我使用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 file-upload video-processing ffmpeg-php laravel

8
推荐指数
1
解决办法
2万
查看次数

使用drawtext过滤器后的ffmpeg连接

我对 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)

ffmpeg ffmpeg-php

6
推荐指数
1
解决办法
2165
查看次数

FFMpeg - 为视频文件创建缩略图

我是php的新手.我在我的本地iis中安装了ffmpeg ..是否可以为flv文件生成缩略图图像.请帮忙..

php ffmpeg ffmpeg-php

5
推荐指数
1
解决办法
2万
查看次数

在CentOS上安装ffmpeg-php

我正在尝试在服务器(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)

ffmpeg ffmpeg-php

5
推荐指数
1
解决办法
2007
查看次数

Windows上的Php-ffmpeg"Unknown encoder libfaac"

我正在使用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)

php ffmpeg ffmpeg-php laravel

5
推荐指数
2
解决办法
4606
查看次数

使用 FFMPEG 生成用于 MPEG-DASH 自适应流媒体的 MPD 文件

所以我正在尝试设置自适应流,我认为已经解决了 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 http-live-streaming ffmpeg-php mpeg-dash

5
推荐指数
1
解决办法
1万
查看次数

php-ffmpeg获取视频时长

当我尝试使用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 ffmpeg-php

4
推荐指数
1
解决办法
5043
查看次数

过滤器的输出未连接

我正在使用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)

ffmpeg ffmpeg-php

4
推荐指数
1
解决办法
5588
查看次数

PHP 致命错误:第 140 行 C:\xampp\htdocs\vendor\symfony\process\Pipes\WindowsPipes.php 中超出了 60 秒的最大执行时间

当我尝试使用 Ajax 和 Laravel 上传大于 15MB 的视频时,出现此错误:

PHP 致命错误:第 140 行 C:\xampp\htdocs\vendor\symfony\process\Pipes\WindowsPipes.php 中超出了 60 秒的最大执行时间

我使用FfmpegSymfony/process

symfony windowsPipes.phpLaravel 中的错误。

什么是问题?

php ajax symfony ffmpeg-php laravel

4
推荐指数
1
解决办法
2万
查看次数

php-ffmpeg太慢 - 生成缩略图?

我第一次尝试从视频文件创建缩略图预览,上传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)

php ffmpeg ffmpeg-php

1
推荐指数
1
解决办法
1910
查看次数

我已经安装了 composer,现在需要安装 php_ffmpeg

嘿,我已经在我的 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 ffmpeg ffmpeg-php composer-php

1
推荐指数
1
解决办法
4671
查看次数

make:***[ffmpeg_movie.lo]编译ffmpeg-php时出错1

我基本上已经厌倦了自己搜索谷歌并试图解决我在使用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 ffmpeg-php

0
推荐指数
1
解决办法
4150
查看次数