Heim  >  Artikel  >  Backend-Entwicklung  >  Von PHP heruntergeladene FLV- oder MP4-Dateien können nicht abgespielt werden

Von PHP heruntergeladene FLV- oder MP4-Dateien können nicht abgespielt werden

PHP中文网
PHP中文网Original
2017-03-24 09:55:373284Durchsuche

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(&#39;CCC&#39;,0xef,0xbb,0xbf)) //utf-8
        return substr($str, 3);
    elseif ($str_2 == pack(&#39;CC&#39;,0xfe,0xff) || $str_2 == pack(&#39;CC&#39;,0xff,0xfe)) //unicode
        return substr($str, 2);
    elseif ($str_4 == pack(&#39;CCCC&#39;,0x00,0x00,0xfe,0xff) || $str_4 == pack(&#39;CCCC&#39;,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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn