我在AVFoundation中使用AVPlayer在我的应用中播放mp4视频。大多数玩家都可以。但是这两天我遇到了播放器无法播放的.mp4文件。它显示黑屏但没有任何图片。我很迷茫。 这是.mp4文件的元数据。
General
Complete name : E:\test.mp4
Format : MPEG-4
Format profile : Base Media
Codec ID : isom
File size : 28.2 MiB
Duration : 1mn 30s
Overall bit rate : 2 613 Kbps
Encoded date : UTC 2015-01-09 13:55:04
Tagged date : UTC 2015-01-09 13:55:04
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4.1
Format settings, CABAC : Yes
Format settings, ReFrames : 1 frame
Muxing mode : Container profile=High@1.3
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 1mn 27s
Bit rate mode : Variable
Bit rate : 2 675 Kbps
Width : 756 pixels
Height : 1 260 pixels
Display aspect ratio : 0.600
Frame rate mode : Variable
Frame rate : 54.536 fps
Minimum frame rate : 4.646 fps
Maximum frame rate : 148.515 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.051
Stream size : 27.9 MiB (99%)
Title : VideoHandle
Language : English
Encoded date : UTC 2015-01-09 13:55:04
Tagged date : UTC 2015-01-09 13:55:04
Audio
ID : 2
Format : AMR
Format/Info : Adaptive Multi-Rate
Format profile : Narrow band
Codec ID : samr
Duration : 1mn 30s
Bit rate mode : Constant
Bit rate : 12.8 Kbps
Channel(s) : 1 channel
Sampling rate : 8 000 Hz
Bit depth : 13 bits
Stream size : 141 KiB (0%)
Title : SoundHandle
Writing library :
Language : English
Encoded date : UTC 2015-01-09 13:55:04
Tagged date : UTC 2015-01-09 13:55:04
答案 0 :(得分:1)
我终于找到了解决方案。设置avplayerItem的videoCompostion后,它可以正常工作。 videoComposition的内容实际上与视频相同。所以它在内存中播放预览合成而不是视频文件。这是一个技巧。但是我仍然不知道为什么avplayer会显示黑屏。
答案 1 :(得分:-1)
正如对此的补充,mp4文件有时无法在AVPlayer中播放的一个原因归结为一个复选框。
当您拖放以将视频文件添加到XCode项目时,面板会显示一些选项。其中一个选项是"添加到目标:"。
from XCode: dragging and dropping a video file
使用.MOV文件,您无需选中此复选框。使用所有其他文件格式,您需要选中此复选框。
所以,也许如果你像我一样,你花了一天左右的时间,探究AVAsset等等,试图弄清楚文件为什么似乎没有加载。
这就是答案。复选框。只有mp4,而不是MOV。
因为,Apple。