小编Gya*_*yan的帖子

使用ffmpeg更改帧速率

我正在尝试将视频剪辑(MP4,yuv420p)从30 fps转换为24 fps.帧数是正确的,所以我的输出应该从30fps的20分钟变为24fps的25分钟.其他一切都应该保持不变.

尽量尝试我用ffmpeg尝试的所有内容都会转换帧速率,但会更改帧数以保持相同的持续时间或更改持续时间而不更改帧速率.

所以我一直在尝试这样的事情;

ffmpeg -y -r 30 -i seeing_noaudio.mp4 -r 24 seeing.mp4
Run Code Online (Sandbox Code Playgroud)

(我在Windows上这样做,但通常是在linux上).这会转换帧速率但会丢帧,因此总持续时间不会改变.

或者我试过了

ffmpeg -y -i seeing_noaudio.mp4 -filter:v "setpts=1.25*PTS" seeing.mp4
Run Code Online (Sandbox Code Playgroud)

这改变了持续时间而不是帧率.

当然,我应该可以使用单个ffmpeg命令执行此操作,而无需重新编码,或者甚至有些人建议返回原始原始帧.

请帮忙

ffmpeg

31
推荐指数
5
解决办法
6万
查看次数

使用 ffmpeg 将视频从 .264 转换为 .265 (HEVC)

我看到关于这个主题有几个问题,但我仍然遇到错误。我想要做的就是将我库中的视频转换为 HEVC,这样它们占用的空间更少。
我试过这个:

ffmpeg -i input.mp4 -c:v libx265 output.mp4
Run Code Online (Sandbox Code Playgroud)

ffmpeg 似乎需要很长时间,输出似乎大小合适。该视频将使用 VLC 播放,但图标很奇怪,当我尝试使用 QuickTime 打开它时,出现错误:“无法打开文档“output.mov”。该文件与 QuickTime Player 不兼容。

我不想更改任何花哨的设置。我只希望文件占用更少的空间并且质量损失最小或没有。

谢谢!

编辑:无法保留我放入视频中的时间戳。
最初我在终端中使用 exiftool。但是,有时这不适用于视频,所以我会将它们空投到我的 iPhone,使用名为 Metapho 的应用程序更改日期,然后将它们空投回来。Exiftool 是创建的,但有时我就是无法工作。它会将日期更改为 1109212 Aug 2nd。奇怪的。最重要的是,当我进行这些转换时,我真的不想丢失其中的时间戳。

我在 .264 中加时间戳的原始文件

ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers
  built with Apple clang version 11.0.0 (clang-1100.0.33.8)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.2.1_2 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.jdk/Contents/Home/include/darwin -fno-stack-check' --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype …
Run Code Online (Sandbox Code Playgroud)

quicktime ffmpeg codec h.264 h.265

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

如何使用命令提示符在VLC中将MP4转换为MP3?

我有接近0的编程经验,但想知道如何做到这一点,并试图找出如何做一段时间.我变得非常沮丧 - 希望我能理解它.我正在尝试将一堆MP4文件转换为MP3文件.我想保留原始文件,只吐出一堆与原始文件同名的MP3文件.

从这里:https://wiki.videolan.org/How_to_Batch_Encode/

显然,您需要做的就是在命令提示符中使用此代码.我之前从未真正使用过Command-Prompt,所以不知道该怎么做.

FOR /R %%G IN (*.m4a) DO (CALL :SUB_VLC "%%G")
FOR /R %%G IN (*.m4a.mp*) DO (CALL :SUB_RENAME "%%G")
GOTO :eof

:SUB_VLC
 SET _firstbit=%1
 SET _qt="
 CALL SET _newnm=%%_firstbit:%_qt%=%%
 SET _commanm=%_newnm:,=_COMMA_%
 REM echo %_commanm%
 CALL "C:\Program Files\VideoLAN\VLC\vlc" -I dummy -vvv %1 --sout=#transcode{acodec="mpga",ab="512","channels=2",samplerate="44100"}:standard{access="file",mux="mpeg1",dst="%_commanm%.mp3"} vlc://quit
GOTO :eof

:SUB_RENAME
 SET _origfnm=%1
 SET _endbit=%_origfnm:*.m4a=%
 CALL SET _newfilenm=%%_origfnm:.m4a%_endbit%=.mp3%%
 SET _newfilenm=%_newfilenm:_COMMA_=,%
 COPY %1 %_newfilenm%
 DEL %1
GOTO :eof

:eof
Run Code Online (Sandbox Code Playgroud)
  1. 到目前为止,我将命令提示符中的目录更改为MP4文件所在的文件夹.
  2. 在代码中,我已将.m4a的所有提及更改为.mp4.
  3. 我将mpga改为mp3.
  4. 我已将"C:\ Program Files\VideoLAN\VLC\vlc"更改为我的vlc程序所在的位置.

我还需要做什么?所有%%在代码中的含义是什么?

非常感谢!

vlc command-prompt

4
推荐指数
1
解决办法
6162
查看次数

Libav多线程解码

根据此处的文档,Libav 提供了多线程解码的“基础设施”。但文档对于多线程解码的实现方式模糊且令人困惑。它是内部支持的并且只需要在结构中设置一个标志,还是用户必须使用所提供的函数提供自己的实现?我进行了很多搜索,但甚至找不到一个使用 libav 进行多线程视频解码的示例。

c c++ libavcodec libav

2
推荐指数
1
解决办法
2506
查看次数

如何使用FFMPEG捕获浏览器的选项卡内容

我正在一个项目中,我需要记录将在不同浏览器的选项卡中播放的HTML5动画。

所以我已经阅读了一些,显然可以使用FFMPEG来完成,也许可以使用gdigrab设备来完成:https ://www.ffmpeg.org/ffmpeg-devices.html#gdigrab

您甚至可以从特定窗口抓取(例如使用title = Calculator记录calc.exe

我想使用此逻辑来捕获多个浏览器选项卡的每个内容。(或至少一个),但我不知道Firefox / Chrome标签的“标题”或它们是否甚至可以作为Windows使用。

我还需要录制音频,因此我需要将计算机的输出设备与选项卡中的视频混合使用。

如果有人对我如何做有更多的了解,我将不胜感激。

谢谢,

windows firefox ffmpeg screen-recording

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

使用 FFmpeg 删除重复帧

我有一个 mp4 文件 samp1.mp4,它有重复的帧,我尝试使用 mpdecimate 来删除它们。我使用的FFmpeg命令行是

ffmpeg -i samp1.mp4 -vf mpdecimate out3.mp4 > out3.txt 2>&1
Run Code Online (Sandbox Code Playgroud)

但输出文件 out3.mp4 仍然具有重复的帧。

该命令生成文本:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'samp1.mp4':
  Metadata:
    major_brand     : M4V 
    minor_version   : 1
    compatible_brands: M4V mp42isom
    creation_time   : 2018-12-26T20:38:35.000000Z
  Duration: 00:00:04.77, start: 0.000000, bitrate: 4495 kb/s
    Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720, 4476 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata:
      creation_time   : 2018-12-26T20:38:35.000000Z
      handler_name    : Mainconcept MP4 Video Media Handler
      encoder         : AVC …
Run Code Online (Sandbox Code Playgroud)

ffmpeg

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

仅使用 ffmpeg(以及所有音频流)重新编码视频流

我正在寻找一种方法来仅重新编码电影的视频流并保留所有其他流,因为它们正在使用ffmpeg或更具体streamio/streamio-ffmpegGithub - StreamIO-FFMPEG)。

我已经尝试了-map 0or 的各种组合-map a:0 -map s:0,但在我尝试的所有组合中,要么根本没有编码,要么没有将所有其他流都复制到新文件中。大多数情况下编码后只有一个音频流,而之前有两个,有时字幕流也会丢失。此外,大多数时候流所使用的语言信息会丢失。

因此,当我有一个包含以下流的电影文件 (mkv) 时:

0: video [H.264, 1080p]
1: audio [english, mp3]
2: audio [french, mp3]
3: subtitle [english (forced)]
4: subtitle [english]
Run Code Online (Sandbox Code Playgroud)

应该采取什么ffmpeg参数,如果我想将视频文件编码为H.265720p,并保持所有其他流,因为他们是谁?

如果我还想将音频流编码为,参数应该是什么AAC

提前致谢!

audio video encoding ffmpeg

0
推荐指数
1
解决办法
7465
查看次数