文档章节

ffmpeg对mp4文件进行ts切片并生成m3u8文件

yizhichao
 yizhichao
发布于 2018/09/19 21:42
字数 1202
阅读 258
收藏 2

首先可以通过ffprobe查看视频信息  (可选)

执行: ./ffprobe Beach-Ball.mp4 

iZm5ecuy8n2epwa3gno33xZ:/opt/yizhichao/ffmpeg-4.0.2-64bit-static # ./ffprobe Beach-Ball.mp4 
ffprobe version 4.0.2-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2007-2018 the FFmpeg developers
  built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg
  libavutil      56. 14.100 / 56. 14.100
  libavcodec     58. 18.100 / 58. 18.100
  libavformat    58. 12.100 / 58. 12.100
  libavdevice    58.  3.100 / 58.  3.100
  libavfilter     7. 16.100 /  7. 16.100
  libswscale      5.  1.100 /  5.  1.100
  libswresample   3.  1.100 /  3.  1.100
  libpostproc    55.  1.100 / 55.  1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Beach-Ball.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 2015-08-24T11:27:32.000000Z
    encoder         : Lavf55.33.100
  Duration: 00:00:15.70, start: 0.000000, bitrate: 2526 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 2525 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      creation_time   : 2015-08-24T11:27:32.000000Z
      handler_name    : VideoHandler
iZm5ecuy8n2epwa3gno33xZ:/opt/yizhichao/ffmpeg-4.0.2-64bit-static #

再用ffmpeg把Beach-Ball.mp4文件转换为beachball.ts文件:

./ffmpeg -y -i Beach-Ball.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb beachball.ts

iZm5ecuy8n2epwa3gno33xZ:/opt/yizhichao/ffmpeg-4.0.2-64bit-static # ./ffmpeg -y -i Beach-Ball.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb beachball.ts    
ffmpeg version 4.0.2-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg
  libavutil      56. 14.100 / 56. 14.100
  libavcodec     58. 18.100 / 58. 18.100
  libavformat    58. 12.100 / 58. 12.100
  libavdevice    58.  3.100 / 58.  3.100
  libavfilter     7. 16.100 /  7. 16.100
  libswscale      5.  1.100 /  5.  1.100
  libswresample   3.  1.100 /  3.  1.100
  libpostproc    55.  1.100 / 55.  1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Beach-Ball.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 2015-08-24T11:27:32.000000Z
    encoder         : Lavf55.33.100
  Duration: 00:00:15.70, start: 0.000000, bitrate: 2526 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 2525 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      creation_time   : 2015-08-24T11:27:32.000000Z
      handler_name    : VideoHandler
Output #0, mpegts, to 'beachball.ts':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.12.100
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 2525 kb/s, 30 fps, 30 tbr, 90k tbn, 15360 tbc (default)
    Metadata:
      creation_time   : 2015-08-24T11:27:32.000000Z
      handler_name    : VideoHandler
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
frame=  471 fps=0.0 q=-1.0 Lsize=    5276kB time=00:00:15.66 bitrate=2758.8kbits/s speed=1.31e+03x    
video:4840kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 9.009212%
iZm5ecuy8n2epwa3gno33xZ:/opt/yizhichao/ffmpeg-4.0.2-64bit-static # ll
total 201608
-rw-r--r-- 1 root     root  4958325 Sep 22  2017 Beach-Ball.mp4
-rw-r--r-- 1 activemq 1000    35147 Jul 19 09:16 GPLv3.txt
-rw-r--r-- 1 root     root  5402744 Sep 19 21:37 beachball.ts
-rwxr-xr-x 1 activemq 1000 64639464 Jul 19 08:56 ffmpeg
-rwxr-xr-x 1 activemq 1000 65855848 Jul 19 09:16 ffmpeg-10bit
-rwxr-xr-x 1 activemq 1000 64541160 Jul 19 08:56 ffprobe
drwxr-xr-x 2 activemq 1000     4096 Jul 19 09:00 manpages
drwxr-xr-x 2 activemq 1000     4096 Jul 19 07:35 model
-rwxr-xr-x 1 activemq 1000   742480 Jul 19 08:56 qt-faststart
-rw-r--r-- 1 activemq 1000     2958 Jul 19 09:16 readme.txt

最后用ffmpeg把beachball.ts文件切片并生成playlist.m3u8文件,5秒一个切片:

./ffmpeg -i beachball.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 5 beachball%03d.ts

iZm5ecuy8n2epwa3gno33xZ:/opt/yizhichao/ffmpeg-4.0.2-64bit-static # ./ffmpeg -i beachball.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 5 beachball%03d.ts
ffmpeg version 4.0.2-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg
  libavutil      56. 14.100 / 56. 14.100
  libavcodec     58. 18.100 / 58. 18.100
  libavformat    58. 12.100 / 58. 12.100
  libavdevice    58.  3.100 / 58.  3.100
  libavfilter     7. 16.100 /  7. 16.100
  libswscale      5.  1.100 /  5.  1.100
  libswresample   3.  1.100 /  3.  1.100
  libpostproc    55.  1.100 / 55.  1.100
Input #0, mpegts, from 'beachball.ts':
  Duration: 00:00:15.70, start: 1.400000, bitrate: 2752 kb/s
  Program 1 
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
    Stream #0:0[0x100]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 30 fps, 30 tbr, 90k tbn, 60 tbc
[segment @ 0x4df3180] Opening 'beachball000.ts' for writing
Output #0, segment, to 'beachball%03d.ts':
  Metadata:
    encoder         : Lavf58.12.100
    Stream #0:0: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 30 fps, 30 tbr, 90k tbn, 30 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
[segment @ 0x4df3180] Opening 'playlist.m3u8.tmp' for writing
[segment @ 0x4df3180] Opening 'beachball001.ts' for writing
[segment @ 0x4df3180] Opening 'playlist.m3u8.tmp' for writing
[segment @ 0x4df3180] Opening 'beachball002.ts' for writing
[segment @ 0x4df3180] Opening 'playlist.m3u8.tmp' for writing
frame=  471 fps=0.0 q=-1.0 Lsize=N/A time=00:00:15.66 bitrate=N/A speed= 765x    
video:4843kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
iZm5ecuy8n2epwa3gno33xZ:/opt/yizhichao/ffmpeg-4.0.2-64bit-static # ll
total 206904
-rw-r--r-- 1 root     root  4958325 Sep 22  2017 Beach-Ball.mp4
-rw-r--r-- 1 activemq 1000    35147 Jul 19 09:16 GPLv3.txt
-rw-r--r-- 1 root     root  5402744 Sep 19 21:37 beachball.ts
-rw-r--r-- 1 root     root  1740692 Sep 19 21:38 beachball000.ts
-rw-r--r-- 1 root     root  1729036 Sep 19 21:38 beachball001.ts
-rw-r--r-- 1 root     root  1933016 Sep 19 21:38 beachball002.ts
-rwxr-xr-x 1 activemq 1000 64639464 Jul 19 08:56 ffmpeg
-rwxr-xr-x 1 activemq 1000 65855848 Jul 19 09:16 ffmpeg-10bit
-rwxr-xr-x 1 activemq 1000 64541160 Jul 19 08:56 ffprobe
drwxr-xr-x 2 activemq 1000     4096 Jul 19 09:00 manpages
drwxr-xr-x 2 activemq 1000     4096 Jul 19 07:35 model
-rw-r--r-- 1 root     root      213 Sep 19 21:38 playlist.m3u8
-rwxr-xr-x 1 activemq 1000   742480 Jul 19 08:56 qt-faststart
-rw-r--r-- 1 activemq 1000     2958 Jul 19 09:16 readme.txt
iZm5ecuy8n2epwa3gno33xZ:/opt/yizhichao/ffmpeg-4.0.2-64bit-static # 

 

© 著作权归作者所有

yizhichao

yizhichao

粉丝 15
博文 463
码字总数 362827
作品 0
南京
程序员
私信 提问
windows 下 hls 的点播和直播

Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件(可选)。 常用的流媒体协议主要有 HTTP 渐进下载和基于 RTSP/R...

mlianghua
2015/06/05
0
0
Nginx+ffmpeg搭建Apple Http Live Streaming笔记

起始Nginx来搭建HLS步骤非常少 安装好Nginx,然后跑起来 把切片好的视频和m3u8文件放到部署目录,直接访问就可以了 重点是(切片)视频 网上国内国外的找了好多博客 这里一定注意一点,不要用...

天下杰论
2015/07/28
0
0
小玩流媒体播放——HLS流媒体点播系统

背景:前一段时间帮助一个朋友研究了下流媒体播放方面的知识,感觉挺好玩的。现在把浅薄的尝试和总结分享给大家。 一.HLS流媒体点播系统概述 HTTP Live Streaming最初是苹果公司针对其iPhon...

CasparLi
2015/05/28
0
1
ios播放m3u8随机卡死

最近做m3u8视频点播,用ffmpeg进行切片,生成m3u8索引文件及ts分片文件。用android safari播放没问题,用ios播放出现随机卡死。是什么原因,怎么解决呢?

YondWell
2014/10/12
982
1
nginx上搭建HLS流媒体服务器

简介:HTTP Live Streaming(缩写是 HLS)是一个由苹果公司提出的基于HTTP的流媒体 网络传输协议。 是苹果公司QuickTime X和iPhone软件系统的一部分。它的工作原理是把整个流分成一个个小的基...

张旭0512
2014/05/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

vsftp 安装

1、安装命令:yum install vsftpd 2、启动命令:systemctl start vsftpd.service 查看状态命令:systemctl status vsftpd.service 停止命令:systemctl stop vsftpd.service 3、...

654476371
2分钟前
0
0
powershell 比较Excel文件内容

今天在工作中遇到一个问题,需要比较Excel文件中两列值有哪些不同: 实际上这两列数据比较多且大多数重复,上图只是举个简单的例子, 可以看出其中345是重复项,怎么找出来呢?用powershell实...

求神
9分钟前
1
0
如何通过ShareSDK的 Unity3D快速接入Android/iOS分享与授权

Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎;在游戏中...

MobService
10分钟前
0
0
手动实现 SpringMVC

先看整体架构 因为我们这个 MVC 框架要依赖 IOC/DI 容器,所以我们在 pom 文件里要将自己的 Spring 框架引入进来。 实现 MVC 的整体功能 首先我们定义两个 MVC 专用的注解,RequestMapping ...

编辑之路
15分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部