我有一个 16:9 格式的视频,我将通过 onestream.live 将它上传到 Instagram,因为它是水平格式,而不是垂直格式,所以它被 Instagram 裁剪。
如何使用手刹将 16:9 格式转换为适用于 Instagram 的正确 9:16 格式?
我想在视频的顶部和底部有黑色信箱条。
我不是视频专家,但知道如何使用 Unix 命令行。我最近一直在将单个电影文件从 DVD 类型格式(.vob 或 .mkv)转换为更简单的格式(.mp4)或方便地从 iTunes 播放(.m4v)。
为此,我一直在使用 ffmpeg,在 Mac/Unix 命令行上使用以下类型的命令:
ffmpeg -i input.VOB -q:v 0 output.mp4
或者
ffmpeg -i input.mkv -q:v 0 output.m4v
在第一种情况下,我通常会缩小到大约五分之一的大小,或者在最近的转换中,在第二种情况下,大小会缩小到七分之一。据我所见,质量没有下降(而且字幕还可以),所以我想我应该很高兴,但也许我没有看到所有内容。
谁能告诉我正在删除什么以及以不同的方式运行 ffmpeg 是否会更好/可能以防止丢失重要的东西?
笔记
这些转换是完全合法的。VOB 转换适用于几年前制作了一系列商业工艺 DVD 的朋友,但需要在拇指驱动器上出售它们。mkv 转换适用于我作为下载购买的字幕电影。
我正在尝试使用 ffmpeg 复制 Handbrake 设置,因为我想使用 ffmpeg 添加一些元数据和其他一些 Handbrake 无法做到的东西。
我所做的似乎很接近,生成的文件大小和编码时间相似,但 Handbrake 只是产生明显(但不是大幅度)更好的图像。
这些被裁剪并放大 300%。例如,手刹在其中一只蝴蝶腿上保留了更多颜色,在其翅膀的黄色部分之间保留了更多细节,并且总体上看起来更清晰。可能很难注意到我在说什么,但差异是存在的,并且在其他一些视频中更为明显。
x265 编码器版本略有不同,但我相信这不是造成差异的原因。Handbrake 有“x265 3.5+1-f0c1022b6”,ffmpeg 有“x265 3.5+37-07b011400”,但我尝试过使用旧 x265 的 ffmpeg,结果与最新的 x265 相同。在我看来,它们都不如 Hanbrake。
和 ffmpeg 命令
ffmpeg -i "in.mp4" -map_metadata -1 -vf scale=1280:720 -c:a copy -c:v libx265 -crf 27 -preset fast "out.mp4"
这是所有 3 个文件的 Mediainfos,包括原始文件、编码日志、Handbrake 预设和 ffmpeg 命令:Pastebin 文件夹
同样由于某种原因,关键帧位于不同的位置。
我的问题是,我可以在我的 ffmpeg 命令中进行哪些更改以使结果与 Handbrake 相同?
是否可以将只有 5.1 的 mkv 文件转换为 2.0 或 2.1(或者可能只是添加 2.0 和 2.1 作为附加音轨)而不触及其他任何内容。这可能吗?
最近,我买了这个:https ://www.dustinhome.se/product/5010763579/displayport-to-hdmi-adapter
它并不便宜,而且在我手中感觉很重且质量上乘。我根本不相信这个错误只是它有问题。从这个意义上说,一个设备似乎太简单了,无法真正“打破”。
我的测试:
我已经多次重复这些步骤,以排除任何“松散的电缆”等。我还专门将显示器上的视频模式设置为“DisplayPort”,而不是“自动”,只是为了让显示器 100% 清晰它应该显示 HDMI-turned-DisplayPort 信号,仅此而已。(此外,无论如何都没有其他任何东西连接到显示器。)
我不认为适配器是物理/电子“油炸”的另一个原因是,我过去在尝试使用各种适配器处理视频信号时遇到过类似的问题。这似乎是一个普遍的问题,但对我来说毫无意义。究竟是什么问题?就显示器而言,我已经插入了一个 DisplayPort 视频输出设备——不是 HDMI 的。毕竟,这就是适配器的全部意义所在!
我还应该指出,在 HDMI 电缆已经插入的情况下,我已经多次关闭/打开 RPI。
有什么问题?
我正在尝试使用 FFmpeg 使用 hevc_nvenc 将多个视频文件从 AVC 转换为 HEVC,并且在最后一刻转换文件后,它给了我这个错误:
[hevc_nvenc @ 00000293155d5880] Failed locking bitstream buffer: not enough buffer (14): .35x
Video encoding failed
[aac @ 0000021d74665040] Qavg: 585.557
[aac @ 0000021d74665040] 2 frames left in the queue on closing
Conversion Failed
以及开始转换之前的警告:
[aac @ 000001387b19d040] Estimating duration from bitrate, this may be inaccurate
我的 FFmpeg 命令:
ffmpeg.exe -hwaccel nvdec -i '.\videoFileInput.mkv' -map 0 -c:v hevc_nvenc -rc:v vbr -tune hq -preset p5 -multipass 1 -bf 4 -b_ref_mode 1 -spatial-aq 1 -aq-strength 8 -cq 32 -c:a aac -b:a 250K -c:s mov_text '.\videoFileOutput.mp4'
我的 GPU:RTX2060 | 图灵架构
对于很多视频文件,不会发生此问题,有时它们具有相似的编解码器和属性,只是它不适用于其中一个
其中一个文件的 MediaInfo 信息
Complete name : drive/videofile.mkv
Format : Matroska
Format version : Version 4
File size : 1.14 GiB
Duration : 26 min 32 s
Overall bit rate mode : Variable
Overall bit rate : 6 142 kb/s
Encoded date : UTC 2018-07-18 05:01:14 / UTC 2018-05-27 01:24:09
Writing application : mkvmerge v21.0.0 ('Tardigrades Will Inherit The Earth') 64-bit
Writing library : libebml v1.3.5 + libmatroska v1.4.8 / Lavf58.0.0
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : Main@L4
Format settings : CABAC / 3 Ref Frames
Format settings, CABAC : Yes
Format settings, Reference frames : 3 frames
Codec ID : V_MPEG4/ISO/AVC
Duration : 26 min 32 s
Bit rate mode : Variable
Bit rate : 5 620 kb/s
Maximum bit rate : 8 430 kb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 23.976 (24000/1001) FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.113
Stream size : 1 021 MiB (88%)
Writing library : x264 core 118
Encoding settings : cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x1:0x111 / me=umh / subme=10 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=24 / chroma_me=1 / trellis=2 / 8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=6 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=2 / b_pyramid=0 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=48 / keyint_min=25 / scenecut=0 / intra_refresh=0 / rc_lookahead=0 / rc=2pass / mbtree=1 / bitrate=5620 / ratetol=1.0 / qcomp=0.50 / qpmin=6 / qpmax=51 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / vbv_maxrate=8430 / vbv_bufsize=11240 / nal_hrd=vbr / ip_ratio=1.40 / aq=1:1.00
Default : Yes
Forced : No
Audio
ID : 2
Format : E-AC-3
Format/Info : Enhanced AC-3
Commercial name : Dolby Digital Plus
Codec ID : A_EAC3
Duration : 26 min 32 s
Bit rate mode : Constant
Bit rate : 640 kb/s
Channel(s) : 6 channels
Channel layout : L R C LFE Ls Rs
Sampling rate : 48.0 kHz
Frame rate : 31.250 FPS (1536 SPF)
Compression mode : Lossy
Stream size : 121 MiB (10%)
Language : English
Service kind : Complete Main
Default : Yes
Forced : No
Encoded date : UTC 2018-05-27 01:24:09
ffprobe 信息
Input #0, matroska,webm, from '.\videoFile.mkv':
Metadata:
CREATION_TIME : 2018-05-27 01:24:09
COMPATIBLE_BRANDS: isomiso2dashiso6
MAJOR_BRAND : mp42
MINOR_VERSION : 0
ENCODER : Lavf58.0.0
Duration: 00:26:32.10, start: 0.000000, bitrate: 6141 kb/s
Stream #0:0: Video: h264 (Main), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn (default)
Stream #0:1(eng): Audio: eac3, 48000 Hz, 5.1(side), fltp, 640 kb/s (default)
Metadata:
CREATION_TIME : 2018-05-27 01:24:09
HANDLER_NAME : Audio Media Handler
我到处搜索,找不到任何解决此问题的方法
这是我尝试过的事情
我怀疑视频长度可能是问题,我尝试使用-ss
命令修剪视频并且它有效,对于 26:32 分钟的视频,我可以修剪到 26:00 分钟,它非常好,但原始文件长度不能不会被转化
我还尝试了 mkvextract 并提取了 mkv 容器并将它们输入到 ffmpeg 中,它也不起作用
我用于合并 WebM 和 aac 文件的命令
ffmpeg.exe -hwaccel nvdec -i '.\video.webm' -i .\audio.aac -map 0 -map 1 -c:v hevc_nvenc -rc:v vbr -tune hq -preset p5 -multipass 1 -bf 4 -b_ref_mode 1 -spatial-aq 1 -aq-strength 8 -cq 38 -c:a aac -b:a 250K '.\mkv_extract_Merge.mp4'
然后我想可能是因为我的文件扩展名并试图将 mp4 更改为 mkv 并且它没有再次工作
我尝试了不同的 AVOptions,甚至是默认的 AVOptions,但它不再起作用
ffmpeg.exe -i ".\video.mkv" -c:v hevc_nvenc -c:a copy ".\outpuFile.mp4"
我尝试了这个-bufsize:v <int>
选项,每次都让它越来越高,它没有用
它唯一起作用的时间是它使用 h264_nvenc 并且它做到了(我用很少的 AVOptions 尝试过)
我怀疑视频和音频的 fps 因为它们不匹配所以我检查了转换得很好的视频并且音频的 fps 存在差异,如您在上面的日志中看到的那样,在第一个视频中是 31 fps,在其他视频中为 46,我尝试使用将音频文件转换为 23.976(视频的 fps)-filter:v fps=23.976
,转换后变为 46 fps,然后我尝试使用 ffmpeg 合并它们,但它不再起作用
现在我怀疑音频或视频持续时间有问题,因为提取它们后的 ffmpeg 估计是 02:10:32 而视频只有 00:26:32 分钟(这个估计是我尝试合并的时间提取的音频和视频,但是当我只是尝试转换 mkv 容器时,它估计音频为 00:26:32.10,这类似于持续时间的 MediaInfo 值)
这是转换过程中FFmpeg的日志
Input #0, h264, from '.\video.webm':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: h264 (Main), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 24 fps, 23.98 tbr, 1200k tbn
[eac3 @ 000001c3e501d040] Estimating duration from bitrate, this may be inaccurate
Input #1, eac3, from '.\audio.aac':
Duration: 00:26:32.10, start: 0.000000, bitrate: 640 kb/s
Stream #1:0: Audio: eac3, 48000 Hz, 5.1(side), fltp, 640 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> hevc (hevc_nvenc))
Stream #1:0 -> #0:1 (eac3 (native) -> aac (native))
Press [q] to stop, [?] for help
[aac @ 000001c3e4d65040] Using a PCE to encode channel layout "5.1(side)"
Output #0, matroska, to '.\mkv_extract_Merge.mkv':
Metadata:
encoder : Lavf59.2.102
Stream #0:0: Video: hevc (Main), nv12(progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 23.98 fps, 1k tbn
Metadata:
encoder : Lavc59.1.101 hevc_nvenc
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 4000000 vbv_delay: N/A
Stream #0:1: Audio: aac (LC) ([255][0][0][0] / 0x00FF), 48000 Hz, 5.1(side), fltp, 250 kb/s
Metadata:
encoder : Lavc59.1.101 aac
[hevc_nvenc @ 000001c3e4d644c0] Failed locking bitstream buffer: not enough buffer (14): .26x
Video encoding failed
[aac @ 000001c3e4d65040] Qavg: 585.557
[aac @ 000001c3e4d65040] 2 frames left in the queue on closing
Conversion failed!
h264_nvenc 日志:
Input #0, matroska,webm, from '.\videoFile.mkv':
Metadata:
CREATION_TIME : 2018-05-27 01:24:09
COMPATIBLE_BRANDS: isomiso2dashiso6
MAJOR_BRAND : mp42
MINOR_VERSION : 0
ENCODER : Lavf58.0.0
Duration: 00:26:32.10, start: 0.000000, bitrate: 6141 kb/s
Stream #0:0: Video: h264 (Main), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn (default)
Stream #0:1(eng): Audio: eac3, 48000 Hz, 5.1(side), fltp, 640 kb/s (default)
Metadata:
CREATION_TIME : 2018-05-27 01:24:09
HANDLER_NAME : Audio Media Handler
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (h264_nvenc))
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[mp4 @ 00000284a0af0cc0] track 1: codec frame size is not set
Output #0, mp4, to '.\videofile.mp4':
Metadata:
MINOR_VERSION : 0
COMPATIBLE_BRANDS: isomiso2dashiso6
MAJOR_BRAND : mp42
encoder : Lavf59.2.102
Stream #0:0: Video: h264 (Main) (avc1 / 0x31637661), nv12(progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 2000 kb/s, 23.98 fps, 24k tbn (default)
Metadata:
encoder : Lavc59.1.101 h264_nvenc
Side data:
cpb: bitrate max/min/avg: 0/0/2000000 buffer size: 4000000 vbv_delay: N/A
Stream #0:1(eng): Audio: eac3 (ec-3 / 0x332D6365), 48000 Hz, 5.1(side), fltp, 640 kb/s (default)
Metadata:
CREATION_TIME : 2018-05-27 01:24:09
HANDLER_NAME : Audio Media Handler
frame=38170 fps=359 q=20.0 Lsize= 506687kB time=00:26:32.06 bitrate=2607.2kbits/s speed= 15x
video:381434kB audio:124382kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.171940%
编辑 六月 16,21
我发现了另一个线索:
我为几个具有相同设置的文件运行脚本,其中几个文件因上述按摩而失败,当我检查它们时,它们有一个包含以下文本的“编码设置”部分:
wpp / ctu=16 / tu-intra-depth=1 / tu-inter-depth=1 / me=0 / subme=0 / merange=25 / no-rect / no-amp / max-merge=2 / temporal-mvp / early-skip / no-fast-cbf / rdpenalty=0 / no-tskip / no-tskip-fast / strong-intra-smoothing / no-lossless / no-cu-lossless / no-constrained-intra / fast-intra / no-open-gop / interlace=0 / keyint=30 / min-keyint=1 / scenecut=0 / rc-lookahead=1 / bframes=0 / bframe-bias=0 / b-adapt=0 / ref=1 / no-weightp / no-weightb / aq-mode=0 / aq-strength=0.00 / cbqpoffs=0 / crqpoffs=0 / rd=2 / psy-rd=0.00 / psy-rdoq=0.00 / no-signhide / no-lft / no-sao / no-sao-non-deblock / no-b-pyramid / no-cutree / rc=abr / bitrate=2000 / qcomp=0.60 / qpmin=0 / qpmax=51 / qpstep=4 / ipratio=1.40
cabac=1 / ref=4 / deblock=1:0:0 / analyse=0x3:0x111 / me=umh / subme=10 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=120 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=6 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / stitchable=1 / constrained_intra=0 / bframes=16 / b_pyramid=2 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=240 / keyint_min=121 / scenecut=0 / intra_refresh=0 / rc_lookahead=240 / rc=crf / mbtree=1 / crf=16.0 / qcomp=0.50 / qpmin=6 / qpmax=51 / qpstep=4 / vbv_maxrate=20000 / vbv_bufsize=25000 / crf_max=0.0 / nal_hrd=vbr / filler=0 / ip_ratio=1.40 / aq=1:0.80
我不知道这些设置中的哪一个可能是导致此错误的原因,但它可能是其中之一。
编辑 六月 24,21
以下是一些编码有问题的示例文件。
我尝试修剪有问题的视频(我只修剪了几帧),它删除了Encoding Settings
MediaInfo 中的部分,现在我可以毫无问题地转换它们,似乎Encoding Settings
是问题所在。任何有关此选项是什么以及如何删除它的信息表示赞赏。
我有一个 .cmfv 文件,我想将其转换为 .mp4。我似乎在网上找不到任何关于它的信息。
是否可以将其转换为 .mp4?
我有以下视频
Input #0, avi, from 'input.avi':
Duration: 00:00:12.50, start: 0.000000, bitrate: 335548 kb/s
Stream #0:0: Video: rawvideo, pal8, 2048x2048, 338250 kb/s, 10 fps, 10 tbr, 10 tbn, 10 tbc
Metadata:
title : FileAVI write
它有 125 帧 @ 10 fps。现在我正在使用它压缩它
ffmpeg -i input.avi -vcodec png -compression_level 4 -vtag 'PNG ' output.avi
结果是这样的视频:
Input #0, avi, from 'output.avi':
Metadata:
software : Lavf58.76.100
Duration: 00:00:12.50, start: 0.000000, bitrate: 36894 kb/s
Stream #0:0: Video: png (PNG / 0x20474E50), pal8(pc), 2048x2048, 37185 kb/s, 10 fps, 10 tbr, 10 tbn, 10 tbc
Metadata:
title : FileAVI write
但是原始文件(一个.cxd
文件)是 25fps,所以我希望最终的 avi 是 25fps,不丢帧或加帧。
我不管理它。我已经看到了一些建议,但没有一个有效,或者我无法遵循它们。
如何更改 ffmpeg 命令,使 output.avi 再次无损 125 帧 @ 25fps?
我目前有这个命令来 alphamerge 两个视频,并升级其中一个。
ffmpeg -i video.mp4 -i matte.mp4 -filter_complex '[1][0]scale2ref[mask][main];[main][mask]alphamerge' -c:v qtrle output.mov
我也有这个命令可以将视频叠加到另一个视频之上
ffmpeg -i background.mp4 -i output.mov -filter_complex "[0:v][1:v]overlay[out]" -map [out] complete.mp4
我想要做的是将它们组合成一个命令,所以它需要video.mp4
,应用matte.mp4
with alphamerge,并将其放在background.mp4
但我不确定如何在命令中引用第三个输入,任何帮助将不胜感激
⋯
以15fps.GIF
的速度持续 10 秒,总共 150 帧。
想要为每一帧使用不同的调色板。有调色板文件:
p1.png
,
p2.png
,
p3.png
等等…
p150.png
- 我的 ffmpeg 单线是什么?
⋯