由于优优好房上有些视频需要批量切片,首先想到的就是FFmpeg。

一开始查阅了大量的博客,论坛,文章,踩了很多坑,后面参照FFmpeg的编译指南,搞定

在此就不赘述ffmpeg的安装

http://trac.ffmpeg.org/wiki/CompilationGuide

我选择的是centos

http://trac.ffmpeg.org/wiki/CompilationGuide/Centos

ffmpeg包括一组软件,ffmpeg用于对媒体文件进行处理,ffserver是一个http的流媒体服务器,ffplay是一个基于SDL的简单播放器。两个库文件libavcodec和libavformat。

ffmpeg作为媒体文件处理软件,基本用法如下: 
ffmpeg [global_options] {[input_file_options] -i ‘input_file’} ... {[output_file_options] ‘output_file’} ...
输入输出文件通常就是待处理的多媒体文件了。可以是纯粹的音频文件,纯粹的视频文件,或者混合的。 
大部分常见的格式都能够“通杀”。象常见的各种mpeg,AVI封装的DIVX和Xvid等等

对ffmpeg命令选项的了解,先从下面的命令开始
ffmpeg -h
ffmpeg -h long
ffmpeg -h full
man ffmpeg需要安装ffmpeg的手册页条目

各选项参数的解释,详情参见 http://www.ffmpeg.org/ffmpeg.html

在切片这块:

ffmpeg -i 1.mp4 -f segment -segment_time 10 -segment_format mpegts -segment_list list_file.m3u8 -c copy -bsf:v h264_mp4toannexb -map 0 output_file-%d.ts

这条命令的限制是:要求生成ts分片的输入视频是视频是h.264编码,音频是aac编码的视频文件,从优酷网上下载的视频片段都是符合这个条件的。

上面这段是网上看的,其中的bsf比特流过滤器设置是h264_mp4toannexb,这个要求视频是h.264编码。否则后期切片就会很慢,毕竟需要进行转码。如果服务器没有显卡支持,通过硬转码会很耗时。

这个我们是在windows上进行h.264编码,使用格式化工厂,然后再写shell脚本,批量切片,批量把一个目录的视频生成到另外一个目录,并以视频的文件名创建目录保存切片文件,ffprobe获取视频信息,对超过尺寸的视频进行处理再切片,对没有超过尺寸的视频直接切片。

最后附上脚本,希望对你有帮助

#!/bin/bashdeepcopydir(){  for file2 in `ls -a $1`  do  if [ x"$file2" != x"." -a x"$file2" != x".." ];then  if [ -d "$1/$file2" ];then  dirpath="$1/$file2"  #创建文件mkdir -v ${dirpath/videodir/videom3u8}deepcopydir "$1/$file2"  fi  fi  done
}formatvideo(){for file2 in `ls -a $1`  do  if [ x"$file2" != x"." -a x"$file2" != x".." ];then  if [ -d "$1/$file2" ];then  formatvideo "$1/$file2"  elif [ -f "$1/$file2" ];then  videopath="$1/$file2"#获取目录dirpath=$(dirname $videopath)#获取带后缀文件名filename=$(basename $videopath)#后缀after=${filename##*.}#文件名name=${filename%.*}##echo $videopath  $dirpath $filename $after $namem3u8file=${dirpath/videodir/videom3u8}mkdir $m3u8file/$name##ffmpeg -i $videopath -c:v libx264 -c:a copy -f hls -threads 8 -hls_time 30 -hls_list_size 0 $m3u8file/$name/index.m3u8videoinfo=$(ffprobe -v quiet -print_format json -show_format -show_streams $videopath | jq '.streams[0]' )width=$(echo $videoinfo | jq '.width') height=$(echo $videoinfo | jq '.height') if [ $width -lt 960 -o $height -lt 540 ]; then echo "$width,$height"ffmpeg -i $videopath -f segment -segment_time 5 -segment_format mpegts -segment_list $m3u8file/$name/index.m3u8 -c copy -bsf:v h264_mp4toannexb -map 0 $m3u8file/$name/index%d.ts else echo "width=$width,height=$height"ffmpeg -i $videopath -f segment -segment_time 5 -segment_format mpegts -segment_list $m3u8file/$name/index.m3u8 -c copy -bsf:v h264_mp4toannexb -map 0 $m3u8file/$name/index%d.ts fi fi  fi  done
}root='/tmp/'
olddir="${root}videodir"
newdir="${root}videom3u8"
#初始化新的根目录
mkdir -p $newdir
deepcopydir $olddir $newdir
#遍历文件编码
formatvideo $olddir

FFMPEG转码及切片相关推荐

  1. PHP双码率视频云转码服务系统源码 m3u8切片支持秒切及api上传和防盗功能,亲测极速播放

    网站里面存放视频在当前是一个刚需了,对于一些网站的视频存放途径可以是多种的.要么存放在oss云存储进行播放,要么直接存自己服务器.但是奈何服务器的带宽有限,因此可以进行视频切开分片加载.这样可以将视频 ...

  2. 4 FFmpeg从入门到精通-FFmpeg转码

    1 FFmpeg从入门到精通-FFmpeg简介 2 FFmpeg从入门到精通-FFmpeg工具使用基础 3 FFmpeg从入门到精通-FFmpeg转封装 4 FFmpeg从入门到精通-FFmpeg转码 ...

  3. ffmpeg转码生成的m3u8格式详解

    目录 一.ffmpeg转码生成的单码率和多码率的文件列表 二.Master Playlist主列表(name.m3u8) 1. 单码率(video_single_bitrate.m3u8 ) 2. 多 ...

  4. NVIDIA FFmpeg 转码技术分析

    NVIDIA FFmpeg 转码技术分析 所有从 Kepler 一代开始的 NVIDIA GPUs 都支持完全加速的硬件视频编码,而从费米一代开始的所有 GPUs 都支持完全加速的硬件视频解码.截至 ...

  5. ffmpeg转码速度控制方法

    FROM:http://blog.chinaunix.net/uid-11344913-id-4082625.html FFMPEG 像读取直播流一样读取文件 HLS当前吵得这么熙熙攘攘的,不知道大伙 ...

  6. UOS系统下FFmpeg源码编译安装及注意事项

    条件 当前编译环境:国产UOS系统(基于linux),CPU是ARM架构 需要安装ffmpeg 3.4版本. 通过源码编译进行安装使用 下载源码 在github上将ffmpeg源码下载到本地:下载地址 ...

  7. FFMPEG源码分析(二)

    ffmpeg源码分析之数据流 本文主要介绍ffmpeg的数据流,在ffmpeg中主要分有三个主要用途用于媒体流的解码播放,媒体流的转换(解码之后再编码)和媒体流录制. 媒体流的解码播放 在ffmpeg ...

  8. FFMPEG 源码分析

    FFMPEG基本概念: ffmpeg是一个开源的编解码框架,它提供了一个音视频录制,解码和编码库.FFMPEG是在linux下开发的,但也有windows下的编译版本. ffmpeg项目由以下几部分组 ...

  9. PHP双码率视频云转码服务系统源码 m3u8切片秒切

    介绍: 1.修正了双码率无法转码.切片问题,优化"秒切功能". 2.修正了四个水印无法开启,或开启后无法转码的问题. 3.优化了代码,在开启双码率的情况下,可实现极速转码.切片. ...

最新文章

  1. markdown 基本语法
  2. CCS初学调试以及RTDX
  3. 将图片的每个像素进行分类
  4. 如何花两年时间面试一个人
  5. oracle用户手册在哪里,Oracle用户管理常用操作参考手册
  6. 【HDOJ】1196 Lowest Bit
  7. LwIP之数据包管理
  8. wxpython开发教程_wxpython入门第十步(应用程序框架)
  9. 【ARM-Linux开发】libxml/parser.h: 没有那个文件或目录解决方案
  10. oracle共享内存设置spfile,IPC 资源、kernel.shmmax和Oracle 共享内存的调整
  11. Quartz学习(一)
  12. Micropython加速物联网开发4 - SPI驱动5110LCD屏
  13. 看《一人之下:陈朵篇》——架空世界里的真实
  14. Android 智能硬件的理解(2018.5.25)
  15. Java 遍历 Redis Hash key中所有数据
  16. Educational Codeforces Round 118 (Rated for Div. 2)/C. Poisoned Dagger
  17. webpack中的chunk
  18. Antd源码浅析(二)InputNumber组件 一
  19. 星速配资:上周三大指数上涨 煤炭板块表现强势
  20. 上海亚商投顾:沪指窄幅震荡涨0.28% 农业股全天低迷

热门文章

  1. android 内部存储 共享,android存储:共享参数、内部存储、拓展存储
  2. P3386 【模板】二分图最大匹配
  3. 学校计算机室应该配备哪种灭火器,学校灭火器配备标准
  4. 为什么今天要致敬屠呦呦?
  5. 猫爪杯爆红背后的套路,你上勾了吗?
  6. 轻量级过程改进之综述
  7. 苹果于 2021 年 4 月 21 日凌晨发布了搭载 M1 芯片的 iPad Pro
  8. 请叫我En-Tan-Mo
  9. c++中的前置和后置加加没你想的这么简单
  10. 服务器无法远程访问的原因有哪些