标签: ffmpeg

使用 ffmpeg 从视频中提取关键帧的索引

我正在使用 ffmpeg 从视频中提取关键帧。这是命令:

ffmpeg -i test2.mp4 -vf select='eq(pict_type\,I)' -vsync 2 -s 160x90 -f image2 thumbnails-%02d.jpeg
Run Code Online (Sandbox Code Playgroud)

如何获取视频中提取的每个关键帧的索引?例如,对于第一个 I 帧,索引将为 0,对于第二个 I 帧,索引将为 24,依此类推。

ffmpeg

18
推荐指数
1
解决办法
4万
查看次数

Linux:如何从视频中提取帧?(无损)

我读过关于使用程序,如一些答案和文章VLCMPlayerffmpeg,等,但没有我见过的方法是“无损”。他们不会捕捉每一帧。我想从视频中提取每一帧作为图像(100% 质量,我不想丢失任何细节),所以理论上可以拍摄这些图像并重新创建视频文件而无法区分原版(当然不包括缺少音频)。

如果我可以指定从中抓取帧的开始和结束时间,则奖励积分,因此我不必事先裁剪视频文件。

video linux ffmpeg framerate

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

使用 FFMPEG 减少生成的 GIF 大小

我正在开发将mp4文件转换为gifsusing 的android 应用程序ffmpeg。问题是生成的 gif 尺寸很大。另一个问题是,我不能使用其他任何东西ffmpeg(例如imagemagickfor convert,甚至palletes现在)来减少生成的 gif 大小。

这是我正在使用的命令: ffmpeg -y -i file.mp4 -pix_fmt rgb24 -r 10 -s 320x480 file.gif

那么有没有其他方法可以优化转换?

video gif ffmpeg conversion

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

在不改变胶片速度/持续时间的情况下改变帧率

我犯了一个错误,我需要将视频从 30 fps 重新编码为 24fps,同时保持相同的速度/持续时间。

有谁知道我如何在 FFMPEG 中做到这一点?

我尝试更改 -r 值,这会更改速率,但会更改视频长度。

谢谢

ffmpeg

18
推荐指数
1
解决办法
4万
查看次数

如何改变音频频率?

我想更改音频文件的频率。意思是:整个文件应该听起来(比方说)高一个八度或低一个八度。怎么做?使用ffmpeg或其他命令行开源工具会更可取。

audio ffmpeg bitrate resampling

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

如何使用 ffmpeg 将元数据添加到 AAC 文件而无需重新编码?

我正在使用 ffmpeg 从视频文件中提取音频流:

ffmpeg -i video.mp4 -vn -acodec copy audio.aac
Run Code Online (Sandbox Code Playgroud)

这会产生一个干净的音频文件,但没有任何元数据。

要添加元数据,ffmpeg 有一个命令行选项:

ffmpeg -i video.mp4 -vn -acodec copy -metadata title="My Title" audio.aac
Run Code Online (Sandbox Code Playgroud)

这运行没有错误,但是当使用 ffprobe 检查输出文件时,它根本没有元数据标签。

如果将输出容器更改为 mp4,则可以设置元数据并出现在输出文件中:

ffmpeg -i video.mp4 -vn -acodec copy -metadata title="My Title" audio.mp4
Run Code Online (Sandbox Code Playgroud)

这是有趣的一点;如果我使用 Banshee 编辑现有 .aac 文件的元数据,然后使用 ffmpeg 以相同的方式处理文件,原始元数据将成功复制到新的 .aac 文件。

ffmpeg -i metadata.aac -vn -acodec copy audio.aac
Run Code Online (Sandbox Code Playgroud)

但是,尝试更改元数据无效:

ffmpeg -i metadata.aac -vn -acodec copy -metadata title="My Title" audio.aac
Run Code Online (Sandbox Code Playgroud)

因此,似乎 .aac 容器可以保存元数据,而 ffmpeg 可以将其从输入复制到输出,但在使用复制编解码器时无法更改它。

有没有人知道一种让 ffmpeg 在不重新编码的情况下更改 aac 容器中的元数据的方法?

或者,在处理文件后,我可以使用另一个通用工具来设置元数据吗?

非常感谢。克里斯。

metadata ffmpeg aac

17
推荐指数
1
解决办法
4万
查看次数

使用 VLC 或 FFmpeg 在视频中提取“每 10 帧之一”

我正在尝试为科学目的提取视频的“每 10 帧中恰好有 1 帧”(即提取 1 ,保留 9 然后重复)。视频为 105 帧,3.5 秒,29.97fps(h.264,.mov,尼康 D3100 出品)。

我已经上传到这里了

VLC

下面的命令应该产生 10 帧,但它只产生 6 个图像。我尝试了不同的场景比例,但它们都没有产生正确的帧数(甚至接近正确)。

vlc 1.mov --video-filter=scene --vout=dummy --scene-ratio=10 --scene-prefix=img- --scene-path=. vlc://quit
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我是什么问题吗?

FFmpeg

FFmpeg 似乎没有完全符合我的目的的命令。下面的命令每秒提取 3 帧,但由于 FPS 不完全是 30(而是 2.97),这不会为我产生正确的结果。

此外,即使使用此命令,FFmpeg 也不会给出正确的帧数。对于 3.5 秒的视频,我预计最多 10 帧,但我得到的是 12 帧!

ffmpeg -i 1.mov -y -an -sameq  -r 3 -f image2 -vcodec mjpeg %03d.jpg 
Run Code Online (Sandbox Code Playgroud)

我怎样才能达到我想要的?

video vlc-media-player ffmpeg extract frame

17
推荐指数
1
解决办法
4万
查看次数

如何将一系列 PNG 图像转换为 YouTube 视频?

我有一个 PNG 序列(这里是一个样本),我用 ffmpeg 将其转换为视频:

ffmpeg -r 10 -i image%03d.png -s 1380x720 -c:v libx264 -qscale 10 -r 30
       basf_merck_libx264.mp4
Run Code Online (Sandbox Code Playgroud)

使用 VLC,它看起来很漂亮,但在youtube 上我看到的都是灰色的!?为什么?

在此处输入图片说明

过了一会儿,会显示一个带有彩色斑点的单杠:

在此处输入图片说明

当我将“-pix_fmt yuv420p”添加到命令中时,youtube 会正确显示剪辑。但是我可以选择的最高质量是 480p,为此目的太低了。

ffmpeg 输出

C:\Users\Raffael\Documents\proj>ffmpeg -r 10 -i image%03d.png -s 1380x720 -c:v libx264 -qscale 10 -r 30 basf_merck_libx264.mp4
ffmpeg version N-48785-g2ea3f37 Copyright (c) 2000-2013 the FFmpeg developers
  built on Jan 12 2013 20:45:33 with gcc 4.7.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnu
tls --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype …
Run Code Online (Sandbox Code Playgroud)

png youtube ffmpeg

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

如何更改 FFmpeg 中的位深度?

我需要 FFmpeg 来获取音频源并将其重新编码为 16 位 FLAC。

如何强制 16 位 FLAC 输出?

./ffmpeg -i http://7359.live.streamtheworld.com:80/CONTINENTALAAC_SC -vn -ac 1 -ar 16000 -acodec flac -map 0 -f segment -segment_list /flac/out.list -segment_time 00:00:12.00 /flac/out%03d.flac
ffmpeg version N-49622-g127ff88 Copyright (c) 2000-2013 the FFmpeg developers
  built on Feb  6 2013 05:11:38 with gcc 4.6 (Debian 4.6.3-1)
  configuration: --prefix=/root/ffmpeg-static/32bit --arch=x86_32 --extra-cflags='-m32 -I/root/ffmpeg-static/32bit/include -static' --extra-ldflags='-m32 -L/root/ffmpeg-static/32bit/lib -static' --extra-libs='-lxml2 -lexpat -lfreetype' --enable-static --disable-shared --disable-ffserver --disable-doc --enable-bzlib --enable-zlib --enable-postproc --enable-runtime-cpudetect --enable-libx264 --enable-gpl --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-gray --enable-libass --enable-libfreetype --enable-libopenjpeg --enable-libspeex …
Run Code Online (Sandbox Code Playgroud)

ffmpeg audio-streaming audio-conversion

17
推荐指数
1
解决办法
4万
查看次数

使用 ffmpeg 流式传输 mp4

我需要创建一个具有两个流(webm 和 mp4)的提要,以便它可以在所有 HTML5 视频播放器上兼容。webm 流完美运行。但是,当尝试访问mp4流时,服务器吐出以下错误:

Sat Mar  9 23:21:54 2013 muxer does not support non seekable output
Run Code Online (Sandbox Code Playgroud)

这是 ffserver.conf 文件中处理 mp4 流的部分:

<Stream channel1.mp4>       # Output stream URL definition
   Feed feed1.ffm              # Feed from which to receive video
   Format mp4

   # Audio settings
   AudioCodec libmp3lame
   AudioBitRate 64             # Audio bitrate

   # Video settings
   VideoCodec libx264
   VideoSize 560x320           # Video resolution
   VideoFrameRate 25           # Video FPS
   AVOptionVideo flags +global_header  # Parameters passed to encoder
                                       # (same as ffmpeg command-line parameters) …
Run Code Online (Sandbox Code Playgroud)

mp4 ffmpeg streaming

17
推荐指数
1
解决办法
3万
查看次数