标签: mp4

使用 Python3 和 Mutagen 的 iTunes MP4 标签/元数据

我目前正在使用 Python 的 Mutagen 模块来为 iTunes 准备视频文件的 MP4 标签。它工作得很好,但我错过了一个非常重要的标签,它称为“stik”,代表 iTunes 媒体类型。

这是我当前的代码:

mp4_video_tags = MP4(mp4_file)

mp4_video_tags['\xa9nam'] = 'Video Name'
mp4_video_tags['\xa9alb'] = 'DVD-Name'
mp4_video_tags['\xa9gen'] = 'Video-Training'
mp4_video_tags['\xa9day'] = '2015'
mp4_video_tags['\xa9ART'] = 'Company'
mp4_video_tags['aART'] = 'Company'
mp4_video_tags['\xa9wrt'] = 'Company'
mp4_video_tags['cprt'] = 'Copyright (c) Company'
mp4_video_tags['desc'] = 'description'
mp4_video_tags['tvsh'] = 'DVD-Name'
mp4_video_tags['trkn'] = [(1, 18)]
mp4_video_tags['disk'] = [(1, 1)]
mp4_video_tags['stik'] = 10

mp4_video_tags.save()
Run Code Online (Sandbox Code Playgroud)

该代码工作得很好,但在“mp4_video_tags['stik'] = 10”时崩溃,因为该标签的值不能是整数。但根据此列表:https://code.google.com/p/mp4v2/wiki/iTunesMetadata#Media_Type_%28stik%29

对于电视节目,它必须是值为 10 的整数。

我注意到 Mutagen 没有在其标签列表/文档中显示“stik”标签,也许默认情况下不支持:https ://mutagen.readthedocs.org/en/latest/api/mp4.html

谁能解释一下如何将带有 Mutagen 的电视节目的 MP4 标签“stik”设置为 10?

python mp4 itunes mutagen python-3.x

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

强制浏览器更新缓存的 HTML5 视频对象

有没有办法在页面重新加载时强制 Web 浏览器,即 Firefox 或 Firefox Mobile(最新版本)更新 HTML5 视频对象?

我正在使用 CTRL+R、重新加载按钮和 2 分钟的 HTTP 刷新,但除非重新启动浏览器或清除缓存,否则这些选项都不会“更新”视频文件。此外,Firebug 甚至不显示正在加载的 MP4 文件。

旁注:MP4 文件由 shell 脚本每 2 分钟生成一次。我已经通过检查时间戳验证了视频正在更新,而且如果我退出/重新启动 Firefox,它就可以工作。

这是我的代码:

<!DOCTYPE html>

<html>

<head>
<title>Cameras</title>
<meta http-equiv='refresh' content='120'>
</head>

<body>
<h3>Cameras</h3>
<video id="CamLoop" height="100%" width="100%" autoplay loop><source src='/Get/Cams/_Loop.mp4'></source></video>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)

html javascript video firefox mp4

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

使用 puppeteer、windows 播放 mp4 铬

我正在 Windows 10 上的节点中使用 puppeteer 进行开发。问题是当我打开一个播放 mp4 文件的网站时,浏览器告诉我它不受支持。

我找到了这个包:chromium-codecs-ffmpeg-nonfree;但它适用于Linux!

如何在 Windows 上使用 puppeteer 在 Chromium 中播放 .mp4?

windows video mp4 chromium puppeteer

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

使用 ffmpeg 从容器中丢弃数据流

我正在尝试使用 ffmpeg 摆脱 Mp4 容器中的数据(字幕)流。

这是ffprobe的截图:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.m4v':
Metadata:
major_brand     : isom
minor_version   : 2
compatible_brands: isomiso2avc1mp41
creation_time   : 2018-01-19T15:10:48.000000Z
Duration: 00:00:42.17, start: 0.000000, bitrate: 6260 kb/s
Chapter #0:0: start 0.000000, end 42.166000
Metadata:
  title           : Chapter 1
Stream #0:0(eng): Data: bin_data (text / 0x74786574), 0 kb/s (default)
Metadata:
  creation_time   : 2018-01-19T15:10:48.000000Z
  handler_name    : Apple Alias Data Handler
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, 
fltp, 317 kb/s (default)
Metadata:
  creation_time   : 2018-01-19T15:10:48.000000Z …
Run Code Online (Sandbox Code Playgroud)

video mp4 containers ffmpeg subtitle

3
推荐指数
2
解决办法
3709
查看次数

使用 AVMutableComposition 和 AVAssetExportSession 创建的 MP4 视频可以在 Quicktime 中使用,但在所有其他视频工具中显示为损坏

我正在尝试在 macOS 上使用 Swift、AVFoundation 和 AVKit 将多个电影的片段一起编辑到一个剪辑中。下面的 Swift 代码是我正在尝试做的事情的一个很好的例子:

\n\n
import AVFoundation\nimport AVKit\n\nlet source1 = AVAsset(url: URL(string: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4")!)\nlet source2 = AVAsset(url: URL(string: "http://techslides.com/demos/sample-videos/small.mp4")!)\n\nlet comp = AVMutableComposition()\n\ncomp.addMutableTrack(withMediaType: .video, preferredTrackID: kCMPersistentTrackID_Invalid)\ncomp.addMutableTrack(withMediaType: .audio, preferredTrackID: kCMPersistentTrackID_Invalid)\n\nfunc cmtime(_ i: Double) -> CMTime {\n    return CMTime(seconds: i, preferredTimescale: 600)\n}\n\nfunc insertSecond(into: AVMutableComposition, from: AVAsset, start: CMTime, at: CMTime) throws {\n    let videoTrack = into.tracks(withMediaType: .video).first!\n    let audioTrack = into.tracks(withMediaType: .audio).first!\n    try videoTrack.insertTimeRange(\n        CMTimeRange(start: start , duration: cmtime(1.0)),\n        of: from.tracks(withMediaType: .video).first!,\n        at: at\n    )\n    try audioTrack.insertTimeRange(\n        CMTimeRange(start: start, …
Run Code Online (Sandbox Code Playgroud)

mp4 ffmpeg avfoundation avmutablecomposition swift

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

生成包含循环回旋镖视频文件的 mp4 视频的最有效方法?

我开发了一个 Android 应用程序,允许用户创建类似回旋镖的 mp4 视频。这段视频由 10 张静止图像组成,来回播放速度非常快。我知道这样的视频(回旋镖效果)可以在播放时从单个视频文件轻松循环播放,但我真的需要创建一个 mp4 视频,它基本上包含已经准备好的回旋镖视频。用户可以在任何外部播放器上下载和播放输出视频(显然我没有任何控制权)。

为此,我目前从循环中的图像创建视频。循环从第 1 张图片开始,到第 10 张图片,帧之间有 0.25 秒的延迟,然后从第 10 张返回到第 1 张,包括延迟。并且有 5 个循环,这基本上意味着从 5 * 10 * 2 = 100 张图像创建单个视频。我知道这有点荒谬,所以准备这个视频所花费的时间也是荒谬的(大约 1:40 分钟)。

假设输出视频确实必须由 5 个来回循环组成,您可以推荐什么解决方案?我想过创建单循环视频(20 张图片),然后通过将其连接 5 次来创建最终输出视频。但这能有什么好处吗?我正在尝试为初学者 Android 程序员找到一种有效但易于理解的方式。

video mp4 encoding android ffmpeg

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

Safari 无法从缓存中检索 mp4 视频,并且有时在下载相同资源时超时

我正在运行一个显示全屏视频故事的 VueJS 应用程序。我不会在故事中创建与媒体数量一样多的标签:我只是在每次播放新视频时更改组件视频源。

但看起来 Safari(桌面版和移动版)在加载后仍然不会缓存 HTML 视频:当我再次播放以前的媒体时,Safari 会再次下载该资源。而不是像 Chrome 那样从缓存中获取。这里已经报告了同样的问题,但仍然没有正确的答案。

当我们在故事中快速来回时,Safari 甚至会停止下载最后字节视频(产生某种超时),因此故事看起来被卡住了。这是一个示例链接

有谁知道一个好的替代方案可以避免在 Safari 上每次播放时重新下载视频数据?

safari video mp4 caching vue.js

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

将画布数据另存为 mp4 - Javascript

我有一个动画画布,我想将其转换为 mp4。我正在使用 MediaRecorder 来捕获屏幕,然后转换该 Blob。我了解到 MediaRecorder 不允许在 mp4 中录制,所以我被迫在 webm 中获取画布。这是我尝试过的:

<canvas id="canvas"></canvas>
Run Code Online (Sandbox Code Playgroud)

var recordedChunks = [];

var time = 0;
var canvas = document.getElementById("canvas");

return new Promise(function (res, rej) {
    var stream = canvas.captureStream(60);

    mediaRecorder = new MediaRecorder(stream, {
        mimeType: "video/webm; codecs=vp9"
    });

    mediaRecorder.start(time);

    mediaRecorder.ondataavailable = function (e) {
        recordedChunks.push(event.data);
        if (mediaRecorder.state === 'recording') {
            mediaRecorder.stop();
        }
    }

    mediaRecorder.onstop = function (event) {
        var blob = new Blob(recordedChunks, {
            "type": "video/webm"
        });
        var url = URL.createObjectURL(blob);
        res(url);

        var xhr …
Run Code Online (Sandbox Code Playgroud)

javascript mp4 canvas

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

为什么 MP4/AVC 容器文件中指定多个时间刻度?

我当前正在解析 MPEG-DASH 流初始化段(由 FFMPEG 生成),我注意到时间刻度是在我的文件中的多个不同位置指定的:

  • 在电影标题框中(mvhd):1000
  • 在我的视频轨道(mdhd)的媒体标题框中:15360
  • 在 AVC 配置框 (avcC) 中,更准确地说,在序列参数集的 VUI 部分中 NAL 单位:60

为什么在这么多不同的地方指定它?为什么他们有不同的价值观?这些价值有等级吗?例如,60 是否会覆盖 15360,15360 是否会覆盖 1000?

这是我用来生成我正在查看的文件的命令:

ffmpeg -f v4l2 -pixel_format yuyv422 -vcodec rawvideo -framerate 30 -video_size 640x360 -i /dev/video0 \
        -f dash -remove_at_exit false -use_template true -use_timeline true -streaming true -window_size 5 -extra_window_size 5 -seg_duration 5 -vcodec libx264 -b:v 1M -maxrate 1M -bufsize 2M  -pix_fmt yuv420p -r 30 -s 640x360 -aspect 16:9 /var/www/html/media/live.mpd
Run Code Online (Sandbox Code Playgroud)

mp4 ffmpeg timing video-streaming mpeg-dash

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

Android - 播放视频的不同方式

我刚刚遇到了VideoView无法播放宽度超过320像素的mp4视频文件的限制.我想知道如何克服这些限制.我试图让我的应用程序尽可能宽容,所以除了使用VideoViews之外还有其他方式来播放这些mp4视频吗?

克里斯

mp4 android android-videoview

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