Questions tagged «ffmpeg»

媒体工具,支持多个编解码器,过滤器和容器。在询问涉及FFmpeg工具的问​​题时,请包括实际命令和完整的控制台输出。一种简单的方法是在命令中添加`-report`并粘贴生成的日志文件的内容。要获得CLI的帮助,请仅使用ff *二进制文件-ffmpeg,ffprobe,ffplay。有关API使用的帮助,请在Stack Overflow上发布。

4
正确的宽高比,无需重新编码视频文件
我有一个具有以下属性的视频流: Stream #0:0: Video: mpeg4 (Advanced Simple Profile) (XVID / 0x44495658), yuv420p, 720x416 [SAR 1:1 DAR 45:26], 1908 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc 在VLC中运行时,必须按“ A”将宽高比更改为“ 4:3”,以使视频以正确的宽高比显示。 查看视频事实,是否是以下错误:a)实际视频已在像素数据中错误地拉伸,或者b)仅存在一些错误设置的元数据值? 如果是前者,我知道我可以重新编码视频并更改宽度和高度。但是,如果是后者,我运行什么ffmpeg命令来修复元数据,而无需重新编码视频本身?
18 ffmpeg 

2
通过场景检测使用FFMPEG分割视频
我看到了这个线程,几乎可以完全满足我的需求,但是我实际上正在寻找场景检测方面的分裂。 自动将大型.mov视频文件拆分为黑框的较小文件(场景更改)? 例如,假设我从0:01-> 0:05开始在屏幕上放一个女人,然后从0:06-> 0:09在另一个场景中放一个男人,而从0:10开始在屏幕上放另一个女人- > 0:14 (理想情况下)这将创建三个不同的视频剪辑。如果可能的话,我真的很想将其降低到帧级别,并在场景变化时自动检测。 ** 更新 ** 好的,我已经有了一个很好的开端。我已经使用FFProbe完成以下操作: ffprobe -show_frames -of compact=p=0 -f lavfi "movie=foo.mp4,select=gt(scene\,.4)" > foo.txt 这给了我看起来正确的时间戳列表!现在,下一步-如何获取此时间戳列表,并将其输入回ffmpeg进行拆分?这是时间戳的示例。 media_type=video|key_frame=1|pkt_pts=972221|pkt_pts_time=10.802456|pkt_dts=972221|pkt_dts_time=10.802456|best_effort_timestamp=972221|best_effort_timestamp_time=10.802456|pkt_duration=N/A|pkt_duration_time=N/A|pkt_pos=5083698|pkt_size=6220800|width=1920|height=1080|pix_fmt=rgb24|sample_aspect_ratio=1:1|pict_type=I|coded_picture_number=0|display_picture_number=0|interlaced_frame=0|top_field_first=0|repeat_pict=0|tag:lavfi.scene_score=0.503364 media_type=video|key_frame=1|pkt_pts=2379878|pkt_pts_time=26.443089|pkt_dts=2379878|pkt_dts_time=26.443089|best_effort_timestamp=2379878|best_effort_timestamp_time=26.443089|pkt_duration=N/A|pkt_duration_time=N/A|pkt_pos=12736403|pkt_size=6220800|width=1920|height=1080|pix_fmt=rgb24|sample_aspect_ratio=1:1|pict_type=I|coded_picture_number=0|display_picture_number=0|interlaced_frame=0|top_field_first=0|repeat_pict=0|tag:lavfi.scene_score=1.000000 media_type=video|key_frame=1|pkt_pts=2563811|pkt_pts_time=28.486789|pkt_dts=2563811|pkt_dts_time=28.486789|best_effort_timestamp=2563811|best_effort_timestamp_time=28.486789|pkt_duration=N/A|pkt_duration_time=N/A|pkt_pos=13162601|pkt_size=6220800|width=1920|height=1080|pix_fmt=rgb24|sample_aspect_ratio=1:1|pict_type=I|coded_picture_number=0|display_picture_number=0|interlaced_frame=0|top_field_first=0|repeat_pict=0|tag:lavfi.scene_score=0.745838 media_type=video|key_frame=1|pkt_pts=2627625|pkt_pts_time=29.195833|pkt_dts=2627625|pkt_dts_time=29.195833|best_effort_timestamp=2627625|best_effort_timestamp_time=29.195833|pkt_duration=N/A|pkt_duration_time=N/A|pkt_pos=13485087|pkt_size=6220800|width=1920|height=1080|pix_fmt=rgb24|sample_aspect_ratio=1:1|pict_type=I|coded_picture_number=0|display_picture_number=0|interlaced_frame=0|top_field_first=0|repeat_pict=0|tag:lavfi.scene_score=0.678877

3
使用ffmpeg将不同宽度的视频调整为固定的高宽比
我想将很多视频文件转换为我们公司网站的Flash视频。我要求所有视频都必须为360p格式,因此其尺寸应为Nx360。 FFmpeg的使用-s参数指定的目标分辨率w ^ X ^ h。我不知道W¯¯ IDþ,因为它依赖于源文件的宽高比。如果源是640x480,则目标将是480x360。如果源为848x480,则目标为636x360。 有办法用ffmpeg开关吗?它将保留宽高比,而我仅指定目标视频的高度吗? 我可以通过编写一个程序来启动ffprobe来获取源视频的大小,计算宽高比,然后计算新的宽度,从而轻松解决该问题。
17 video  ffmpeg 

1
ffmpeg的音频持续时间错误
我尝试使用以下最简单的命令使用ffmpeg将m4a文件转换为mp3: ffmpeg -i in.m4a out.mp3 转换后,持续时间似乎很奇怪。原始的m4a是4:06。但是对于新的mp3,OS X Finder和Google Play报告09:24,而iTunes仍然报告正确的4:06。 我想我之前也曾遇到过这个问题。为什么是这样?可以解决吗? 以下是的控制台输出ffmpeg,以防万一。 $ffmpeg -i in.m4a out.mp3 ffmpeg version 1.2.1 Copyright (c) 2000-2013 the FFmpeg developers built on Jun 12 2013 13:46:11 with Apple clang version 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn) configuration: --prefix=/opt/local --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libopus --enable-libtheora --enable-libschroedinger --enable-libopenjpeg …
17 audio  ffmpeg 


1
使用ffmpeg确定视频比特率
我正在尝试使用ffmpeg命令确定视频比特率(用于转码),我尝试了以下命令。 ffmpeg -i 28572615.wmv 它产生以下输出 Input #0, asf, from '28572615.wmv': Metadata: major_brand : isom minor_version : 1 compatible_brands: isomavc1 encoder : Lavf57.36.100 Duration: 00:02:50.92, start: 0.000000, bitrate: 1982 kb/s Stream #0:0: Video: wmv2 (WMV2 / 0x32564D57), yuv420p, 640x360, SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 1k tbn, 1k tbc …


2
使用ffmpeg从视频中提取关键帧的索引
我正在使用ffmpeg从视频中提取关键帧。这是命令: ffmpeg -i test2.mp4 -vf select='eq(pict_type\,I)' -vsync 2 -s 160x90 -f image2 thumbnails-%02d.jpeg 如何获取视频中提取的每个关键帧的索引?例如,对于第一个I帧,索引将为0,对于第二个I-帧,索引将为24,依此类推。
17 ffmpeg 

1
ffmpeg和“无法找到合适的输出”错误
我正在尝试将大型MKV转换为老式的AVI文件。 我正在尝试: ffmpeg -i video.mkv -s -codec:v mpeg4 -bf 1 -b 2567k -mbd 2 -g 300 -flags cgop -acodec copy video.avi 但我明白了 [NULL @ 0x7fa0d901e600] Unable to find a suitable output format for 'mpeg4' mpeg4: Invalid argument ffmpeg消息的长版... ffmpeg version 2.1.3 Copyright (c) 2000-2013 the FFmpeg developers built on Feb …

2
FFMPEG / libx264:如何指定可变帧率但最大?
我不想为FFMPEG / libx264(-r / -framerate)提供固定的帧速率,而是要指定具有MAXIMUM值的可变帧速率,并允许libx264视需要降低帧速率。这里的想法是在出现类似扩展的静止帧(在我的源视频中发生很多)时获得额外的压缩。 我意识到预测性或双向MPEG帧会很好地压缩,但是源帧率也可能比我要转码的帧率小(可能会导致更大的流!)。

2
用ffmpeg流mp4
我需要创建一个具有两个流的提要-webm和mp4-这样它才能与所有HTML5视频播放器兼容。webm流完美运行。但是,当尝试访问mp4流时,服务器吐出以下错误: Sat Mar 9 23:21:54 2013 muxer does not support non seekable output 这是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 # …
16 ffmpeg  streaming  mp4 

1
使用ffmpeg选择过滤器以精确的帧剪切视频
我可以使用给定的帧号剪切视频,而不是使用-ss和-to寻找似乎不太准确的参数?例如; ffmpeg -i video.webm -startingframe 80 -endingframe 560 output.webm [包括第80帧和第560帧。因此,总共制作(560-80 +1)帧] 在答案和一点搜索之后,我尝试了一些命令。但是到目前为止,我还没有找到可接受的方法。 如果有人想在第250帧和第750帧之间剪切视频流,这就是方法。它将给出501帧作为输出: 注意: movie.mp4具有25 fps,其音频采样率48k ffmpeg -i movie.mp4 -an -vf "select=between(n\,250\,750),setpts=PTS-STARTPTS" v_stream.webm 正如预期的那样,输出的长度为20秒。 使用相同的音频方法: ffmpeg -i movie.mp4 -vn -af "aselect=between(n\,480\,1440),setpts=PTS-STARTPTS" a_stream.webm 出乎意料的是,这一准确性非常差。它应该给了我960001(960k + 1)个等于20秒音频的采样。但是,输出的长度为20.505秒,并具有984240个样本。另外,如果我增加持续时间,错误也会增加。 然后我尝试使用-ss -to参数来剪切音频流: ffmpeg -i movie.mp4 -vn -ss 10.000 -to 30.000 a_stream.webm 旧的经典方法效果更好。输出时间为20.003秒,有960144个样本。另外,持续时间的增加不会增加误差,误差是恒定的,该输入文件中总是有144个样本剩余。 总结: select过滤器在大多数情况下都能正常工作,但选择却不行。经典-ss参数对音频效果更好,但对样本不准确。另外,不可能同时使用-vf select和-ss参数,因为-ss它将同时影响音频和视频流,而我们希望仅影响音频。 …
16 ffmpeg 

4
如何从MKV文件中剥离音频流?
我一直在尝试从MKV(Matroska)文件中删除不需要的音频流。我之所以这样做,是为了避免在Windows Media Player中手动选择所需的流。 输入文件提供以下ffmpeg信息: Stream #0.0: Video: mpeg4, yuv420p, 704x396 [PAR 1:1 DAR 16:9], 29.98 tbr, 1k tbn, 29.98 tbc Stream #0.1(eng): Audio: aac, 24000 Hz, 5.1, s16 Stream #0.2(jpn): Audio: aac, 24000 Hz, 5.1, s16 Stream #0.3(eng): Subtitle: 0x0000 Stream #0.4(eng): Subtitle: 0x0000 Stream #0.5: Attachment: 0x0000 Stream #0.6: …
16 video  ffmpeg 

2
用ffmpeg连接两个mp4文件而不丢失质量
我想使用ffmpeg连接2个视频。我在用: ffmpeg -i output1.mp4 -scodec copy -vbsf h264_mp4toannexb i0.ts 但是我得到的mp4文件比源文件差很多。 这是有关两个文件的信息 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output1.mp4': Metadata: major_brand : isom minor_version : 1 compatible_brands: isom creation_time : 2013-06-13 15:40:36 Duration: 00:00:15.72, start: 0.000000, bitrate: 2053 kb/s Stream #0.0(und): Video: h264 (High), yuv420p, 1280x720, 1931 kb/s, 25 fps, 25 tbr, 12800 …
16 ffmpeg 

3
FFmpeg在将png图像序列编码为x264 mp4视频时会丢弃帧
我想对图像进行编码序列(frame0001.png,frame0002.png,..., frame0160.png)为X264视频使用以下命令: ffmpeg -i frame%04d.png -sameq -r 24 out.mp4 编码后,它说drop=5的确是视频中确实存在明显的“跳跃”。 看来其他人也有类似的问题,但是对我来说,可以接受的答案不是很有用,因为我不想丢帧。 命令中是否缺少开关?还是我做错了其他事? 编辑:添加了控制台输出: ffmpeg version N-42347-g299387e Copyright (c) 2000-2012 the FFmpeg developers built on Jul 8 2012 15:46:39 with gcc 4.7.1 configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --disable-w32threads --enable-runtime-cpudetect --enable-avisynth --enable-bzli b --enable-frei0r --enable-libass --enable-libcelt --enable-libopencore-amrnb -- enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lam …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.