标签: ffmpeg

如何使用 ffmpeg 减小视频的大小?

如何ffmpeg通过降低质量来减小视频的大小(自然而然地尽可能减少,因为我需要它在没有太多可用空间的移动设备上运行)?

我忘了说当视频可以使用字幕(*.srt 或*.sub)时,我也想转换它们以适应转换后的视频文件的参数。

compression ffmpeg video

562
推荐指数
7
解决办法
61万
查看次数

如何使用 ffmpeg 将 MPEG 视频分成 10 分钟的块?

开源或活跃的开发者社区通常需要在线发布大型视频片段。(聚会视频、露营、技术讲座……)因为我是一名开发人员而不是一名摄像师,所以我不想在高级 Vimeo 帐户上支付额外的费用。那么我如何获取 12.5 GB (1:20:00) MPEG 技术谈话视频并将其切成 00:10:00 片段以便轻松上传到视频共享站点?

ffmpeg video-editing

123
推荐指数
6
解决办法
17万
查看次数

如何grep标准错误流(stderr)?

我正在使用 ffmpeg 来获取音频剪辑的元信息。但我无法grep它。

    $ ffmpeg -i 01-Daemon.mp3  |grep -i Duration
    FFmpeg version SVN-r15261, Copyright (c) 2000-2008 Fabrice Bellard, et al.
      configuration: --prefix=/usr --bindir=/usr/bin 
      --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib
      --mandir=/usr/share/man --arch=i386 --extra-cflags=-O2 
      ...
Run Code Online (Sandbox Code Playgroud)

我检查过,这个 ffmpeg 输出被定向到 stderr。

$ ffmpeg -i 01-Daemon.mp3 2> /dev/null
Run Code Online (Sandbox Code Playgroud)

所以我认为 grep 无法读取错误流来捕获匹配的行。我们如何启用 grep 读取错误流?

使用nixCraft链接,我将标准错误流重定向到标准输出流,然后 grep 工作。

$ ffmpeg -i 01-Daemon.mp3 2>&1 | grep -i Duration
  Duration: 01:15:12.33, start: 0.000000, bitrate: 64 kb/s
Run Code Online (Sandbox Code Playgroud)

但是如果我们不想将 stderr 重定向到 stdout 呢?

grep io-redirection ffmpeg

121
推荐指数
8
解决办法
10万
查看次数

使用开始和停止时间修剪音频文件

我有一个 FFmpeg 命令来修剪音频:

ffmpeg -ss 01:43:46 -t 00:00:44.30 -i input.mp3 output.mp3
Run Code Online (Sandbox Code Playgroud)

我使用此命令的问题是该选项-t需要从01:43:46 开始的持续时间(以秒为单位)。我想使用开始/停止时间修剪音频,例如在01:43:4600:01:45.02 之间

这可能吗?

ffmpeg audio trim

68
推荐指数
1
解决办法
8万
查看次数

将两个视频剪辑合并为一个,并将它们并排放置

我有两个视频剪辑。两者都是 640x480,持续 10 分钟。一个包含背景音频,另一个包含歌唱演员。我想创建一个大小为 1280x480 的 10 分钟视频剪辑(换句话说,我想将视频并排放置并同时播放,混合来自两个剪辑的音频)。我试图弄清楚如何使用 ffmpeg/avidemux 来做到这一点,但到目前为止我还是空的。当我搜索合并时,它们都指连接。

有什么建议吗?

ffmpeg video avidemux

66
推荐指数
4
解决办法
10万
查看次数

如何将音频文件拆分为多个?

我找到了一些视频,看起来像这样。

ffmpeg -i * -c:v libx264 -crf 22 -map 0 -segment_time 1 -g 1 -sc_threshold 0 -force_key_frames "expr:gte(t,n_forced*9)" -f segment output%03d.mp4
Run Code Online (Sandbox Code Playgroud)

我尝试将它用于音频文件,但只有第一个音频文件包含实际音频,其他音频文件无声,除此之外它很好,它每秒制作一个新的音频文件。有谁知道要修改什么才能使用音频文件或其他可以执行相同操作的命令?

ffmpeg audio

64
推荐指数
3
解决办法
8万
查看次数

在 x265 (HEVC) 中重新编码视频库,没有质量损失

我正在尝试将我的视频库转换为 HEVC 格式以获得空间。我对库中的所有视频文件运行了以下命令:

#!/bin/bash
for i in *.mp4;
do 
    #Output new files by prepending "X265" to the names
    avconv -i "$i" -c:v libx265 -c:a copy X265_"$i"
done
Run Code Online (Sandbox Code Playgroud)

现在,大多数视频转换良好,质量与以前相同。但是,一些质量非常高的视频(例如,一部 5GB 的电影印刷品)会降低质量——视频都是像素化的。

我不知道在这种情况下该怎么做。我需要修改crf命令行中的参数吗?或者是其他东西?

问题是,我正在进行批量转换。所以,我需要一种方法,avconv可以为每个视频自动调整任何需要调整的参数。

更新-1

我发现这crf是我需要调整的旋钮。默认的 CRF 是 28。为了更好的质量,我可以使用小于 28 的值。例如:

avconv -i input.mp4 -c:v libx265 -x265-params crf=23 -c:a copy output.mp4
Run Code Online (Sandbox Code Playgroud)

但是,问题是对于某些视频,CRF 值 28 就足够了,而对于某些视频,则需要较低的 CRF。这是我必须通过转换大视频的小部分来手动检查的东西。但是在批量转换中,我将如何手动检查每个视频?他们有什么办法avconv可以根据输入的视频智能调整CRF吗?

更新-2

我发现--losslessx265中有一个选项:http : //x265.readthedocs.org/en/default/lossless.html

但是,我不知道如何正确使用它。我尝试以下列方式使用它,但它产生了相反的结果(视频更加像素化):

avconv -i input.mp4 -c:v libx265 -x265-params lossless -c:a copy …
Run Code Online (Sandbox Code Playgroud)

ffmpeg video video-encoding avconv

58
推荐指数
3
解决办法
12万
查看次数

使用 avi 转 mp4 使用 ffmpeg 进行编码

使用什么命令行将 avi 转换为 mp4,但不破坏帧大小并使文件像原始大小一样小或大一点,与 mp4 到 avi 相同?每当我尝试将其转换为 2 GB 时

command-line terminal centos ffmpeg conversion

50
推荐指数
3
解决办法
11万
查看次数

使用 FFmpeg 将所有 *flac 转换为 *.mp3 的 Bash 脚本?

我想将特定文件夹中的所有 *.flac 转换为 *.mp3。

这是我尝试过的,但不起作用:

# change to the home directory
cd ~/music
# convert all *.flac files
ffmpeg -i *.flac -acodec libmp3lame *.mp3
# (optional: check whether there are any errors printed on the terminal)
sleep 60
Run Code Online (Sandbox Code Playgroud)

如何达到我的目标?

bash ffmpeg shell-script

35
推荐指数
3
解决办法
10万
查看次数

如何获得近乎完美的屏幕录制质量?

有人建议我将未经修改的 X 显示的副本定向到一个文件,然后将该文件转换为通用视频文件。我将使用哪些命令在 Kubuntu 系统上执行此操作?(编辑:他说了一些关于将显示端口附加到文件的内容。)如果不可能,对于不依赖于快速硬件的优质屏幕录制,我的最佳选择是什么?

背景:我尝试将 avconv 与 -f x11grab 和一些 GUI 程序一起使用。但是,无论我尝试什么,生成的视频要么有伪影/模糊,要么断断续续(丢失帧)。这可能是由于 CPU/内存限制。

目标:

  • 视频质量不能与直接在屏幕上观看会话有明显不同,因为目的是演示动画应用程序。
  • 最终视频必须采用可发送给 Windows 用户并在网络上使用的通用格式。我认为 H.264 MP4 应该可以工作。
  • 解决方案不应该假设很多先验知识。我熟悉命令行和基本的Linux命令,但我还在学习Linux,对视频编解码器了解不多。

我已经尝试过的:

  • 迄今为止最好的命令:ffmpeg -f x11grab -s xga -r 30 -i :0.0 -qscale 0.1 -vcodec huffyuv grab.avi,然后使用ffmpeg -i grab.avi -sameq -vcodec mpeg4 grab.mp4.
    • 图像质量很好,但在我的测试系统上它落后于计算机。在更快的目标系统上它不会滞后,但显然会跳过帧,使视频不是很流畅
    • 我仍在尝试弄清楚如何将grab.avi 文件保存到SHM 以查看是否有帮助。
  • 使用伊斯坦布尔和 RecordMyDesktop GUI 记录器
  • 简单命令:avconv -f x11grab -s xga -r 25 -i :0.0 simple.mpg使用 avconv 版本 0.8.3-4:0.8.3-0ubuntu0.12.04.1
  • 添加-codec:copy(失败:Requested output format …

ffmpeg x11 screencasting kubuntu avconv

34
推荐指数
2
解决办法
3万
查看次数