标签: mp4

YouTube的高清视频流媒体服务器技术?

最近我一直在研究将MP4流式传输到浏览器的不同方法.Flash Media Server在这里是显而易见的选择(使用Cloudfront),我见过的大多数解决方案都使用RTMP协议.

但是,我花了一些时间在YouTube上使用Firebug和Chrome调试器来确定他们的流媒体如何工作,我发现他们的一些视频和质量率之间存在一些有趣的差异.

我的两个样品视频是A和.A最高可达480p,B最高可达1080p.对于这两个视频,所有高达480p的速率都通过HTTP在具有H.264视频和AAC音频的FLV容器中提供.这里有趣的是,如果您还没有下载(缓存)整个视频,并且您尝试跳到视频的未缓存部分,则会发出一个新的请求,其中'begin'参数等于目标偏移量毫秒.来自480p的视频A的示例:

http://v11.lscache8.c.youtube.com/videoplayback?ip=0.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0dWTldQVF9FSkNNNl9PSlhJ&fexp=904806%2C902906%2C903711&algorithm=throttle-factor&itag=35&ipbits=0&burst=40&sver=3&expire=1279756800&key=yt1&signature=D2D704D63C242CF187CAA5B5D5BAFB8DFACAC5FF.39180C01559C976717B651A7EB1D0C6249231EB7&factor=1.25&id=8568eb3135971f6f&begin=111863

Response Headers:
Cache-Control:public,max-age=23472
Connection:close
Content-Length:14320637
Content-Type:video/x-flv
Date:Wed, 21 Jul 2010 17:23:48 GMT
Expires:Wed, 21 Jul 2010 23:55:00 GMT
Last-Modified:Wed, 19 May 2010 12:31:41 GMT
Server:gvs 1.0
X-Content-Type-Options:nosniff
Run Code Online (Sandbox Code Playgroud)

此URL返回的文件是完全有效的FLV,仅包含请求的偏移量之后的视频部分.

我在视频B的更高分辨率版本上进行了同样的测试.在720p和1080p,YouTube将在MP4容器中返回视频,还有H.264视频和AAC音频.令我印象深刻的是,他们的服务器为MP4视频采用相同类型的偏移(通过'begin'参数)并返回一个有效的,可流动的MP4(文件前面的moov原子具有正确的偏移),其中仅包括视频的请求部分.

那么,YouTube如何做到这一点?他们如何使用正确的标题动态生成FLV或MP4容器,并且只生成所请求视频的所需片段?我知道这可以通过使用FFMPEG来寻找所需的起点和qt-faststart脚本来重新定位moov原子到流的前面来实现,但似乎这样太慢了,无法按需处理数百万个YouTube观看者.

想法?

提前致谢!

脚注:此时我不允许包含多个链接,因此这里是视频A的URL:http:// www.youtube .com/watch?v = hWjrMTWXH28"视频可用,最高480p"

youtube mp4 ffmpeg video-streaming

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

Java中的MP4容器编写器

我想为Java找到一个免费的MP4(容器)编写器.我不需要编码器,只需要能够根据预期值写出正确的原子.这样一个库的奖金也可以写成"有效"的F4V.
我更喜欢纯Java解决方案而不是使用JNI或外部可执行文件的东西.

java mp4 h.264

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

我应该将MP3或AAC编解码器用于.mp4文件吗?

我们在Mac OS X上使用ffmpeg实现了一个编码过程.此过程将从以下内容获取源视频和几个文件:.m3u8视频,.mp4视频和.mp3音频文件.

默认情况下,我们使用了m3u8进程中的视频,这是一个带有AAC(通过libfaac)音频的h264(通过libx264)视频.

我们主要在移动设备上使用这些视频(因此是m3u8文件),但我们也使用Android,Windows Phone等的.mp4文件.越来越多的我们还需要通过Flash播放器在网络上提供这些相同的视频或HTML5播放器.

因此,我们希望为所有这些用途提供最好的音频/视频编解码器组合...我很困惑的是.mp4文件的"标准"是什么?

如果.mp4使用mp3编解码器,那么除了QuickTime之外它在任何地方播放都很好,在QuickTime中视频播放但没有音频(在VLC播放器中工作得很好).

我被告知这是由于QuickTime如何使用文件扩展来假设有关视频的信息而不是试图从文件中实际获取编解码器数据?这确实有道理,如果我们编码相同的文件但是使用AAC作为音频编解码器,那么它在QuickTime中工作得很好.

那么---什么是"正确的"或"理想的"音频/视频编解码器组合---使用AAC是最好和最安全的(即它可以在各种设备上工作),即使它不是"免费"编解码器?

mp3 mp4 ffmpeg aac h.264

13
推荐指数
2
解决办法
4万
查看次数

通过PHP的MP4视频传输在Google Chrome中失败

我目前正在尝试通过PHP脚本提供用于HTML5视频(使用video-js)的MP4视频,以控制视频访问.经过一些研究,我得到了这个工作,借助于此处stackoverflow文章.如果我导航到PHP脚本,我可以在Firefox,Safari和IE中查看视频,就像我通过其绝对路径(例如localhost/myvideo.mp4而不是localhost/myscript.php)查看它一样.我的问题在于谷歌浏览器,它只是显示一个黑屏,中间有一个小型媒体播放器,并且什么也没做.

我尝试使用快速重写,例如localhost/avideo.mp4,它路由到PHP脚本,但不幸的是,这并没有改变任何东西.

这是我的脚本:

if (is_file($uri)) {
    header('Content-Type: video/mp4');
    if (isset($_SERVER['HTTP_RANGE'])) {
        $this->rangeDownload($uri);
        exit;
    } else {
        header("Content-Length: ".filesize($uri));
        $this->readfile_chunked($uri);
        exit;
    }
} else {
    //error
}
Run Code Online (Sandbox Code Playgroud)

rangeDownload方法直接来自此链接的附录A,如上述stackoverflow文章中所建议的那样.

php video html5 mp4 google-chrome

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

Android MediaCodec:减少mp4视频大小

我正在寻找一种"压缩"mp4视频的方法.为此,我想降低视频的分辨率和/或降低FPS.

经过长时间的研究,我认为这样做的方法是使用MediaCodec和相关的API,如下所示:

- > MediaExtractor从mp4文件中提取编码的媒体数据. - > MediaCodec(解码器):解码每个帧以供以后处理. - > MediaCodec(编码器):此时,我猜我们应该在哪里建立MediaFormat参数,例如视频分辨率,这应该有助于我们减少mp4文件的最终大小. - > MediaMuxer用于生成mp4文件(MinSDK 18,这可能是一个问题,但现在......好吧).

我不想使用SurfaceView/TextureView.关于音频,我不想处理它以降低质量.

我一直在看这里的所有例子:http: //bigflake.com/mediacodec/

我也看过CTS源代码模块.

我一直在研究以下几个项目:https: //github.com/vecio/MediaCodecDemo/blob/master/src/io/vec/demo/mediacodec/DecodeActivity.java

当然,我已经在stackoverflow上阅读了几十篇帖子.

问题是我还没有找到任何适合这个porpuse的代码示例.我尝试将各种代码片段放在一起放在一个项目中,但实际上并没有用.

谢谢.

video mp4 android resolution mediacodec

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

什么是python OpenCV中mp4视频的编解码器

fourcc = cv2.cv.CV_FOURCC(*'XVID')
Run Code Online (Sandbox Code Playgroud)

以上行用于avi视频.以同样的方式,我们在Ubuntu中使用哪种编解码器用于mp4视频?

python ubuntu mp4 opencv codec

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

如何使用 ffmpeg 将自定义缩略图添加到 .mp4 文件?

我试图找到合适的 ffmpeg 命令来将 .png 或 .jpg 图像作为缩略图添加到 .mp4 视频中。该命令最终将由 C# 程序自动执行。

这是我到目前为止:

# This does not work. It only removes the default thumbnail.
ffmpeg -i video.mp4 -i image.png -acodec copy -vcodec copy -map 0 -map 1:0 OUTPUT.mp4
Run Code Online (Sandbox Code Playgroud)

我想要的 ffmpeg 可以实现吗?如果是这样,请指导我朝着正确的方向前进。

mp4 ffmpeg image thumbnails video-processing

13
推荐指数
2
解决办法
2万
查看次数

mp4 atom - 如何区分音频编解码器?是AAC还是MP3?

我正在研究一个mp4容器解析器,但是我疯狂地试图识别流的音频编解码器.我使用了QtAtomViewer和AtomicParsley,但是当我找到原子时:

trak-> mdia-> minf-> stbl-> STSD

即使mp4文件有mp3流,我也总是"mp4a".

我应该找一个".mp3"fourcc吗?

我附加了两个不同的mp4结构:带有AAC音频流的mp4容器

     Atom trak @ 716882 of size: 2960, ends @ 719842
     Atom tkhd @ 716890 of size: 92, ends @ 716982
     Atom mdia @ 716982 of size: 2860, ends @ 719842
         Atom mdhd @ 716990 of size: 32, ends @ 717022
         Atom hdlr @ 717022 of size: 33, ends @ 717055
         Atom minf @ 717055 of size: 2787, ends @ 719842
             Atom dinf @ 717063 of size: 36, ends @ 717099
                 Atom …
Run Code Online (Sandbox Code Playgroud)

audio mp4 codec

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

iPhone MP4视频播放列表

我在MP4容器中有一个编码为H.264/AAC的素材库.现在我可以使用Apache和mod_h264成功地将素材流式传输到iPhone.

我希望能够做的是告诉iPhone背靠背播放三个片段.

自然的解决方案似乎是创建一个播放列表.m3u8并指出在这名球员,但是当我做,我得到的音频没有画面.我不确定这是不是因为iPhone只支持编码为Mpeg2传输流(.ts)的播放列表视频,或者我做错了什么.

有没有人有任何经验在播放列表中将MP4文件传输到iPhone?

iphone video mp4 playlist m3u

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

Mozilla Firefox 36在播放我的h264 MP4文件时遇到问题

我尝试将视频转换为ffmpeg到mp4格式(h264)配置文件:高级:3.1(1280x720,30fps),比特率1500k

除了在Firefox中,视频在每个浏览器中都能很好地播放.

http://5.79.72.89/trailer/trailer.mp4

首先,它需要更长的时间来加载,当我在视频内部寻找时,视频不会停止加载而永远不会再次播放.我可以在开发者控制台中看到很多部分下载.其中很多都用于初始播放,其余的请求是在视频加载期间,当我寻找稍后的位置时.

在此输入图像描述

当我播放其他h264视频(具有类似设置的MP4)时,它们在此服务器上播放没有问题.当我将视频放在另一个网络服务器(apache)上时,Firefox也存在同样的问题.

出于这个原因,我相信它必须与我做一些转换.

我的设置:Debian 7(wheezy)Webserver:nginx(带宽限制为260k)

我开始使用avconv转换视频,并因为这个问题而切换到ffmpeg.但没有成功.同时我尝试了所有编码选项,但Firefox总是存在同样的问题.其他视频播放效果不错,但不是地雷,我不知道为什么.

命令:

ffmpeg -i input.mp4 -tune zerolatency -x264opts bitrate=1500:vbv-maxrate=1500:vbv-bufsize=3000:nal-hrd=vbr -codec:v libx264 -profile:v high -level 3.1 -movflags +faststart -pix_fmt yuv420p  -s 1280x720 -r 30 -ac 2 -ar 48000 -codec:a aac -ab 64k -strict experimental -y trailer.mp4
ffmpeg 1.0.10
libavutil      51. 73.101 / 51. 73.101
libavcodec     54. 59.100 / 54. 59.100
libavformat    54. 29.104 / 54. 29.104
libavdevice    54.  2.101 / 54.  2.101
libavfilter     3. 17.100 /  3. 17.100
libswscale      2.  1.101 /  2. …

firefox mp4 ffmpeg h.264

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