我正在编写一个 iPad 应用程序,我需要在其中加入不同分辨率的 mp4 文件。为此,我使用 AVAssetReader 的组合来读取 mp4 源文件,并使用 AVAssetWriter 将这些源文件写入单个 mp4 输出文件中。
我尝试使用 AVAssetExportSession 但我遇到的问题是不同的连接文件之间存在黑框。
我现在面临的问题是,一切看起来都正常,但 AVAssetWriter 的完成处理程序从未被调用。
这是我的选择器,将 mp4 文件 URL 列表、单个输出文件 URL 和完成处理程序作为输入。
- (void)resizeAndJoinVideosAtURLs:(NSArray *)videoURLs toOutputURL:(NSURL *)outputURL withHandler:(void(^)(NSURL *fileURL))handler
{
/*
First step: create the writer and writer input
*/
NSError *error = nil;
self.videoAssetWriter = [[AVAssetWriter alloc] initWithURL:outputURL fileType:AVFileTypeMPEG4 error:&error];
NSDictionary *videoSettings = [NSDictionary dictionaryWithObjectsAndKeys:AVVideoCodecH264, AVVideoCodecKey,[NSNumber numberWithInt:640], AVVideoWidthKey,[NSNumber numberWithInt:480], AVVideoHeightKey,nil];
AVAssetWriterInput* videoWriterInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo outputSettings:videoSettings];
videoWriterInput.expectsMediaDataInRealTime = NO;
if([self.videoAssetWriter canAddInput:videoWriterInput])
{
[self.videoAssetWriter addInput:videoWriterInput];
[self.videoAssetWriter …Run Code Online (Sandbox Code Playgroud) 我对 FFMPEG 完全不感兴趣。我正在尝试通过合并 mp3 和 png 图像来生成 mp4 视频文件。
当我尝试将 png 图像转换为 mp4 时,它可以工作
ffmpeg -r 1/5.544000 -i 1.png -qscale 2 1.mp4
Run Code Online (Sandbox Code Playgroud)
但是当我添加 mp3 音频文件时它失败了
ffmpeg -r 1/5.544000 -i 1.png -i 1.mp3 -qscale 2 1.mp4
Run Code Online (Sandbox Code Playgroud)
以下是我得到的错误:
No pixel format specified, yuv444p for H.264 encoding chosen.
Use -pix_fmt yuv420p for compatibility with outdated media players.
[libx264 @ 0x1475be0] using SAR=1/1
[libx264 @ 0x1475be0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
`[libx264 @ 0x1475be0] profile High 4:4:4 Predictive, level 3.1, 4:4:4 8-`bit …Run Code Online (Sandbox Code Playgroud) 然后我用ffmpeg -i 70_1.mp4 -ss 00:00:00 -t 00:00:10 -hide_banner 777.mp4
切片来切,但生成的文件丢失了声音。
MP4文件(实际上是使用MP4格式的HLS流)包含AVC格式的H.264流:[NALU length][NALU data]. H.264 解码器需要附件 B 格式:[startcode][NALU data]. 一般来说,起始码模拟可以以AVC格式发生(例如0x00000001可以发生在编码数据内部)。这是否意味着 MP4 文件格式也可以包含带有起始码仿真的 H.264 NALU?还是应该在封装成 MP4 之前应用仿真预防?
A 手里有一大堆.avi文件,我想将它们转换为.mp4. 将我在互联网上找到的所有内容拼凑在一起,最终得到如下结果:
ffmpeg -i something.avi -c:v copy -c:a copy something.mp4
Run Code Online (Sandbox Code Playgroud)
我得到的内容可以在 VLC 播放器上播放,但是,当然,它可以播放我所经历的任何内容。但是,我无法使用 Finder 中的 QuickLook 或 QuickTime 播放器来播放它。
在某些情况下,我会收到视频,但没有声音。在其他一些情况下,我会收到乱码的视频。
我猜测.avi文件内的音频或视频编解码器与 MacOS 不兼容,并且copy上面的说明不合适。在这种情况下,我想我实际上需要重新编码音频或视频。
如果这听起来不连贯,我承认我对视频文件知之甚少。
尝试制作可在 MacOS 上本地运行的 MP4 的最佳设置是什么?
我有一个从网络摄像头捕获并在 python 中使用 OpenCV 的视频文件。网络摄像头标称 FPS 为 30 FPS,但由于环境的原因,实际 FPS 有所不同,有时可能低至 24 FPS。录制的视频是使用 OpenCV 创建的VideoWriter,使用 MP4V FOURCC 并且始终具有 30 的 FPS 值,如果实际 FPS 不是 30,这会使视频的持续时间不正确。我有一个文件,其中包含从网络摄像头读取每个帧时的时间戳(使用 python 生成time.time())。
问题:
使用 FFMPEG(或其他软件),我可以使用时间戳信息创建新的视频文件(可能是 VFR 文件),然后将其转换为 CFR 文件吗?
我不确定创建具有正确时基的视频文件的正确方法是什么。也许我可以分割视频的帧并将它们保存为图像,然后使用时间戳和图像来创建 VFR 视频,但我想看看是否可以用另一种更优雅的方式来做到这一点。
提前致谢!
我使用Video for Everyong解决方案实现了video5
我将视频标记属性设置为muted ="muted",将flash设置为属性'mute':true
IE正在播放mp4文件,但加载音频播放.
任何人都知道如何为IE9静音吗?
谢谢!
这是代码:
我需要在网页上的嵌入式Flash播放器上播放视频(我正在使用jwplayer).我知道mp4和flv可以在flash播放器上播放.这两个中哪个是更好的格式?我读到mp4视频需要完全加载,因为moov atom在文件的开头.有没有什么地方可以在flash播放器上完全比较mp4和flv视频?
编辑:我的选择是mp4,因为它可以在flash播放器上播放,也可以在不支持flash的设备上播放,两者之间的尺寸差异可以忽略不计,因为它们都使用h.264/aac.但我需要说服其他人.所以请列出使用mp4而不是flv的任何缺点,这样我就不会错过任何东西
我写了一个MP4解析器,它可以很好地读取MP4中的原子,并将它们拼接在一起 - 结果是一个技术上有效的MP4文件,Quicktime可以打开等等,但它不能播放任何音频,因为我相信定时/采样信息全部关闭.我应该提一下,我只对音频感兴趣.
我正在做的是尝试从现有的MP4中取出moov atoms/etc,然后只取一个文件中mdat原子的子集来创建一个新的,更小的MP4.在这方面,我已经改变了duration在mvhd原子,以及在时间mdia头.tkhd这个文件中没有原子有编辑,所以我相信我不需要改变那里的持续时间 - 我错过了什么?
在创建新的MP4时,我正确地mdat使用宽盒子对块进行切片,并将'mdat'标题/大小保持在正确的位置 - 我确保使用新内容更新大小.
现在它完全有110%可能我错过了一些关于格式的重要内容,但如果可能的话,我很想得到最后一块.有人有任何意见/想法吗?
代码可以在以下链接中找到:
我想从视频中提取单帧(作为拇指),而无需下载完整的视频文件.我想只读取mp4标题(信息应该在moov原子中),然后下载所需的字节范围.Afaik这就是当您跳到无缓冲的部分时,浏览器(HTML5视频)所做的事情
我已经看过:HTML5视频的字节范围请求(伪流)如何工作?但我无法弄清楚如何与ffmpeg一起使用它.
非常感谢!