如何ffmpeg通过降低质量来减小视频的大小(自然而然地尽可能减少,因为我需要它在没有太多可用空间的移动设备上运行)?
我忘了说当视频可以使用字幕(*.srt 或*.sub)时,我也想转换它们以适应转换后的视频文件的参数。
开源或活跃的开发者社区通常需要在线发布大型视频片段。(聚会视频、露营、技术讲座……)因为我是一名开发人员而不是一名摄像师,所以我不想在高级 Vimeo 帐户上支付额外的费用。那么我如何获取 12.5 GB (1:20:00) MPEG 技术谈话视频并将其切成 00:10:00 片段以便轻松上传到视频共享站点?
我正在使用 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 呢?
我有一个 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:46和00:01:45.02 之间。
这可能吗?
我有两个视频剪辑。两者都是 640x480,持续 10 分钟。一个包含背景音频,另一个包含歌唱演员。我想创建一个大小为 1280x480 的 10 分钟视频剪辑(换句话说,我想将视频并排放置并同时播放,混合来自两个剪辑的音频)。我试图弄清楚如何使用 ffmpeg/avidemux 来做到这一点,但到目前为止我还是空的。当我搜索合并时,它们都指连接。
有什么建议吗?
我找到了一些视频,看起来像这样。
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)
我尝试将它用于音频文件,但只有第一个音频文件包含实际音频,其他音频文件无声,除此之外它很好,它每秒制作一个新的音频文件。有谁知道要修改什么才能使用音频文件或其他可以执行相同操作的命令?
我正在尝试将我的视频库转换为 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可以为每个视频自动调整任何需要调整的参数。
我发现这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吗?
我发现--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) 使用什么命令行将 avi 转换为 mp4,但不破坏帧大小并使文件像原始大小一样小或大一点,与 mp4 到 avi 相同?每当我尝试将其转换为 2 GB 时
我想将特定文件夹中的所有 *.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)
如何达到我的目标?
有人建议我将未经修改的 X 显示的副本定向到一个文件,然后将该文件转换为通用视频文件。我将使用哪些命令在 Kubuntu 系统上执行此操作?(编辑:他说了一些关于将显示端口附加到文件的内容。)如果不可能,对于不依赖于快速硬件的优质屏幕录制,我的最佳选择是什么?
背景:我尝试将 avconv 与 -f x11grab 和一些 GUI 程序一起使用。但是,无论我尝试什么,生成的视频要么有伪影/模糊,要么断断续续(丢失帧)。这可能是由于 CPU/内存限制。
目标:
我已经尝试过的:
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.
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 ×10
video ×3
audio ×2
avconv ×2
avidemux ×1
bash ×1
centos ×1
command-line ×1
compression ×1
conversion ×1
grep ×1
kubuntu ×1
shell-script ×1
terminal ×1
trim ×1
x11 ×1