标签: ffmpeg

ffmpeg 从 H.264 流中捕获静止图像

我正在尝试使用 ffmpeg 从 H.264 无线 IP 摄像机捕获静止图像。我在这里发现了一个类似的问题:如何使用 ffmpeg 从 H264 视频文件中提取高质量的 JPEG 图像?

ffmpeg -y -i rtsp://10.2.69.201:554/ch0_0.h264 -r 10 -f image2 /var/www/camera.jpg
Run Code Online (Sandbox Code Playgroud)

我已经实现了它,如该示例所示。你可以看到我在这里得到的图像样本:

基本上问题是图像的底部总是块状的。如果天空有更多细节和云彩,则图像的整个下半部分可能会出现块状或模糊。

我的相机的流选项有限。其中之一是 I-Frame 间隔,您可以在 25-100 之间改变它。

有没有人对我如何获得更好的图像有一些建议?我不介意是否可以将流实际存储到视频文件中并每 2 分钟提取一次静止图像。这很容易做到吗?

这是 ffmpeg 输出:

ffmpeg version 1.2.4 Copyright (c) 2000-2013 the FFmpeg developers
built on Oct  3 2013 07:36:02 with gcc 4.8 (Debian 4.8.1-10)
configuration: --prefix=/usr --extra-cflags='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security ' --extra-ldflags='-Wl,-z,relro' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-nonfree --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora …
Run Code Online (Sandbox Code Playgroud)

video ffmpeg images

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

ffmpeg:找不到流 0 的编解码器参数(视频:h264)未指定大小

我尝试将视频从 .raw 转换为 .mp4。出于这个原因,我确实下载、构建和安装了 x264 和 ffmpeg。但是,命令:

ffmpeg -f h264 -i output.raw -vcodec copy output.mp4

失败并出现错误(如下图所示)。有没有什么办法解决这一问题?

在此处输入图片说明

我还运行的命令:

1

root@beagleboard:/# v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
        Index       : 0
        Type        : Video Capture
        Pixel Format: 'YUYV'
        Name        : YUV 4:2:2 (YUYV)

        Index       : 1
        Type        : Video Capture
        Pixel Format: 'MJPG' (compressed)
        Name        : MJPEG
Run Code Online (Sandbox Code Playgroud)

2

root@beagleboard:/dev# v4l2-ctl --set-fmt-video=pixelformat=0
Run Code Online (Sandbox Code Playgroud)

video codec mp4 ffmpeg video-conversion

11
推荐指数
1
解决办法
5万
查看次数

基于章节拆分 MKV

我有一个很长的 MKV 文件,我想将其拆分为各个章节。

运行ffmpeg -i long.mkv为我提供了有关文件中嵌入的章节的所有信息:

 Duration: 01:23:45.80, start: 0.000000, bitrate: 8116 kb/s
    Chapter #0.0: start 0.000000, end 235.000000
    Metadata:
      title           : Chapter 01
    Chapter #0.1: start 235.000000, end 450.160000
    Metadata:
      title           : Chapter 02
    Chapter #0.2: start 450.160000, end 789.400000
    ...
Run Code Online (Sandbox Code Playgroud)

文件中有 10 章 - 我想最终得到 10 个单独的文件。

它看起来-map_chapters可能类似于类似的东西 - 但我找不到任何关于它的文档。

video ffmpeg libav

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

将视频文件切成几段

我目前正在使用 ffmpeg 来切片视频文件。我通过一个名为 ffmpeg_split.sh 的脚本自动化了这个过程。虽然这很慢,但它可以有效地将视频拆分为等效的设置。唯一的问题是它有帧速率问题。下面的邪恶汤推荐了一种segment在 ffmpeg 中使用的方法。我试过这个,但它没有给我等效的持续时间段。

更新

每个 evilsoup 使用此命令分割视频:

ffmpeg -i input.mp4 -c copy -map 0 -segment_time 8 -f segment output%03d.mp4

老的:

以下是使用脚本切片视频的语法: ffmpeg_split.sh -s test_vid.mp4 -o video-part%03d.mp4 -c 00:00:08

结果

my_split_script.sh

input.mp4 – Duration 00:01:20
#EXTINF:10,
Output01.mp4
#EXTINF:10,
Output02.mp4
#EXTINF:10,
Output03.mp4
#EXTINF:9,
Output04.mp4
#EXTINF:10,
Output05.mp4
#EXTINF:10,
Output06.mp4
#EXTINF:11,
Output07.mp4
#EXTINF:10,
Output08.mp4
real    0m30.517s #execution time
Run Code Online (Sandbox Code Playgroud)

ffmpeg

input.mp4 – Duration 00:01:20
#EXTINF:10,
Output01.mp4
#EXTINF:10,
Output02.mp4
#EXTINF:6,
Output03.mp4
#EXTINF:10,
Output04.mp4
#EXTINF:10,
Output05.mp4
#EXTINF:7,
Output06.mp4
#EXTINF:10,
Output07.mp4
#EXTINF:9, …
Run Code Online (Sandbox Code Playgroud)

video linux unix bash ffmpeg

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

在ffmpeg中合并两个具有透明度的视频

我使用以下命令将两个视频合并到一个文件中。不幸的是,第二个视频涵盖了第一个视频,并且不可见。如何使第二个视频透明(例如 50%)?

ffmpeg
    -i in1.mp4 -i in2.mp4
    -filter_complex "nullsrc=size=480x360 [base];
        [0:v] setpts=PTS-STARTPTS, scale=480x360 [top];
        [1:v] setpts=PTS-STARTPTS, scale=480x360 [bottom];
        [base][top] overlay=shortest=1 [temp];
        [temp][bottom] overlay=shortest=1"
    -acodec libvo_aacenc -vcodec libx264 out.pm4
Run Code Online (Sandbox Code Playgroud)

video ffmpeg transparency

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

从视频中提取的 ffmpeg 管道图像

我可以使用以下命令从使用 ffmpeg 的视频中提取图像,并将它们保存到文件系统:

... | ffmpeg -i - -f image2 'img-%03d.png'
Run Code Online (Sandbox Code Playgroud)

我想将这些图像通过管道传输到另一个应用程序,而不是将它们保存到文件系统 - 它们在管道中的分离方式并不重要,因为它将是我自己控制的 NodeJS 脚本。

以下不起作用:

... | ffmpeg -i - -f image2 pipe: | ...
Run Code Online (Sandbox Code Playgroud)

错误与

[image2 @ 0xe1cfc0] Could not get frame filename number 2 from pattern 'pipe:' (either set updatefirst or use a pattern like %03d within the filename pattern)
av_interleaved_write_frame(): Invalid argument
Run Code Online (Sandbox Code Playgroud)

有没有办法在不使用文件系统的情况下使用 ffmpeg 从视频中提取图像?

video linux ffmpeg pipe

10
推荐指数
1
解决办法
8787
查看次数

如何使用 FFMPEG 将 MP4 转换为 OGV,同时仍保持相同的质量?

我根本不熟悉 FFMPEG,想知道如何将 MP4 转换为 OGV 格式,同时仍保持相同的视频和音频质量?

ffmpeg

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

ffmpeg:向现有文件添加新音轨

我手动创建了一些 5.1 DTS 轨道的立体声混音。现在我想将新的音轨添加到原始电影文件中,而不删除旧的音轨。

我的问题似乎是我要么错过了将曲目的正确映射交给 ffmpeg(该文件已经有两个音轨和一些子图块,这似乎也很重要),所以我收到了“流图的数量必须匹配输出流的数量”(从内存中引用),或者我什至把整个流/映射概念都弄错了。

我正在尝试做的事情有什么好的解释吗?我什至阅读了有关该主题的整篇文章,ffmpeg.org 中的文档在这种情况下并没有那么有用。

更具体地说:我想知道是否有任何方法可以让 ffmpeg 显示文件的实际流映射,以及如何将我的立体声轨道合并到其中?

到目前为止,我发现的所有内容都涉及无声视频或替换音轨,这不是我想要做的。

audio encoding ffmpeg

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

FFmpeg:无需重新编码即可重新创建时间戳

我有一个包含 H264 视频 (25 FPS) 的 MP4 文件。某些时间戳不正确(出于某些原因......)。我可以处理文件并只重新生成时间戳而不重新编码吗?我试过这个

ffmpeg -r 25 -i infile -c copy outfile
Run Code Online (Sandbox Code Playgroud)

但即使“-r”的文档说:

作为输入选项,忽略存储在文件中的任何时间戳, 而是假设恒定帧速率 fps 生成时间戳。

我也试过提到的建议,这里的底部:

ffmpeg -fflags +genpts -i infile -c copy outfile
Run Code Online (Sandbox Code Playgroud)

这也不会更改输出文件中的时间戳。还有其他方法可以执行此任务吗?时间戳是一种元数据,所以我认为它应该以某种方式成为可能。

ffmpeg timestamp

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

FFmpeg 中的哪些音频编码器支持 8 kHz?

我有一个旧视频(由 Casio Exilim EX-Z40 制作,如果重要的话),其音频流ffprobe报告为pcm_u8, 8000 Hz, mono, u8.

我想把它转码成现代的东西。

使用 FFmpeg 默认值转码失败:

libfaac 不支持这种输出格式!

所以大概 libfaac 不支持 8 kHz,因为-c:a copy有效。

哪些编码器支持 8 kHz 采样率?这里列表几乎没有提到采样率。

我可以编写脚本来尝试每个已安装的编解码器,从...

ffmpeg -codecs | grep EA`
Run Code Online (Sandbox Code Playgroud)

...直接查看哪些有效?

ffmpeg audio-conversion

10
推荐指数
2
解决办法
3620
查看次数