我有超过TB的家庭电影与可怕的文件名.找到你想要的东西是不可能的.我想将所有文件重命名为最初记录的时间(不是它们放在我的计算机上的文件时间).某些应用程序(如Ulead Video Studio)可以访问此信息,我认为这些信息嵌入在CODEC中.
我很乐意找到如何编写.Net应用程序以提取此信息以重命名我的文件,以便我可以轻松地组织它们或找到一个可以为我执行此操作的应用程序.非常感谢您的进步.
其他信息::家庭电影是在miniDV和DVD摄像机上拍摄的.
我知道在OpenCV中还有其他问题涉及FFmpeg的使用,但是大多数问题似乎已经过时了.
通过在CMake中打开makefile,我可以验证我已经WITH_FFMPEG开启了标志.我的OpenCV版本的输出文件夹包含一个bin文件夹,其中包含文件夹Debug和Release文件夹,每个文件夹都包含一个名为的.dll文件的副本opencv_ffmpeg244.dll.当我创建一个VideoWriter并验证指向.dll的函数指针是否正确填充时,我可以进入OpenCV的源代码.这似乎很有效.
如果我使用CV_FOURCC_PROMPT的FOURCC代码,则以下编解码器正常工作:
以下编解码器无法正常工作(即生成0kb视频文件):
如果我的理解是正确的,使用FFMPEG应该允许使用一大堆新的编解码器(x264,DIVX,XVID等)编码视频.但是,这些都不会出现在提示中.使用宏通过FOURCC代码手动设置它们CV_FOURCC(...)也不起作用.例如,使用此:CV_FOURCC('X','2','6','4')生成消息:
Could not find encoder for codec id 28: Encoder not found
并制作一个大小为0kb的视频文件.
使用此方法:不CV_FOURCC('X','V','I','D')产生任何错误消息,并生成6kb的视频文件,该文件无法在Windows Media Player或VLC中播放.
我尝试从Xvid.org手动下载Xvid编解码器.安装完成后,它会出现在提示符下的VFW选项下,并且编码正常.所以它接近一个解决方案,但如果我尝试直接设置FOURCC代码,它仍然会失败,如上所述!我每次都必须从提示中选择它.是不是FFmpeg应该包含一大堆编解码器?如果是这样,为什么我手动下载编解码器而不是使用FFmpeg内置的编解码器?
我在这里错过了什么?有没有办法检查FFMPEG是"启用"的?似乎提示中唯一可用的编解码器是VFW编解码器,而不是FFMPEG编解码器.在.dll已建成和正坐在同一文件夹中的可执行文件,但它似乎它不以任何方式使用.
这里有很多相关的问题.希望找到一些了解OpenCV中FFmpeg实现的人,并了解所有这些部分是如何组合在一起的.
我想将NSInputStream传递给MPMoviePlayerController,或MPMoviePlayerViewController,或其他任何东西.
输入流利用Apple框架不支持的协议.
我尝试创建一个自定义的NSURLProtocol(这种类型仅适用于设备(不是模拟器)),但是MediaPlayer尝试缓存所有内容并导致应用程序在分配250MB时崩溃.视频从不播放.
关于如何进行的任何想法?我知道有些应用程序会这样做.
我真的不想建立自己的媒体播放器,但似乎可能,不是吗?有没有关于如何仅使用CoreMedia而不是FFMPEG(等)的例子?编解码器选择对我来说并不重要 - 只是通过专有协议进行流式传输时的能力.
谢谢!
为什么它在某些文件上抛出此错误,而对于其他文件则不会?
这些文件都是 .mp4 视频。
'ValueError:MoviePy 找不到与文件名关联的编解码器。在 write_videofile 中提供“编解码器”参数。
# The videos on which we will work on (intro & a video)
intro = VideoFileClip('./videos/intro.mp4')
original = VideoFileClip('./videos/original_video.mp4')
# We cut 2s and crop the original video
original.cutout(0, 2)
original = vfx.crop(original, x1=10)
# Adding a watermark on top of the original video
watermark = (ImageClip("./images/watermark.png")
.set_duration(original.duration)
.set_position(("center","bottom"))
.resize(width=intro.w))
watermaked = CompositeVideoClip([original, watermark], size=original.size)
# Our final video: Intro + Waterkarmed, and output it.
final_render = concatenate_videoclips([intro, watermaked], method='compose')
final_render.write_videofile('./videos/output_video.mp4', …Run Code Online (Sandbox Code Playgroud) 我看到关于这个主题有几个问题,但我仍然遇到错误。我想要做的就是将我库中的视频转换为 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) 我需要解决与此相反的问题.我有QString与非ascii符号.
例如:
Schöne Grüße
如何获取UTF8大小写的字符串长度?它应该是15.
我尝试过转换ByteArray为Latin1,ASCII但是长度始终是相同的.
如果我们想要发出一个HTTP/1.0或HTTP/1.1请求,例如给定媒体资源的字节 20000 到 100000 或秒 20 到 35 秒,.webm或者.ogg音频或.mp4视频,其中响应将是能够在没有其他部分的情况下播放的离散媒体片段。媒体资源,我们如何实现这一目标?
例如
let headers = new Headers();
let range = 1024 * 1024;
headers.append("Range", "bytes=0-" + range);
let request = new Request(url, {headers:headers});
fetch(request)
.then(response => response.blob())
.then(data => audio.src = URL.createObjectURL(data));
Run Code Online (Sandbox Code Playgroud)
负载和媒体播放
let headers = new Headers();
let range = 1024 * 1024;
headers.append("Range", "bytes=" + range + "-" + range * 2);
let request = new Request(url, {headers:headers});
fetch(request)
.then(response …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用此命令连接 6 个具有相同分辨率和相同编解码器的 WebM 视频文件,ffmpeg -f concat -i mylist.txt -c copy finalvideo.webm但生成的视频冻结了某些部分,正是每个部分连接的位置,是的,我正在使用最新的 ffmpeg
结果视频音频频谱您很容易看到视频音频冻结
https://i.stack.imgur.com/SX6WT.gif
我的列表.txt
file '1.webm'
file '2.webm'
file '3.webm'
file '4.webm'
file '5.webm'
file '6.webm'
Run Code Online (Sandbox Code Playgroud)
我的日志
我正在对 45 分钟 1.2GB 视频 80,0000 帧大小为 1344x756 的视频进行一些渲染,并且视频采用 mp4 格式,我正在尝试使用 x265 压缩输出视频问题是当我使用时cv2.VideoWriter 10 分钟的视频输出大小超过 2GB,这不是我想要的结果,所以我在 mac osx 和 ubuntu 18 上尝试了以下操作:
codec = cv2.VideoWriter_fourcc(*'HEVC')
out = cv2.VideoWriter('output.mp4', 'HEVC', fps, (width, height))
Run Code Online (Sandbox Code Playgroud)
我得到的只是运行时警告:
OpenCV: FFMPEG: tag 0x43564548/'HEVC' is not found (format 'mp4 / MP4 (MPEG-4 Part 14)')'
Run Code Online (Sandbox Code Playgroud)
我想要实现的不一定是最高质量的输出,而应该是高质量和尽可能小的尺寸。
如何获取当前系统上可用的编解码器列表,即据我了解,当编解码器不可用时,cv2.VideoWriter可能会失败。默认使用什么编解码器?
不确定是否适用于所有情况,但似乎 opencv 回退到mp4v编解码器作为默认消息:OpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'
另外,为了添加新的编解码器,我们是否需要重建 opencv 或者我们可以ffmpeg通过类似的方式安装额外的编解码器\更新apt get?