ffmpeg的使用

2023-11-06


 

ffmpeg是一个十分强大的音视频处理工具,提供转码、播放等基础功能,功能十分全面、强大,但命令繁多复杂,通常不直接使用,而是集成在带GUI的视频处理软件中。
 

我用过一些m3u8的下载、合并工具,比如

  • TS Master:界面复杂,不好用
  • TS助手:下载速度快,但有些情况下载合并不了,比如带有key的

推荐使用TS助手,TS助手下载、合并失败的再使用ffmpeg进行处理。

 

ffmpeg的下载、配置

下载

官方github只提供了源码,需要自行编译,BtbN提供了编译好的版本,可以在BtbN的github地址下载,也可以从ffmpeg官网链接进入BtbN

选择操作系统对应的任意一个版本下载即可

 

版本说明

1、GPL

GNU General Public License的缩写,GNU公共许可证,通常具有“传染性”,如果项目中集成了GPL协议的开源项目时,项目本身也会被感染成为GPL的开源项目,即需要将其开源、免费。

比如,我开发一个桌面exe程序时,需要引用某个GPL的开源的dll,那我开发的这个exe桌面程序也会变成GPL开源项目,我在项目发布时需要将其开源、免费,有义务且必须提供整个项目的源代码。

 

2、LGPL

GNU Lesser General Public License的缩写,GNU 宽松公共许可证,允许项目通过类库引用(link)的方式使用LGPL类库,项目可以作为商业软件进行发布、销售,发布时不需要开源、免费,但前提是不能修改引用的LGPL许可的软件部分。

开源免费的项目选GPL,不开源的项目选LGPL,相比于GPL而言,LGPL更灵活,开不开源均可。

 

3、-shared

ffmpeg的gpl、lgpl版本默认将共享的链接库集成到了exe中,bin中只有三个exe文件,这三个exe文件体积都很大;

-shared没有将共享的链接库集成到exe中,bin中有一堆链接库,这些链接库可以被3个exe共用,3个exe的体积都很小,压缩包体积也比gpl、lgpl的小得多。

 

环境变量配置

bin下的三个exe

  • ffmpeg 用于视频转码
  • ffplay 用于视频播放
  • ffprobe 用于获取音视频文件的信息

在PATH环境变量中添加bin目录,方便后续使用这些命令,主要是使用ffmpeg.exe。

 

ffmpeg处理m3u8 | ts的常用命令

#合并ts文件,ts文件数量少、不需要key的时候可以用这种,
ffmpeg -i "1.ts|2.ts|3.ts|" -c copy xxx.mp4


#也可以根据文件中指定的ts文件位置进行合并,不需要key
ffmpeg -i index.m3u8 -c copy xxx.mp4


#需要key的要加上参数-allowed_extensions ALL
ffmpeg -allowed_extensions ALL -i index.m3u8 -c copy xxx.mp4


# -protocol_whitelist指定白名单协议,添加相应的协议即支持对应的文件来源
ffmpeg -allowed_extensions ALL -protocol_whitelist "file,http,https,tls,tcp,crypto" -i https://xxx/xxx/index.m3u8 -c copy xxx.mp4
  • 最后一种的参数是最全的,也是最常用的,支持本地、网络中的m3u8文件,支持需要key的、不需要key的
  • 文件名不一定非要是index,文件后缀不一定非要是.m3u8,只要是文本文件,文件中包含了ts文件路径、所需key的路径的即可,路径支持相对路径、绝对路径、网络url,相对路径是相对于当前使用的m3u8文件
  • 如果使用本地m3u8(文本)文件,可以复制index.m3u8来改其中的ts、key的路径
  • 报错 Protocol ‘xxx’ not on whitelist ‘file,http,https,tls,tcp’! ,说明缺少该种协议设置,加到 whitelist 列表中即可

ffmpeg合并ts文件快,但使用网络中的m3u8 url地址时,会先下载所需的ts文件,ffmpeg不是专业的下载软件,下载速度慢,下载包含了大量ts的视频尤其慢。

嫌慢的可以下载m3u8到本地,获取其中的ts路径列表、key路径,转换为网络url,使用迅雷任务组进行下载到本地,修改m3u8中的路径,使用本地m3u8文件进行ts合并。

 

有的网站编码ts时使用了key,解码ts进行合并时自然也需要使用key,key文件的路径在m3u8文件中。有的网站编码时没有使用key,解码合并ts时自然也就不需要key。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ffmpeg的使用 的相关文章

  • 有没有办法在转码之前使用 ffmpeg 确定文件的编码?

    我计划使用 ffmpeg 确保上传到我网站的所有视频文件都编码为 mp4 h264 我不想自动处理每个文件 而是希望通过仅处理那些还不是 mp4 h264 的文件来最小化处理开销 有没有一种简单的方法可以使用 ffmpeg 或其他命令行实用
  • ffmpeg流rc缓冲区下溢

    目前我正在使用开源工具 ffmpeg ffserver 建立一个屏幕共享平台 分享之初一切都很好 大约 1 1 2 分钟后 我在输出中得到以下异常 flv 0x3a47aa0 rc buffer underflow flv 0x3a47aa
  • 将网络摄像头从浏览器流式传输到 RTMP 服务器

    我正在尝试将一些内容从浏览器的网络摄像头实现流式传输到随机 RTMP 服务器 我让它工作到每 2 秒将 WEBM 我相信是 VP8 编码的电影片段发送到我的服务器的部分 但棘手的部分是从该部分将其发送到 RTMP 服务器 对 FFMPEG
  • 使用 ffmpeg 将带有 Alpha 的 .mov 转换为带有 alpha 的 .webm 时出现错误“使用 auto_alt_ref 进行透明度编码不起作用”

    我正在尝试将具有 alpha 透明度的 mov 文件转换为 webm 文件 并一直在关注此线程以寻求帮助 使用 ffmpeg 将带 Alpha 的 mov 转换为带 Alpha 的 VP9 Webm https stackoverflow
  • 使用 ffmpeg 转换真实媒体

    我有许多旧的硬壳真实媒体文件需要转换 并希望编写一个脚本来批量处理它们 我可以使用 FFMpegX 进行 Real Media gt AVI 转换 但是当我尝试使用 ffmpeg 复制转换时 它总是会出现如下错误 avi 0x10084fa
  • pictureBox 图片处理异常

    我最近想尝试一下锻造网 http www aforgenet com framework 因为我发现它非常简单 所以我决定使用 Video FFMPEG 命名空间进行一些简单的视频播放 这样我就可以将每个帧直接放在 pictureBox 上
  • 如何使用ijkplayer库

    我要使用 ijkplayergithub链接 https github com bbcallen ijkplayer 我下载了这个 然后通过 文件 gt 导入 gt 常规 gt 现有项目到工作区 将其导入到 eclipse 中 之后我有三个
  • 如何使用ffmpeg从avi生成gif? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试使用以下命令将视频的一部分提取到动画 gif 中 ffmpeg i video avi t 5 out gif 它会生成一个 g
  • 如何在 PHP 中运行 ffmpeg 命令

    我需要在 PHP 中运行 ffmpeg 命令 但是 php ffmpeg 不再支持最新版本并且已经过时 我可以知道在网络文件中运行 ffmpeg 命令的替代方法吗 PHP Javascript jQuery 我尝试exec and shel
  • FFmpeg - H264 编码器找不到有效设备并且无法配置编码器

    我尝试使用 H264 编码器进行编码 但是当我这样做时 出现以下错误 h264 v4l2m2m 0x55682d2416c0 Could not find a valid device h264 v4l2m2m 0x55682d2416c0
  • 使用 libx264 为 Raspberry pi 编译 Xuggler 时的问题 #2

    我正在尝试编译Xuggler http www xuggle com xuggler 对于 Raspberry Pi 在 Debian 操作系统上运行 又名 Raspbian 我遵循了可用的 基本构建说明 here http www xug
  • 从编码视频文件中提取运动向量

    我正在尝试从编码的 mp4 文件中提取运动矢量数据 在之前的帖子中我发现 一个答案http www princeton edu jiasic cos435 motion vector c http www princeton edu jia
  • 如何使用 ffmpeg 提取时间精确的视频片段?

    这并不是一个特别新的问题领域 但我已经尝试过那里建议的内容 但运气不佳 那么 我的故事 我有一大段 15 秒的直接来自camera mov 视频 我想从中提取特定的块 我可以通过开始时间和停止时间 以秒为单位 来识别该块 我首先尝试执行我称
  • VLC 和 ffmpeg 如何协同工作?

    我从源代码编译了VLC 它运行良好 当我执行 Vlc 时 vlc 运行 我还从源代码编译了 ffmpeg 它也运行良好 当我执行 ffmpeg i f toto flv mp3 vn acodec copy new toto mp3 时 会
  • 如何在Android项目中使用libffmpeg.so?

    我正在尝试在 Android 中创建一个屏幕录制应用程序 为此 我使用 FFmpeg 我已经创建了 libffmpeg so 文件 现在我想在 Android 项目中使用相同的方法来调用它的本机函数 我怎样才能做到这一点 本教程提供了有关此
  • 使用 ffmpeg 或 OpenCV 处理原始图像

    看完之后维基百科页面 http en wikipedia org wiki Raw image format原始图像格式 是任何图像的数字负片 为了查看或打印 相机图像传感器的输出具有 进行处理 即转换为照片渲染 场景 然后以标准光栅图形格
  • Qt WinRT 应用程序无法访问文件权限被拒绝

    我需要使用 Qt 和 FFMPEG 开发 WinRT 应用程序 我根据指令构建了 WinRT 的 ffmpeghere https github com Microsoft FFmpegInterop我可以将库与我的项目链接起来 现在我需要
  • ffmpeg:音频样本的字节顺序

    我使用 ffmpeg 的 avcodec 从我的 C 应用程序中的音乐文件中检索原始音频样本 对于我测试的文件 这些文件样本的字节序似乎是小字节序 但我想知道对于我尝试解码的所有文件是否总是如此 即来自 ffmpeg 的实现或至少它的体系结
  • FFmpeg - 来自 NodeJS 的 RTMP 流,流比实时更快

    我的目标是在 Node 中渲染画布 并将该画布流式传输到 RTMP 服务器 最终是 Twitch 但现在我正在在本地 RTMP 服务器上测试 流式传输到 RTMP 的标准方式似乎是ffmpeg 所以我使用它 从 NodeJS 中作为子进程生
  • 在 macOS 上为 MoviePy 安装 ffmpeg 失败并出现 SSL 错误

    我正在尝试编写一个 Python 程序 在 Mac OS 10 11 16 上使用 MoviePy 将 MP4 文件转换为 GIF 我用 import moviepy editor as mp 我收到一条错误消息 说我需要打电话imagei

随机推荐

  • 【题目】pyCharm 专业版 和 社区版的区别以及如何查看其版本

    时间 2018 09 22 题目 pyCharm 专业版 和 社区版的区别以及如何查看其版本 参考链接 https zhidao baidu com question 584331885111670725 html 一 pyCharm 专业
  • 用lld替代gld生成glibc

    用lld替代gld生成glibc 首先明确 lld是llvm中的链接器 要使用lld替代gld 则要先生成lld 然后再做个软链接使gnu找gld的时候找到的是lld 这样算是替代成功 其中会遇到很多问题 逐个击破最终成功使用lld生成gl
  • sqlserver的安装详解

    背景 最近课程需求 需要安装sqlserver 虽然网上有许多教程 但是自己去动手还是出现了许多问题 感觉网上教程不是很详细 所以将自己安装的经验写一个汇总 提供给大家共同学习 实验环境 win8 1 一 sqlserver2008R2的下
  • 从封装变化的角度看设计模式——对象创建

    封装变化之对象创建 在对象创建的过程中 经常会出现的一个问题就是通过显示地指定一个类来创建对象 从而导致紧耦合 这是因为创建对象时指定类名将使你受特定实现的约束而不是特定接口的约束 这会使未来的变化更加复杂 要避免这种情况 就应该间接地创建
  • 提取字符串单引号内的字符——Python for循环代码“异想天开”

    字符串处理 不用re模块 直接用for 手撕 字符串 提取单引号内字符串 本文获得CSDN质量评分 89 学习的细节是欢悦的历程 Python 官网 https www python org Free 大咖免费 圣经 教程 python 完
  • 树结构的自定义及基本算法(Java数据结构学习笔记)

    数据结构可以归类两大类型 线性结构与非线性结构 本文的内容关于非线性结构 树的基本定义及相关算法 关于树的一些基本概念定义可参考 维基百科 树的ADT模型 根据树的定义 每个节点的后代均构成一棵树树 称为子树 因此从数据类型来讲 树 子树
  • 提升效率,主流自动化运维工具推荐

    提升效率 主流自动化运维工具推荐 自动化运维工具可以帮助运维团队提高效率 减少错误 并实现持续交付 下面将介绍几个主流的自动化运维工具 分析其应用场景 并提供各自的官网地址供深入了解 1 Ansible 官网地址 https www ans
  • VUE启动问题(You may use special comments to disable some warnings)

    vue启动时出现以下问题 出现问题的原因 Eslint的检测机制 解决方法 在build webpack base conf js文件中注释掉第44行代码 如下图 重新yarn start 或者npm run dev 解决方法 在confi
  • 2014腾讯软件开发类笔试题(广州站)

    考试时长 120分钟 一 不定项选择题 共25题 每题4分 共100分 少选 错选 多选均不得分 1 已知一棵二叉树 如果先序遍历的节点顺序是 ADCEFGHB 中序遍历是 CDFEGHAB 则后序遍历结果为 D A CFHGEBDA B
  • 如何实现云数据治理中的数据安全?

    摘要 云计算被定义为计算资源的共享池 已经在不同的应用领域广泛部署和使用 在云计算中 数据治理在提高整体性能和确保数据安全方面发挥着至关重要的作用 本研究从管理和技术应用两方面探讨如何实现云数据治理中的数据安全 关键词 大数据 云计算 数据
  • 2021-03-25

    pytorch IndexError scatter Expected dtype int64 for index 1 问题产生原因及解决方法 scatte r 要求数据是int64类型 检查传入scatter 函数的tensor 类型是不
  • Linux服务器系统内存监控方法详解

    Linux服务器系统内存监控方法详解 内存是Linux内核所管理的最重要的资源之一 内存管理系统是操作系统中最为重要的部分 因为系统的物理内存总是少于系统所需要的内存数量 虚拟内存就是为了克服这个矛盾而采用的策略 系统的虚拟内存通过在各个进
  • js 实现php md5加密,js实现md5加密插件代码分享

    本文主要和大家分享js实现md5加密插件代码 希望能帮助到大家 使用方法 引入文件 var MD5 MD5 createMD5String yourSrting function globle factory 判断执行环境是否为浏览器 ty
  • RF 浏览器与浏览器驱动 浏览器与驱动

    历史版本的火狐 http ftp mozilla org pub firefox releases 火狐驱动 https github com mozilla geckodriver releases IE驱动 iedriverserver
  • 【深度学习】在学习pytorch时,一些不会的python语法总结(1)

    文章目录 一 builtin function or method object has no attribute size 二 获取张量的四个维度 torch里的size 函数 三 改变tensor形状的函数view 一 builtin
  • 并发编程JMM系列之重排序和顺序一致性

    前言 昨天我们接触到了什么是Java内存模型以及两种Java并发模型 并对JMM有了一些初步的认识和了解 我们在上节有提到JMM的重排序规则 但是讲的不详细 今天我们再重点聊下重排序这个东西 以及顺序一致性内存模型 OK 开始我们今天的并发
  • RP9-3 事件 情形

    事件 1 元件的鼠标事件10种 也包括两种触屏 单击和长按 单击 Click or Tap 双击 Double Click or Double Tap 右击 Context Meuu Right Click 按下 Mouse Button
  • 解决Windows 组件存储已损坏,0x80073712错误

    在 Windows 8 与 Windows Server 2012 当系统组件有损毁时 我们可以在不影响目前系统状况下来检查与修复系统组件 如下 当我添加功能组件时报如下错误 明显可以看出我的组件存储已损坏 那今天就让我告诉大家解决方案 我
  • 算法、数据结构可视化

    算法 数据结构可视化 一 总结 一句话总结 比如算法 数据结构 很多都有可视化 学习要知道用可视化更好的学习 1 可视化数据结构 http www cs usfca edu galles visualization Algorithms h
  • ffmpeg的使用

    目录 ffmpeg的下载 配置 下载 版本说明 环境变量配置 ffmpeg处理m3u8 ts的常用命令 ffmpeg是一个十分强大的音视频处理工具 提供转码 播放等基础功能 功能十分全面 强大 但命令繁多复杂 通常不直接使用 而是集成在带G