我想知道如何使用PHP将元数据/属性(特别是注释和其他信息)写入视频文件(主要是.mp4)。
这是我用来将远程文件($ sourceURL)下载到本地目标($ destinationURL)的功能。我可以使用$ destinationURL重命名该文件(只需将其以/video.mp4结尾)。我目前正在使用cURL,但是如果只能通过fopen()/ fwrite()之类的方法来完成,那么我愿意接受建议:)
function downloadFile( $sourceURL, $destinationURL ) {
$options = array(
CURLOPT_FILE => is_resource( $destinationURL ) ? $destinationURL : fopen( $destinationURL, 'w' ),
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_URL => $sourceURL,
CURLOPT_FAILONERROR => true,
);
$ch = curl_init();
curl_setopt_array( $ch, $options );
$return = curl_exec( $ch );
if ( $return === false ) {
return curl_error( $ch );
} else {
return true;
}
}
我尝试过的事情:
将标签格式更改为“ id3v1”也不起作用。
如果我没记错的话,标记格式的“ id3v2.3”和“ id3v1”仅适用于.mp3文件。
非常感谢您抽出宝贵的时间,我期待收到我的任何评论/答案。
亲切问候
Joshua Lochner
答案 0 :(得分:3)
您可以使用ffmpeg
从视频中提取 / 添加元数据,即:
要提取:
ffmpeg -i video.mp4 -f video_metadata.txt
要添加:
ffmpeg -i video.mp4 -metadata title="my title" video_metadata.mp4
ffmpeg
documentation
答案 1 :(得分:3)
exiftool
将为您提供很多帮助。参见https://owl.phy.queensu.ca/~phil/exiftool/examples.html
在大多数基于Debian的发行版中,您可以使用sudo apt-get install exiftool
安装它。
此后,可以在PHP中将shell_exec
与上面的链接中的示例命令一起使用。
$output = shell_exec('exiftool yourfile.mp4');
exiftool
可以进行读写操作。
从我链接的网站复制的小示例:
4)编写多个标签
exiftool -artist =“ Phil Harvey” -copyright =“ 2011 Phil Harvey” a.jpg
所以这意味着:
$command = 'exiftool -artist="Phil Harvey" -copyright="2011 Phil Harvey" a.jpg';
$output = shell_exec($command);
当然,此示例也适用于视频文件。