我的输入如下:
Input #0, mpeg, from 'D:\Videos\2015.mpg':
Duration: 01:49:08.74, start: 0.220000, bitrate: 4940 kb/s
Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, bt470bg), 720x576 [SAR 16:15 DAR 4:3], max. 7500 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1[0x1c0]: Audio: mp2, 48000 Hz, stereo, s16p, 224 kb/s
Run Code Online (Sandbox Code Playgroud)
该文件在不到 2 小时的时间内几乎是 4GB。这是典型的(甚至可能比典型的略差)VHS 质量,其中散布着几分钟的空白屏幕(因此需要 VBR)。
CPU 为 4 核 Inteal 3770K:MMX2 SSE2Fast SSSE3 SSE4.2 AVX
问题:我应该使用什么 ffmpeg 参数来合理快速地将此输入转换为 MP4(H264/AAC)(比实际速率快几倍,即在不超过 30 分钟内完成此文件)并将文件大小减少至少一半。我想质量不是那么重要,因为无论如何它都是 VHS 翻录,并且有很多静态和人工制品。我应该使用哪些命令行开关(适用于 Windows)?
编辑/更新/背景故事:
在提出建议后,我正在详细说明......我很想直接使用 ffmpeg 将 VHS 视频捕获到 MP4 中,但问题是我的捕获设备驱动程序是这样配置/安装的:
C:\Tools\video.tools\ffmpeg-20151123-git-12a419d-win64-static\bin>ffmpeg …Run Code Online (Sandbox Code Playgroud) 我试着用谷歌搜索这个,但我实际上没有找到任何确凿的证据来支持这一点,所以我要提出我的案例。
几年前,我花时间在我的电脑上将我们所有的家庭录像带转换成数字副本。这是通过在 RW CD/DVD 上播放来“录制”原始磁带,然后将 CD 内容复制到计算机上来完成的。结果是所有这些文件都以 MPG 格式存储。我为大约 18.5 小时的视频素材收集了大约 120GB 的存储空间。
我最近决定查看这些文件,以便为我母亲的生日制作某种视频拼贴画,在剪切和复制文件时,我注意到例如一个简单的 2 分钟视频大小超过 100mb(只是为了说明不同之处在于,在 Whatsapp 上发送的 2 分钟视频大约为 3-8mb - 这不是一个很好的例子,因为 Whatsapp 严重降低了视频质量,但仍然相当可观)。现在我确信在处理高质量和高分辨率的镜头时,这可能是一个很小的数量,但我并不是在这里处理高质量的视频。我想我曾经在 Youtube 上发布过其中一个视频,最高为 480p。所以我打开 Handbrake 并用它把一个 7 分钟 450mb 的 MPG 文件转换为 MP4,它被减少到 85mb,质量没有明显下降(如果有的话)。
所以这让我回到我的问题;MPG 是某种可以存储更大文件的无损格式吗?或者它可能只是“过时”(我不知道这是否适用于视频格式)?我真正想知道的是,将所有视频文件重新格式化为 MP4 或 MKV 并使用这些文件而不是坚持使用体积更大的 MPG 文件(与目前其他的)。
为了清楚起见,我包括了 2 分钟视频的手刹编码前后的图片:
编码前 - MPG 格式:

编码后 - MPG 格式:

我需要将一组静止图像(指向道路的静态摄像机)转换为视频。
我考虑过视频编解码器,例如 Theora、H.264、VP8、VP9、HEVC、Snow。
视频应具有最小尺寸和最大图像质量。现在,从所有可用的命令行参数中,我使用的是帧速率 (fps)、b:v(比特率)和s(宽度*高度)。此外,对于 H.264 和 HEVC,还有-crf和-preset。
还有哪些其他命令行参数可用于实现我所追求的目标?在 ffmpeg 中,有几十个命令行参数并且解析每个参数可能需要很长时间。
我可以使用fbdev(旧/dev/fb0)或DRI DRM功能从帧缓冲区抓取视频吗?
我可以ffmpeg用于此目的吗?
目前我想获取在EGLFS QPA后端运行的Qt Quick窗口的输出(即在全屏窗口上,由OpenGL ES 2及更高版本渲染)。我可以使用功能逐帧执行此操作,但我想防止在和之间发生粉碎或任何不希望的交互的后果。 QScreenQScreenQQmlApplicationEngine
假设我有 10 分钟的视频,我想删除 1:00-2:00 和 4:00-5:00 是否可以通过一个 FFmpeg 命令来做到这一点?(也欢迎其他程序)或者也许是一个命令来剪切我使用的部分(对于每个时间戳),以及另一个命令来合并文件夹内的所有视频?
背景故事(随意跳过这部分)。我的工作是在国家公园巡逻,我会制作 30-40 分钟的视频作为每月报告(关于新发现,如新巢、非法侵入标志、新动物群等)。有时我的主管会要求删除一些他认为不够重要的剪辑。这也意味着我需要在这个缓慢的计算机办公室中重新编码整个内容,这将需要大约 8-10 个小时来编码 1080p60 素材,这也意味着我将在深夜回家。今天我了解到可以使用 FFmpeg 进行剪切和连接而无需重新编码,所以也许它可以节省我的时间:)
我有以下 FFMPEG 命令正在运行。
ffmpeg -y -i slide.mp4 -f lavfi -i "color=c=black:s=1920x1080:r=25:d=1" -filter_complex "[0:v] setpts=PTS-STARTPTS [main]; \
[1:v] trim=end=3,setpts=PTS-STARTPTS [pre]; \
[1:v] trim=end=3,setpts=PTS-STARTPTS [post]; \
[pre][main][post] concat=n=3:v=1:a=0 [out]" -map "[out]" output.mp4
Run Code Online (Sandbox Code Playgroud)
它在视频的开头和结尾附加黑帧。但是,输出文件不包含输入文件中的音频。
任何针对该问题的指示都将受到高度赞赏。
我正在尝试对 mpeg dash 流式传输的视频进行编码,我使用了以下命令(我从本文中获取它: http: //blog.streamroot.io/encode-multi-bitrate-videos-mpeg-dash-mse-基于媒体播放器/):
\n\ncd c:\\ffmpeg\\bin\nset inputFile="C:\\park.mp4"\nset outputFile="C:\\content\\park"\n\nffmpeg -y -i %inputFile% -c:a libfdk_aac -ac 2 -ab 128k -c:v libx264 -r 24 \xe2\x80\x93 g 24 -b:v 1500k -maxrate 1500k -bufsize 1000k -vf "scale=-1:720" %outputFile%_720.mp4\nRun Code Online (Sandbox Code Playgroud)\n\n运行命令后出现以下问题:
\n\n[NULL @ 0000000002f43dc0] Unable to find a suitable output format for \'\xce\x93\xc3\x87\xc3\xb4\' \xce\x93\xc3\x87\xc3\xb4: Invalid argument\nRun Code Online (Sandbox Code Playgroud)\n\n我尝试了其他视频,但错误是相同的。
\n\n我该如何解决这个问题?
\n具体来说,我的意思是将 480p 视频导入 Movie Maker 并将其导出为 1080p MP4?有优势吗?