当前位置: 首页 > news >正文

ffmpeg学习记录

软件安装包版本

https://www.ffmpeg.org/releases/

一 在centos7.2 上安装ffmpeg(待查证)

1. 安装依赖

sudo yum install -y yum-utils epel-release
sudo yum groupinstall -y 'Development Tools'
sudo yum install -y nasm yasm libass-devel libvpx-devel libvpx-tools libwebp-devel libx264-devel libx265-devel libtheora-devel x264-devel x265-devel ffmpeg-devel

2. 下载ffmpeg源码

cd /usr/local/src
sudo wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
sudo tar -xvf ffmpeg-snapshot.tar.bz2
cd ffmpeg

3. 配置ffmpeg

sudo ./configure --prefix="/usr/local" --enable-gpl --enable-libass --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libtheora --enable-nonfree --enable-openssl --enable-shared --enable-version3

4. 编译安装

sudo make
sudo make install

5. 验证安装

ffmpeg -version

6.创建软连接(附加)

sudo ln -s /usr/local/bin/ffmpeg /usr/bin/ffmpeg
sudo ln -s /usr/local/bin/ffprobe /usr/bin/ffprobe

方式二:下载源码包

压缩包地址 https://www.ffmpeg.org/releases/

wget https://www.ffmpeg.org/releases/ffmpeg-3.4.13.tar.gztar -zxvf ffmpeg-3.4.13.tar.gz
  1. 指定安装目录

    安装路径 “/usr/local/ffmpeg”

cd ffmpeg-5.1./configure --prefix=/usr/local/ffmpeg./configure --prefix=/usr/local/ffmpeg --enable-openssl --disable-x86asmmake && make install
  1. 配置变量

    vi /etc/profile在最后PATH添加环境变量:export PATH=$PATH:/usr/local/ffmpeg/bin
    

4.使配置变量生效

source /etc/profile

5.测试ffmpeg是否成功

ffmpeg -version

二 ffmpeg 的使用教程

1. FFmpeg 学习资料

中文官网: https://ffmpeg.p2hp.com/download.html

博客学习网址:
https://blog.csdn.net/qq_56591814/article/details/144864353

https://blog.csdn.net/Dontla/article/details/135371373

https://blog.csdn.net/p6448777/article/details/150421707?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7ECtr-1-150421707-blog-144864353.235%5Ev43%5Epc_blog_bottom_relevance_base6&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7ECtr-1-150421707-blog-144864353.235%5Ev43%5Epc_blog_bottom_relevance_base6&utm_relevant_index=2

1. Linux上查看ffmpeg安装位置

  1. which ffmpeg
  2. type -a ffmpeg
  3. whereis ffmpeg
  4. find / -name ffmpeg 2>/dev/null
  5. dpkg -l ffmpeg
    rmp -ql ffmpeg
  6. ls /usr/bin/ffmpeg

2. 测试 ffmpeg 的使用

  1. 使用ffmpeg将 MP4 转换为 MU38
ffmpeg -i /data4t/wwwroot/xcx.3shi1.com/JQ/tp/public/11.mp4 
-f segment -segment_time 10 -segment_format mpegts 
-segment_list /data4t/wwwroot/t.3shi1.cn/movietrs/202511/04/1762237060.m3u8 
-c copy -bsf:v h264_mp4toannexb 
-map 0 /data4t/wwwroot/t.3shi1.cn/movietrs/202511/04//1762237060-%04d.ts
参数说明:
-i : 这个是输入文件参数,后面直接跟输入文件的路径
-c copy : 这个选项告诉ffmpeg使用复制流的方式来处理视频和音频数据,不进行重新编码
-bsf:v  h264_mp4toannexb 这个选项是比特流过滤器(Bitstream Filter)的简写,用于将 H.264 NAL 单元格式从 MP4 封装中的起始码前缀(start code prefix)转换为 Annex B 格式。Annex B 格式通常用于裸流文件(raw stream files),比如用于网络传输或某些特定的视频处理需求。
-map 0: 这个选项是用来选择输入文件中的流.0 表示第一个输入文件,-map 0 表示复制所有的流-f segment :指定ffmpeg的输出格式为"segment".意味着ffmpeg会将暑期视频分割成多个小片段,而不是生成一个单一的视频文件
-segment_time 10:这个参数指定了每个视频片段的时长,单位是秒. 10 表示每个片段长度为 10秒, 如果有个1分钟的视频,他将被分割成6个10秒.
-segment_format mpegts: 这个参数指定了输出视频片段的格式.mpegts 表示输出格式为 MPEG_TS(MPEG)传输流,这是一种广泛用于流媒体的格式.这意味着每个视频片段将是一个独立的 MPEG-TS文件.
-segment_list这个参数用于生成一个包含所有分割片段列表的文件. 你可以指定一个文件名,例如 -segment_list playlist.m3u8,这将创建一个 M3U8 播放列表文件,其中包含了所有 MPEG-TS 片段的引用,通常用于流媒体播放。这里,output%03d.ts 是输出文件名的模式,
%03d 是一个占位符,表示数字将被格式化为至少三位数(例如,output001.ts, output002.ts 等)。
这确保了文件名的顺序性和唯一性。

3. 获取视频时长的方式

  1. ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 your_video.mp4
  2. ffmpeg -i your_video.mp4 2>&1 | grep Duration
  3. ffmpeg -i your_video.mp4 -f null - 2>&1 | grep Stream

4. 获取视频封面

ffmpeg -i input.mp4 -ss 00:00:05 -frames:v 1 output.jpg
2)
ffmpeg -i input.mp4 -vf ‘select=eq(pict_type,I),fps=1’ -frames:v 1 output.jpg
3)

for file in *.mp4; do
ffmpeg -i "$file" -ss 00:00:05 -frames:v 1 "${file%.mp4}.jpg"
done

4 .学习记录

  1. 输出其他格式
    ffmpeg -i input.avi output.mp4

  2. 将输出文件的视频比特率设置为64千比特每秒。
    ffmpeg -i input.avi -b:v 64k -bufsize 64k output.mp4

  3. 将输出文件的帧率强制设置为24帧每秒。
    ffmpeg -i input.avi -r 24 output.mp4

  4. 将输入文件(仅适用于原始格式)的帧率强制设置为1帧/秒,将输出文件的帧率设置为24帧/秒:
    ffmpeg -r 1 -i input.m2v -r 24 output.mp4

  5. 基本配置

# 查看支持的编解码器
ffmpeg -codecs 
# 查看支持的文件格式
ffmpeg -formats
# 查看支持的滤镜
ffmpeg -filters
# 查看支持的协议
ffmpeg -protocols 
  1. 常用配置
# 日志级别
ffmpeg -loglevel quiet|panic|fatal|error|warning|info|verbose|debug|trace
# 覆盖输出文件
ffmpeg -y -i input.mp4 output.avi   -y表示自动覆盖已经存在的输出文件
# 指定线程数
ffmpeg -threads 4 -i input.mp4 output.avi
  1. 常用命令详解
# 音频格式转换
wav -> pcm
ffmpeg -i input.wav -f s16le -ar 16000 -ac 1 -acodec pcm_s16le output.pcm参数说明:
-f s16le:指定输出格式为有符号16位小端PCM
-ar 16000:设置采样率为16kHz
-ac 1:设置为单声道
-acodec pcm_s16le:指定音频编解码器为PCM 16位小端PCM 转 WAV
MP3 转 WAV
WAV 转 MP3
http://www.dtcms.com/a/577331.html

相关文章:

  • 建站网站破解版什么是网站建设需求分析
  • Lua 面向对象编程完全指南:从元表到私密性,解锁灵活封装技巧
  • linux用户及权限管理
  • 北京手机网站建设外包WordPress里面自定义功能
  • 网站建设怎么更改图片网站服务器建设合同
  • 快速理解卷积神经网络CNN
  • IPD PDT 核心组成员来源及扩展组配置说明
  • 51项目分享:基于51单片机仓库环境检测系统
  • Vivado 2015在WIN11电脑综合一直卡在Translating synthesized netlist不动。
  • 绘制软件的状态机图
  • 基于python与streamlit构建的内网聊天应用
  • 对于数据结构:堆的超详细保姆级解析—上
  • linux网站建设论文针对网站做搜索引擎做优化
  • 基于超像素和基于图论的图像分割方法
  • 【算法训练营 · 补充】LeetCode Hot100(中)
  • 新能源网站开发网站没有做301定向
  • 【Ubuntu】新服务器配置完全指南
  • 2026年PMI-PBA商业分析师报考时间+条件全解析
  • 计算机图形学·9 几何学
  • 基于MATLAB的梯度下降法实现
  • dw制作简单网站模板下载网站建设工作会议讲话
  • 如何优化多表查询sql?
  • 64QAM信号的数字预失真处理(MATLAB实现)
  • 网站模板下载之后如何修改公司官网怎么设计
  • 崇信县门户网站留言首页杭州做商务网站
  • 只出现一次的数字 II(二)
  • Linux系统编程:(六)深入理解 Linux 软件包管理器——从原理到 yum 实战全攻略
  • NoSql数据库概念
  • OCR 新范式!DeepSeek 以「视觉压缩」替代传统字符识别;Bald Classification数据集助力高精度人像分类
  • jQuery 入门学习教程,从入门到精通,AJAX在jQuery中的应用 —— 详细知识点与实战案例(14)