- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 FFMPEG 从管道输入录制视频。管道输入采用 WebM 格式,即视频编解码器为 VP8,音频编解码器为 OPUS。我可以使用 FFMPEG 以 WebM 格式保存输出视频,没有任何问题。但是当我尝试将其保存为 MP4 格式时,我没有得到所需的输出。虽然保存时没有错误,但输出文件显示错误,描述为“此文件不包含可播放的流!”。
这些是以 WebM 格式成功录制的选项。
'-loglevel', 'debug', '-protocol_whitelist', 'pipe,udp,rtp',
'-fflags', '+genpts', '-i', 'pipe:0', '-map', '0:v:0', '-c:v',
'copy', '-map', '0:a:0', '-strict', '-2', '-c:a', 'copy', '-flags',
'+global_header', '-f', 'webm', 'output.webm'
这是我以 MP4 格式录制的 ffmpeg 选项。
'-thread_queue_size', '4096', '-r', '25', '-i', 'pipe:0',
'-c:v', 'libx264', '-preset', 'veryFast', '-pix_fmt', 'yuvj420p',
'-acodec', 'aac', "output.mp4"
将此命令作为子进程执行后的控制台输出
> ffmpeg::process::data [data:' libavutil 56. 31.100 / 56.
31.100\n' + ' libavcodec 58. 54.100 / 58. 54.100\n' + '
libavformat 58. 29.100 / 58. 29.100\n' + ' libavdevice 58.
8.100 / 58. 8.100\n' + ' libavfilter 7. 57.100 / 7. 57.100\n'
+ ' libavresample 4. 0. 0 / 4. 0. 0\n' + ' libswscale
5. 5.100 / 5. 5.100\n' + ' libswresample 3. 5.100 / 3.
5.100\n' + ' libpostproc 55. 5.100 / 55. 5.100\n'] +1ms
>
> ffmpeg ffmpeg::process::data [data:"Input #0, matroska,webm, from
> 'pipe:0':\n" + ' Metadata:\n' + ' encoder : Chrome\n' + '
> Duration: N/A, start: 0.000000, bitrate: N/A\n' + ' Stream
> #0:0(eng): Audio: opus, 48000 Hz, stereo, fltp (default)\n' + '
Stream #0:1(eng): Video: vp8, yuv420p(progressive), 1920x950, SAR 1:1
> DAR 192:95, 30 fps, 30 tbr, 1k tbn, 1k tbc (default)\n' + '
> Metadata:\n' + ' alpha_mode : 1\n'] +1s
>
>
> ffmpeg::process::data [data:'Stream mapping:\n' + ' Stream #0:1 ->
> #0:0 (vp8 (native) -> h264 (libx264))\n' + ' Stream #0:0 -> #0:1
(opus (native) -> aac (native))\n'] +1ms
>
> ffmpeg::process::data [data:'[swscaler @ 0x55a63050ddc0] deprecated
> pixel format used, make sure you did set range correctly\n'] +23ms
>
> ffmpeg::process::data [data:'[libx264 @ 0x55a630489980] using
> SAR=1/1\n'] +10ms
>
> ffmpeg::process::data [data:'[libx264 @ 0x55a630489980] using cpu
> capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2\n'] +0ms
>
> ffmpeg::process::data [data:'[libx264 @ 0x55a630489980] profile
> High, level 4.0\n'] +8ms
>
> ffmpeg::process::data [data:'[libx264 @ 0x55a630489980] 264 - core
> 155 r2917 0a84d98 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 -
> http://www.videolan.org/x264.html - options: cabac=1 ref=1
> deblock=1:0:0 analyse=0x3:0x113 me=hex subme=2 psy=1 psy_rd=1.00:0.00
> mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=1 cqm=0
> deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=18
> lookahead_threads=6 sliced_threads=0 nr=0 decimate=1 interlaced=0
> bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1
> b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=250
> keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=10 rc=crf
> mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40
> aq=1:1.00\n'] +1ms
>
> ffmpeg::process::data [data:"Output #0, mp4, to 'output.mp4':\n" + '
> Metadata:\n' + ' encoder : Lavf58.29.100\n' + ' Stream
> #0:0(eng): Video: h264 (libx264) (avc1 / 0x31637661),
yuvj420p(pc), 1920x950 [SAR 1:1 DAR 192:95], q=-1--1, 25 fps, 12800 tbn, 25 tbc
> (default)\n' + ' Metadata:\n' + ' alpha_mode : 1\n' + '
> encoder : Lavc58.54.100 libx264\n' + ' Side data:\n' + '
> cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1\n' + '
> Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
> stereo, fltp, 128 kb/s (default)\n' + ' Metadata:\n' + '
> encoder : Lavc58.54.100 aac\n'] +0ms
>
> ffmpeg::process::data [data:'frame= 45 fps=0.0 q=28.0 size=
> 0kB time=00:00:01.87 bitrate= 0.2kbits/s speed=3.48x \r'] +505ms
>
> ffmpeg::process::data [data:'frame= 61 fps= 56 q=28.0 size=
> 0kB time=00:00:02.41 bitrate= 0.2kbits/s speed=2.22x \r'] +564ms
>
> ffmpeg::process::data [data:'frame= 76 fps= 48 q=28.0 size=
> 0kB time=00:00:02.88 bitrate= 0.1kbits/s speed=1.81x \r'] +492ms
我对此输出有疑问,因为它可能导致了问题。
ffmpeg::process::data [data:'[swscaler @ 0x55a63050ddc0] deprecated
pixel format used, make sure you did set range correctly\n'] +23ms
我希望我已经提供了有关我面临的问题的足够信息。请询问正确理解问题所需的任何其他信息。
最佳答案
如果您将数据传送到 ffmpeg
进程,总是关闭stdin
先等待ffmpeg
过程自行完成。这对于 MP4 格式尤其重要,但总的来说这是一个很好的做法。
MP4 和 MKV 之间的主要区别之一是 MP4 将其流信息(又名 MOOV 数据包)存储在 文件结尾默认。因此,如果您过早地终止 ffmpeg(例如,在将最后一帧写入管道之后),您就没有给 ffmpeg 写入 MOOV 数据包的机会,这会导致文件不可用。
关于video - FFmpeg 管道输入,从 WebM 转码到 MP4 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72068769/
我正在使用 Assets 管道来管理我的 Grails 3.0 应用程序的前端资源。但是,似乎没有创建 CoffeeScript 文件的源映射。有什么办法可以启用它吗? 我的 build.gradle
我有一个我想要的管道: 提供一些资源, 运行一些测试, 拆资源。 我希望第 3 步中的拆卸任务运行 不管 测试是否通过或失败,在第 2 步。据我所知 runAfter如果前一个任务成功,则只运行一个任
如果我运行以下命令: Measure-Command -Expression {gci -Path C:\ -Recurse -ea SilentlyContinue | where Extensio
我知道管道是一个特殊字符,我需要使用: Scanner input = new Scanner(System.in); String line = input.next
我再次遇到同样的问题,我有我的默认处理方式,但它一直困扰着我。 有没有更好的办法? 所以基本上我有一个运行的管道,在管道内做一些事情,并想从管道内返回一个键/值对。 我希望整个管道返回一个类型为 ps
我有三个环境:dev、hml 和 qa。 在我的管道中,根据分支,阶段有一个条件来检查它是否会运行: - stage: Project_Deploy_DEV condition: eq(varia
我有 Jenkins Jenkins ver. 2.82 正在运行并想在创建新作业时使用 Pipeline 功能。但我没有看到这个列为选项。我只能在自由式项目、maven 项目、外部项目和多配置之间进
在对上一个问题 (haskell-data-hashset-from-unordered-container-performance-for-large-sets) 进行一些观察时,我偶然发现了一个奇
我正在寻找有关如何使用管道将标准输出作为其他命令的参数传递的见解。 例如,考虑这种情况: ls | grep Hello grep 的结构遵循以下模式:grep SearchTerm PathOfFi
有没有办法不因声明性管道步骤而失败,而是显示警告?目前我正在通过添加 || exit 0 来规避它到 sh 命令行的末尾,所以它总是可以正常退出。 当前示例: sh 'vendor/bin/phpcs
我们正在从旧的 Jenkins 设置迁移到所有计划都是声明性 jenkinsfile 管道的新服务器……但是,通过使用管道,我们无法再手动清除工作区。我如何设置 Jenkins 以允许 手动点播清理工
我在 Python 中阅读了有关 Pipelines 和 GridSearchCV 的以下示例: http://www.davidsbatista.net/blog/2017/04/01/docume
我有一个这样的管道脚本: node('linux'){ stage('Setup'){ echo "Build Stage" } stage('Build'){ echo
我正在使用 bitbucket 管道进行培训 这是我的 bitbucket-pipelines.yml: image: php:7.2.9 pipelines: default:
我正在编写一个程序,其中输入文件被拆分为多个文件(Shamir 的 secret 共享方案)。 这是我想象的管道: 来源:使用 Conduit.Binary.sourceFile 从输入中读取 导管:
我创建了一个管道,它有一个应该只在开发分支上执行的阶段。该阶段还需要用户输入。即使我在不同的分支上,为什么它会卡在这些步骤的用户输入上?当我提供输入时,它们会被正确跳过。 stage('Deplo
我正在尝试学习管道功能(%>%)。 当试图从这行代码转换到另一行时,它不起作用。 ---- R代码--原版----- set.seed(1014) replicate(6,sample(1:8))
在 Jenkins Pipeline 中,如何将工件从以前的构建复制到当前构建? 即使之前的构建失败,我也想这样做。 最佳答案 Stuart Rowe 还在 Pipeline Authoring Si
我正在尝试使用 执行已定义的作业构建 使用 Jenkins 管道的方法。 这是一个简单的例子: build('jenkins-test-project-build', param1 : 'some-
当我使用 where 过滤器通过管道命令排除对象时,它没有给我正确的输出。 PS C:\Users\Administrator> $proall = Get-ADComputer -filter *
我是一名优秀的程序员,十分优秀!