- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 VideoToolbox 和 CoreMedia 在 Swift 中编码了一个 fMP4-Video (HEVC)。产生的碎片 MP4 仅在 VLC 中播放。
我用来编写 fMP4 的库是这个 GitHub 项目的 HEVC 改编版本:https://github.com/krad/morsel
编码和写入过程:
SampleBuffer
来自相机(VTCompressionSession
,如 WWDC 2014 Session 513 中所述)CoreMedia
- 获取编码流元数据的函数(例如 CMVideoFormatDescriptionGetHEVCParameterSetAtIndex
、 CMVideoFormatDescriptionGetDimensions
)。我正在写CMFormatDescriptionGetExtension(description, extensionKey: "SampleDescriptionExtensionAtoms" as CFString)["hvcC"]
的内容直接到hvcC盒子。这个盒子显然写得对,当我改变mp4的盒子的一个位时,QuickTime会抛出一个错误。 nan M-V: nan fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0
,没有错误信息。播放只是没有开始。
ffplay version 4.3 Copyright (c) 2003-2020 the FFmpeg developers
built with Apple clang version 11.0.3 (clang-1103.0.32.62)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.3_2 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libsoxr --enable-videotoolbox --disable-libjack --disable-indev=jack
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: mp41mp42isomhlsf
creation_time : 2020-08-03T20:41:08.000000Z
Duration: N/A, bitrate: N/A
Stream #0:0(und): Video: hevc (Main) (hvc1 / 0x31637668), yuv420p(tv), 1920x1080, SAR 1:1 DAR 16:9, 1000000000.00 tbr, 1000000000.00 tbn, 1000000000.00 tbc (default)
Metadata:
creation_time : 2020-08-03T20:41:08.000000Z
handler_name : video
nan M-V: nan fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0
我的文件有这样的结构:
ftyp
moov
mvhd
trak
tkhd
mdia
mdhd
hdlr
minf
vmhd
dinf
dref
stbl
stsd
stts
stsc
stsz
stco
mvex
trex
moof-(1)
mdat
moof-(2)
mdat
...
我要创建的结果文件应该类似于此 HLS 播放列表中提供的 fMP4:(示例:
https://developer.apple.com/streaming/examples/advanced-stream-hevc.html,播放列表:
https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_adv_example_hevc/master.m3u8)
ftyp
moov
mvhd
trak
tkhd
mdia
mdhd
hdlr
minf
vmhd
dinf
dref
stbl
stsd
stts
stsc
stsz
stco
trak (same structure as above)
mvex
trex
moof-(1)
mdat
moof-(2)
mdat
...
这个来自 Apple 的文件可以在 ffmpeg 和 QuickTime/Safari 中完美播放。除了第二个
trak
原子,它具有相同的结构。
最佳答案
moof->traf->trun->entries->duration 中的持续时间是错误的。
moof->traf->tfhd->default_sample_duration 也是如此。
它看起来更像是一个时间戳,但它应该是帧持续时间。
每个片段只有一个样本,这是合法的,但非常浪费。
关于video - 碎片 MP4 不在 ffplay/QuickTime/Safari 中播放,但在 VLC 中播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63262104/
我一直在测试使用不同的播放器播放多个实时流,因为我想获得最低的延迟值。我尝试了 gstreamer 播放器 (gst-launch-0.01)、mplayer、totem 和 ffmpeg 播放器 (
我的目标是在开始后 10 分钟检查文件。这是我的脚本。 ffplay.exe -f lavfi "amovie=input.mov,showvolume=b=4:w=640:h=96" 如果我添加搜索
以下代码播放“sample.mp3”并终止。这太令人惊讶了,因为通过管道传递的数据是二进制流,所以 ffplay 应该不知道“sample.mp3”的持续时间,但它会在到达末尾后立即终止。 $ cat
我从 http://ffmpeg.org/doxygen/trunk/ffplay_8c-source.html 获取了 ffplay.c 文件并将其重新编辑为 cpp 文件以嵌入到我的 win32
我想知道是否可以将互联网直播从 ffmpeg 传输到 ffplay? 举例说明: 直播到 test.mp4 作品 ffmpeg -i "https://Some livestream" -c copy
我试图弄清楚在 ffplay 中使用左/右箭头的搜索功能是如何工作的 我进入了他们的开源代码并尝试将值从 10,-10 更改为不同的值,以便我可以查看搜索是否正确移动,但经过几次尝试后,我看到使用左箭
我正在做一个视频编辑项目,我正在使用 ffmpeg 进行视频渲染 要在渲染之前播放视频,我想向用户展示它,我想使用 ffplay ffplay -i C:/Users/thota/OneDrive/D
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
我们想使用 ffplay 来监控直播视频,而不是 VLC。我们遇到了一些限制。我们知道变通办法吗?第一个问题是我们无法通过命令行参数将 ffplay 的窗口定位在屏幕上的不同位置。我们已经尝试了命令行
对于视频文件,我怎样才能只获得 showwave 滤波器而不是 showwave n 频谱。 ffplay -f lavfi 'amovie=abc.mp4,asplit=3[out1][a][b];
我试图获得顶部视频和底部音频波形。但是我不能用左/右键来回擦洗/搜索。普通的 ffplay 命令可用于搜索。 在我的 shell 运行中寻找时出现错误: 示例 1 ffplay -f lavfi \
我有一些 .264 视频文件,我想以一半的播放速度观看,而不是将它们编码到新文件中。记得以前用ffplay做这个,不过是前段时间了,现在好像做不到了。从大量搜索中,这应该是可行的: ffplay -f
我正在使用 pydub,我正在使用 ffplay。出于某种原因,当程序运行时,我得到这个“错误”: /usr/local/lib/python2.7/site-packages/pydub/util
每个人。我有 video 的问题使用ffplay播放。使用了以下命令 ffplay -i input.avi 但是出现了以下错误。 ffplay version N-87353-g183fd30 Co
我有一个视频缓冲区和一个音频缓冲区,我想组合这些缓冲区并使用 ffplay 作为一个组合实体进行播放,目前我正在使用这个命令,这显然不起作用...... ffplay -f rawvideo -pix
如果我做: ffplay -i vid.mp4 ffplay 工作正常,但是如果我尝试无边框选项: ffplay -noborder -i vid.mp4 Failed to set value '-
当您使用 ffplay 播放音频时,或带有 -vn 的视频标志,ffplay显示频谱图。我试图找出 ffplay.c 的哪一部分代码对此负责。 我想通过按下按钮启用/禁用视频,并将音频可视化更改为其他
我试图让 FFplay 在播放时在最后一张图像上简单地停止(暂停)。 FFplay 的默认行为似乎使用 -loops周界,这会导致最后一个音频数据包被循环 - 即使图像出现在暂停状态。 有没有办法在文
我将 ffplay 作为后台进程运行,它为我的主 UI 进程提供图像数据。我设置了“SDL_VIDEODRIVER = dummy”来禁止在 SDL 窗口中显示 ffplay 视频。 问题是即使没有显
我正在尝试使用 ffplay 播放/跳过一些视频剪辑。我跳过第 100 到 400 帧的第一种方法是: ffplay -vf "select='lte(n\,100)+gte(n\,400)'" -i
我是一名优秀的程序员,十分优秀!