使用 ffmpeg 转码和分段
Posted
技术标签:
【中文标题】使用 ffmpeg 转码和分段【英文标题】:transcode and segment with ffmpeg 【发布时间】:2012-02-04 18:23:36 【问题描述】:看来ffmpeg现在有一个segmenter,或者至少有一个命令行选项
-f 段
在文档中。
这是否意味着我可以使用 ffmpeg 将视频实时转码为 h.264 并仅使用 ffmpeg 提供分段的 ios 兼容的 .m3u8 流?如果是这样,将任意视频文件转码为分段 h.264 aac 640 x 480 流 ios 兼容流的命令是什么?
【问题讨论】:
如果TS包含多个节目(DVB-T采集的电视节目),如何拆分?例如,我有一个包含足球 + 烹饪 + 卡通的 TS 文件。如何将此 TS 文件拆分为 3 个 mpg 文件? 【参考方案1】:当然 - 您可以使用 -f 段 将视频分割成片段并将其提供给 iOS 设备。 ffmpeg 将创建分段文件 .ts,您可以使用任何 Web 服务器为这些文件提供服务。
工作示例(禁用声音)- ffmpeg 版本 N-39494-g41a097a:
./ffmpeg -v 9 -loglevel 99 -re -i sourcefile.avi -an \
-c:v libx264 -b:v 128k -vpre ipod320 \
-flags -global_header -map 0 -f segment -segment_time 4 \
-segment_list test.m3u8 -segment_format mpegts stream%05d.ts
提示:
确保从最新的 git 存储库编译 ffmpeg 使用 libx264 编解码器编译 需要-map 0我如何编译 FFMPEG - 额外支持 rtmp 以从 flash-media-server 获取提要
export PKG_CONFIG_PATH="/usr/lib/pkgconfig/:../rtmpdump-2.3/librtmp"
./configure --enable-librtmp --enable-libx264 \
--libdir='../x264/:/usr/local/lib:../rtmpdump-2.3' \
--enable-gpl --enable-pthreads --enable-libvpx \
--disable-ffplay --disable-ffserver --disable-shared --enable-debug
【讨论】:
我在 Mac 上,雪豹,我正在尝试编译这个,不需要 librtmp,因为我不做 RTMP 流,关于下载什么的任何建议,我需要的步骤跟随让这个工作? FFmpeg how-to 似乎指的是 libfaad 之类的东西,这似乎不再需要了。 对我不起作用,生成的播放列表总是只有最后一个元素。 [例如 Stream00009.ts] 如果TS包含多个节目(DVB-T采集的电视节目),如何拆分?例如,我有一个包含足球 + 烹饪 + 卡通的 TS 文件。如何将此 TS 文件拆分为 3 个 mpg 文件? 使用 -map 0:X 并添加您想要挑选的流。然后,您可以将流重新组合成一个新的单个程序(或许多程序)传输流。 除了 MP4/webm 之外,我找不到答案。你能指出我那个方向@vladman 吗? (我在 cli 中尝试了不同的参数,但无法使其工作)【参考方案2】:这可以在 ffmpeg 文档中找到:https://ffmpeg.org/ffmpeg-formats.html#segment_002c-stream_005fsegment_002c-ssegment
【讨论】:
以上是关于使用 ffmpeg 转码和分段的主要内容,如果未能解决你的问题,请参考以下文章
javascript使用btoa和atob来进行Base64转码和解码
JavaCV音视频开发宝典:视频转码和转封装有什么区别?使用rtsp拉流转推到rtmp案例来讲一下转码和转封装实现的区别
JavaCV音视频开发宝典:视频转码和转封装有什么区别?使用rtsp拉流转推到rtmp案例来讲一下转码和转封装实现的区别