ffmpeg将mp4转换为swf
文章目录
- ffmpeg安装、配置
- java运行报错 Cannot run program "ffmpeg"
- ffmpeg命令
- mp4转为swf示例
- ### ffmpeg -i input.mkv -b:v 600 -c:v libx264 -vf scale=1920:1080 -crf 10 -ar 48000 -r 24 output.swf
- mkv转为swf示例
- 其他
- 文档
- 命令参数简介
需要将mp4转换为swf,网上有很多软件,不是收费,就是功能不全,要不就是分辨率比例不满足要求。突然想到实在不行就自己开发个,谁让自己是程序员呢。
ffmpeg安装、配置
不是只写程序就行,需要先安装ffpmeg。
下载地址:
https://www.gyan.dev/ffmpeg/builds/#release-builds # 下载zip包就行
然后配置环境变量,在path中添加即可。
ffmpeg.exe所在的目录就是要添加到path中的路径。如:
D:\Program Files\ffmpeg\ffmpeg-7.0.1-essentials_build\bin
打开cmd,输入ffmpeg -h
命令试下是否可以了。
注:git bash命令行最好也添加下。
java运行报错 Cannot run program “ffmpeg”
Cannot run program “ffmpeg -i d:\swf\input.mp4 -vcodec libx264 -f flv d:\swf\output.swf”: CreateProcess error=2, 系统找不到指定的文件
解决方案:
1、ffmpeg已安装,且环境变量已配置。
2、git bash的安装路径下,也添加bin下的3个exe。
但还是报错,这就怪了。
ffmpeg命令
初衷原本是想用java开发的,后来发现直接用命令就可以,那应该比java更方便。
这里特别强调下,ffmpeg是个非常强大的命令,里面知识特别多,如果连扩展也算上,如:ffmpeg-all,ffplay。那么知识就更多了,要花太多的时间。
想要用好这个命令,对视频音频各种编码还需要有一定认知,一般人都不太懂这个。
所以,我们会用几个常用命令,能实现简单转换就够了。
命令模板:
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
ffmpeg -version # 查看版本
ffmpeg -h # 帮助
以下表格内三种写法是等价的:
音频 | 视频 | 字幕 |
---|---|---|
-codec:a | -codec:v | -codec:s |
-c:a | -c:v | -c:s |
-acodec | -vcodec | -scodec |
①、主要命令选项
-f fmt (input/output)
:指定输入或者输出文件格式(封装格式,视频容器)。常规可省略,而使用依据扩展名(文件的前几百 K 的内容,智能分析)的自动指定,但一些选项需要强制明确设定。
-i filename(input)
:指定输入文件。
-y(global)
:默认自动覆盖输出文件,而不再询问确认。
-n( global)
:不覆盖输出文件,如果输出文件已经存在则立即退出。
-t duration( input/output)
:限制输入/输出的时间。如果是在 -i 前面,就是限定从输入中读取多少时间的数据;如果是用于限定输出文件,则表示写入多少时间数据后就停止。duration 可以是以秒为单位的数值或者 hh:mm:ss.xxx 格式的时间值。注意 -to 和 -t 是互斥的,-t 有更高优先级。
-to position (output)
:只写入 position 时间后就停止,position 可以是以秒为单位的数值或者 hh:mm:ss.xxx 格式的时间值。注意 -to 和 -t 是互斥的,-t 有更高优先级。
-ss position (input/output)
:当在 -i 前,表示定位输入文件到 position 指定的位置。注意可能一些格式是不支持精确定位的,所以 ffmpeg 可能是定位到最接近 position(在之前)的可定位点。position 可以是以秒为单位的数值或者 hh:mm:ss.xxx 格式的时间值。
-codec[:stream_specifier] codec (input/output,per-stream)
:为特定的文件选择编/解码模式,对于输出文件就是编码器, 对于输入或者某个流就是解码器。选项参数中 codec 是编解码器的名字,或者是 copy(仅对输出文件)则意味着流数据直接复制而不再编码。
使用下面命令可以检测 ffmepg 所支持的所有编码器的格式
ffmpeg -encoders # 查看所支持的所有编码器的格式,内容太多,不列出了,还是那句话ffmpeg是个比较专业的东西
mp4转为swf示例
ffmpeg -i input.mp4 -vcodec copy -f flv output.swf
参数说明:
-i input.mp4 指定输入文件。
-vcodec copy 表示复制视频编解码器数据。
-f flv 指定输出格式为FLV,因为SWF通常通过FLV容器格式传输视频。
### ffmpeg -i input.mkv -b:v 600 -c:v libx264 -vf scale=1920:1080 -crf 10 -ar 48000 -r 24 output.swf
报错:
SWF muxer only supports VP6, FLV, Flash Screen Video, P
NG and MJPEG
mkv转为swf示例
ffmpeg -i input.mkv -c:v flashvideo -c:a flashaudio -f flash output.swf
在这个命令中:
-i input.mkv 指定输入文件。
-c:v flashvideo 指定视频编码器为flashvideo,这是SWF格式支持的视频编码器之一。
-c:a flashaudio 指定音频编码器为flashaudio,这是SWF格式支持的音频编码器之一。
-f flash 指定输出格式为SWF。
output.swf 是输出文件的名称。请注意,确保你的FFmpeg版本支持你想要使用的编码器。如果你的版本不支持这些编码器,你可能需要使用其他编码器或者升级你的FFmpeg。
其他
文档
官网文档:
https://ffmpeg.org/ffmpeg.html
这个是文档详细描述页:
https://ffmpeg.org/documentation.html
比较不错的文章:
FFmpeg常用命令行讲解及实战一
命令参数简介
ffmpeg -h返回的内容:
ffmpeg -h
返回:
ffmpeg version 7.0.1-essentials_build-www.gyan.dev Copyright (c) 2000-2024 the FFmpeg developersbuilt with gcc 13.2.0 (Rev5, Built by MSYS2 project)configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberbandlibavutil 59. 8.100 / 59. 8.100libavcodec 61. 3.100 / 61. 3.100libavformat 61. 1.100 / 61. 1.100libavdevice 61. 1.100 / 61. 1.100libavfilter 10. 1.100 / 10. 1.100libswscale 8. 1.100 / 8. 1.100libswresample 5. 1.100 / 5. 1.100libpostproc 58. 1.100 / 58. 1.100
Universal media converter
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...Getting help:-h -- print basic options-h long -- print more options-h full -- print all options (including all format and codec specific options, very long)-h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf/protocolSee man ffmpeg for detailed description of the options.Per-stream options can be followed by :<stream_spec> to apply that option to specific streams only. <stream_spec> can be a stream index, or v/a/s for video/audio/subtitle (see manual for full syntax).Print help / information / capabilities:
-L show license
-h <topic> show help
-version show version
-muxers show available muxers
-demuxers show available demuxers
-devices show available devices
-decoders show available decoders
-encoders show available encoders
-filters show available filters
-pix_fmts show available pixel formats
-layouts show standard channel layouts
-sample_fmts show available audio sample formatsGlobal options (affect whole program instead of just one file):
-v <loglevel> set logging level
-y overwrite output files
-n never overwrite output files
-stats print progress report during encodingPer-file options (input and output):
-f <fmt> force container format (auto-detected otherwise)
-t <duration> stop transcoding after specified duration
-to <time_stop> stop transcoding after specified time is reached
-ss <time_off> start transcoding at specified timePer-file options (output-only):
-metadata[:<spec>] <key=value> add metadataPer-stream options:
-c[:<stream_spec>] <codec> select encoder/decoder ('copy' to copy stream without reencoding)
-filter[:<stream_spec>] <filter_graph> apply specified filters to audio/videoVideo options:
-r[:<stream_spec>] <rate> override input framerate/convert to given output framerate (Hz value, fraction or abbreviation)
-aspect[:<stream_spec>] <aspect> set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)
-vn disable video
-vcodec <codec> alias for -c:v (select encoder/decoder for video streams)
-vf <filter_graph> alias for -filter:v (apply filters to video streams)
-b <bitrate> video bitrate (please use -b:v)Audio options:
-aq <quality> set audio quality (codec-specific)
-ar[:<stream_spec>] <rate> set audio sampling rate (in Hz)
-ac[:<stream_spec>] <channels> set number of audio channels
-an disable audio
-acodec <codec> alias for -c:a (select encoder/decoder for audio streams)
-ab <bitrate> alias for -b:a (select bitrate for audio streams)
-af <filter_graph> alias for -filter:a (apply filters to audio streams)Subtitle options:
-sn disable subtitle
-scodec <codec> alias for -c:s (select encoder/decoder for subtitle streams)
相关文章:

ffmpeg将mp4转换为swf
文章目录 ffmpeg安装、配置java运行报错 Cannot run program "ffmpeg" ffmpeg命令mp4转为swf示例 ### ffmpeg -i input.mkv -b:v 600 -c:v libx264 -vf scale1920:1080 -crf 10 -ar 48000 -r 24 output.swfmkv转为swf示例 其他文档命令参数简介 需要将mp4转换为swf&a…...

论文学习 --- RL Regret-based Defense in Adversarial Reinforcement Learning
前言 个人拙见,如果我的理解有问题欢迎讨论 (●′ω`●) 原文链接:https://www.ifaamas.org/Proceedings/aamas2024/pdfs/p2633.pdf 研究背景 深度强化学习(Deep Reinforcement Learning, DRL)在复杂和安全关键任务中取得了显著成果,例如自动驾驶。然而,DRL策略容易受…...

【Linux小命令】一文讲清ldd命令及使用场景
一文讲清ldd命令及使用场景 前言下面进入正题:ldd命令 前言 博主今天ubuntu编译go项目出来的一个可执行文件,放centos运行发现居然依赖于XXlib库。然后我一下就想到两个系统库版本不一致,重编。换系统,导项目,配环境……...

自费5K,测评安德迈、小米、希喂三款宠物空气净化器谁才是高性价比之王
最近,家里的猫咪掉毛严重,简直成了一个活生生的蒲公英,家中、空气中各处都弥漫着猫浮毛甚至所有衣物都覆盖着一层厚厚的猫毛。令人难以置信的是,有时我甚至在抠出的眼屎中都能发现夹杂着几根猫毛。真的超级困扰了。但其实最空气中…...

1373. 二叉搜索子树的最大键值和
Problem: 1373. 二叉搜索子树的最大键值和 文章目录 思路解题方法复杂度Code 思路 解决这个问题的关键在于采用深度优先搜索(DFS)策略,并结合树形动态规划的思想。我们需要设计一个递归函数,它不仅能够遍历整棵树,还能…...

基于java + Springboot 的二手物品交易平台实现
目录 📚 前言 📑摘要 📑系统架构 📚 数据库设计 📚 系统功能的具体实现 💬 登录模块 首页模块 二手商品轮播图添加 💬 后台功能模块 二手商品商品列表 添加二手商品商品 添加购物车 &a…...

Shopee本土店选品有什么技巧?EasyBoss ERP为你整理了6个高效选品的方法!
电商圈有句话叫:七分靠选品,三分靠运营,选品对了,事半功倍,选品错了,功亏一篑! 很多卖家都会为选品发愁,特别对于Shopee本土店卖家来说,要囤货到海外仓,如果…...

3D在线展览馆的独特魅力,技术如何重塑展览业的未来?
在数字化和虚拟现实技术迅猛发展的今天,3D在线展览馆已经成为一种颇具前景的创新形式。搭建3D在线展览馆不仅能够突破传统展览的时空限制,还能为参观者提供身临其境的体验,极大地提升展示效果和用户互动。 一、3D在线展览馆的意义 1、突破时空…...

基于SpringBoot的藏区特产销售平台
你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言: Java 数据库: MySQL 技术: SpringBoot框架 工具: MyEclipse 系统展示 首页 个人中心 特产信息管理 订单管…...

hudi系列-schema evolution(一)
hudi+flink在非schema on read模式下也表现出了支持一部分的schema evolution功能,本篇中测试一下在非schema on read模式下,发生各种列变更情况时数据写入与读取情况。 flink 1.14.5hudi 0.13.1mor表思路: 选择mor表是因为它的数据文件有avro和parquet两种格式,能覆盖得更…...

Redis-实战篇-缓存雪崩
文章目录 1、缓存雪崩2、解决方案: 1、缓存雪崩 缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。 2、解决方案: 给不同的key的TTL添加随机值利用Redis集群提高服务的可用性…...

线性代数|机器学习-P18快速下降奇异值
文章目录 1. 为什么要低秩矩阵1.1 矩阵A的秩定义1.2 矩阵压缩PCA 2. 低秩矩阵图像处理3. 秩的相关性质3.1 秩的公差轴表示3.2 Eckart-Young 定理 4. 低秩矩阵4.1 低秩矩阵描述4.2 函数低秩矩阵形式4.3通项小结4.4 函数采样拟合 5. 西尔维斯特方程5.1 希尔伯特矩阵举例5.2 范德蒙…...

本地离线模型搭建指南-中文大语言模型底座选择依据
搭建一个本地中文大语言模型(LLM)涉及多个关键步骤,从选择模型底座,到运行机器和框架,再到具体的架构实现和训练方式。以下是一个详细的指南,帮助你从零开始构建和运行一个中文大语言模型。 本地离线模型搭…...

【代码随想录】【算法训练营】【第51天】 [115]不同的子序列 [583]两个字符串的删除操作 [72]编辑距离
前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 51,周四,又是不能坚持的一天~ 题目详情 [115] 不同的子序列 题目描述 115 不同的子序列 解题思路 前提: 思路: 重点: 代码实现 …...

24下半年软考集合!30s打破信息差!
01软考是什么? 软考,全称为计算机技术与软件专业技术资格(水平)考试,也称为计算机资格考试,是由国家人力资源和社会保障部、工业和信息化部领导的国家级考试。它既是国家级资格证书,又是职称资…...

如何在Xcode中设置库路径
在Xcode中设置库路径的过程可以分为以下几个步骤,下面将结合参考文章中的信息,以清晰、分点表示和归纳的方式给出指导: 1. 确定库的类型和来源 动态库(.dylib或.framework)或静态库(.a)&#…...

小程序的基本使用
【 0 】前言 【 0 】 这个就是js代码的存放地方 app.json // pages/banner/banner.js Page({/*** 页面的初始数据*/data: {},/*** 生命周期函数--监听页面加载*/onLoad(options) {},/*** 生命周期函数--监听页面初次渲染完成*/onReady() {},/*** 生命周期函数--监听页面显示…...

[保姆级教程]uniapp设置字体引入字体格式
文章目录 在 UniApp 中设置和引入自定义字体(如 .ttf、.woff、.woff2 等格式)通常涉及几个步骤。 准备字体文件: 首先,你需要有字体文件。这些文件通常以 .ttf、.woff 或 .woff2 格式提供。确保有权使用这些字体,并遵守…...

【Webpack】前端工程化之Webpack与模块化开发
目 录 前言模块化开发Stage1 - 文件划分方式Stage2 - 命名空间方式Stage3 - IIFE(立即调用函数表达式)Stage 4 - IIFE 依赖参数模块化的标准规范 使用Webpack实现模块化打包安装WebpackWebpack基本配置Webpack构建流程Webpack热更新Webpack打包优化 前言…...

【Android】记录在自己的AMD处理器无法使用Android studio 虚拟机处理过程
文章目录 问题:无法在AMD平台打开Android studio 虚拟机,已解决平台:AMD 5700g系统:win10专业版1、在 amd平台上使用安卓虚拟机需要安装硬件加速器2、关闭win10上的系统服务 问题:无法在AMD平台打开Android studio 虚拟…...

LearnOpenGL - Android OpenGL ES 3.0 使用 FBO 进行离屏渲染
系列文章目录 LearnOpenGL 笔记 - 入门 01 OpenGLLearnOpenGL 笔记 - 入门 02 创建窗口LearnOpenGL 笔记 - 入门 03 你好,窗口LearnOpenGL 笔记 - 入门 04 你好,三角形OpenGL - 如何理解 VAO 与 VBO 之间的关系LearnOpenGL - Android OpenGL ES 3.0 绘制…...

人工智能虚拟仿真系统,解决算法难、编程难、应用场景难三大难题
近年来,人工智能技术迅猛发展,广泛渗透至各行业,市场份额持续扩大,预示着智能化转型的广阔前景。该行业本质上属于知识高度密集型,近年来的迅猛发展进一步加剧了对专业人才的迫切需求。 然而,我国目前在人工…...

CTE(公共表表达式)和视图在查询时的性能影响
在SQL查询优化和数据库设计中,CTE(公共表表达式)和视图都是常用的工具。尽管它们在功能和使用场景上有很多相似之处,但在查询性能方面可能存在显著差异。本文将探讨CTE和视图在查询时的性能影响,帮助您在实际项目中做出…...

新能源行业必会基础知识-----电力市场概论笔记-----绪论
新能源行业知识体系-------主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/139946830 目录 1. 电力市场的定义2. 对传统电力系统理论的挑战 1. 电力市场的定义 1. 我国电力市场的进程 我国新一轮电力体制改革的5大亮点&…...

003 SpringBoot操作ElasticSearch7.x
文章目录 5.SpringBoot集成ElasticSearch7.x1.添加依赖2.yml配置3.创建文档对象4.继承ElasticsearchRepository5.注入ElasticsearchRestTemplate 6.SpringBoot操作ElasticSearch1.ElasticsearchRestTemplate索引操作2.ElasticsearchRepository文档操作3.ElasticsearchRestTempl…...

npm install报错Maximum call stack size exceeded
npm 报错 方案: npm cache clean --force npm install...

第1章 基础知识
第1章 基础知识 1.1 机器语言 机器语言就是机器指令的集合,机器指令展开来讲就是一台机器可以正确执行的命令 1.2 汇编语言的产生 汇编语言的主题是汇编指令。汇编指令和机器指令的差别在于指令的表示方法上,汇编指令是机器指令便于记忆的书写格式。…...

python脚本 限制 外部访问 linux服务器端口
注意:该脚本会清空linux防火墙的filter表的规则和用户自定义链路 脚本的效果是将端口限制为仅服务器内部访问 可以提供ip地址白名单 具体脚本: #!/usr/bin/python3 import argparse, subprocess, sys, redef popen(cmd):global resulttry:result su…...

Redis-哨兵模式-主机宕机-推选新主机的过程
文章目录 1、为哨兵模式准备配置文件2、启动哨兵3、主机6379宕机3.4、查看sentinel控制台日志3.5、查看6380主从信息 4、复活63794.1、再次查看sentinel控制台日志 1、为哨兵模式准备配置文件 [rootlocalhost redis]# ll 总用量 244 drwxr-xr-x. 2 root root 150 12月 6 2…...

游戏工厂:AI(AIGC/ChatGPT)与流程式游戏开发
游戏工厂:AI(AIGC/ChatGPT)与流程式游戏开发 码客 卢益贵 ygluu 关键词:AI(AIGC、ChatGPT、文心一言)、流程式管理、好莱坞电影流程、电影工厂、游戏工厂、游戏开发流程、游戏架构、模块化开发 一、前言…...