php kann beim Herunterladen von FLV-Dateien oder MP4-Dateien nicht abgespielt werden
Ich möchte die FLV-Wiedergabeadresse oder MP4-Wiedergabeadresse per POST übertragen und sie dann direkt herunterladen Empfangen Sie die POST-Daten und POSTEN Sie sie. Das Datenformat ist ähnlich: http://a.com/1.flv, und dann werden zwei Methoden getestet (nur der vereinfachte Code zum Herunterladen wird gepostet):
<?php $url = implode($_POST); $file = file_get_contents($yes); header("Content-Disposition:attachment;filename=1.flv"); echo $file; ?>
oder :
<?php $url = implode($_POST); header("Content-type:video/mpeg4"); header("Content-Disposition:attachment;filename=1.flv"); readfile($url); exit; ?>
Dann wurde die 1.flv-Datei erfolgreich heruntergeladen, kann aber nach dem Herunterladen nicht abgespielt werden. Verwenden Sie Linux, um http://a.com/1 direkt abzurufen. flv heruntergeladen und es kann abgespielt werden. Beim Öffnen des direkten Downloads über PHP tritt ein Fehler auf:
Beim Vergleich der Dateigröße wird festgestellt, dass 3 weitere Bytes nicht abgespielt werden können:
Dann hat der VIM-Editor festgestellt, dass am Anfang der Datei tatsächlich 3 weitere Bytes waren, aber ich weiß nicht warum. Löschen Sie diese 3 Bytes und Sie können Folgendes abspielen:
Ich konnte es online nicht finden. Die Antwort ist, ich kann diesbezüglich nichts finden. . Ich weiß wirklich nicht, was das Problem ist. Kann mir ein Gott helfen, es zu lösen = =
Lösung:
Diese drei Charaktere sind die legendäre Stückliste
Erklären Sie, dass die PHP-Datei, die Sie herunterladen, im UTF-8-Format im BOM-Format vorliegt.
Oder lesen Sie alle Ihre PHP-Dateien aus und entfernen Sie sie.
/** * 移除字符串的BOM * * @param string $str 输入字符串 * @return string 输出字符串 */ function removeBOM($str) { $str_2 = substr($str, 0, 2); $str_3 = substr($str, 0, 3);//$str_2.$str{2}; $str_4 = substr($str, 0, 4);//$str_3.$str{3}; if ($str_3 == pack('CCC',0xef,0xbb,0xbf)) //utf-8 return substr($str, 3); elseif ($str_2 == pack('CC',0xfe,0xff) || $str_2 == pack('CC',0xff,0xfe)) //unicode return substr($str, 2); elseif ($str_4 == pack('CCCC',0x00,0x00,0xfe,0xff) || $str_4 == pack('CCCC',0xff,0xfe,0x00,0x00)) //utf-32 return substr($str, 4); return $str; }
Verwandte Artikel:
PHP-Methode zum Konvertieren von Videos in MP4 und Erhalten einer Videovorschau
PHP verwendet die Memcoder-Methode zum Konvertieren Video in das MP4-Format
PHP+FFMPEG transkodiert Videos automatisch in eine H264-Standard-MP4-Datei