ホームページ  >  記事  >  バックエンド開発  >  PHPでダウンロードしたFLVファイルやMP4ファイルが再生できない

PHPでダウンロードしたFLVファイルやMP4ファイルが再生できない

PHP中文网
PHP中文网オリジナル
2017-03-24 09:55:373283ブラウズ

flvファイルまたはmp4ファイルをダウンロードするときにphpが再生できません

flv再生アドレスまたはmp4再生アドレスをPOST経由で転送して直接ダウンロードしたいのですが、ダウンロードは簡単で、POSTデータを直接受信する形式です。 POST からのデータは似ています: http://a .com/1.flv で、PHP 経由でダウンロードします。

<?php
$url = implode($_POST);
$file = file_get_contents($yes);
header("Content-Disposition:attachment;filename=1.flv");
echo $file;
?>

または

<?php
$url = implode($_POST);
header("Content-type:video/mpeg4");
header("Content-Disposition:attachment;filename=1.flv");
readfile($url);
exit;
?>

の 2 つの方法がテストされました (ダウンロード用の簡略化されたコードのみが掲載されています)。その後、1.flv ファイルは正常にダウンロードされましたが、ダウンロード後に動作しませんでした。Linux を使用して、wget http://a.com/1.flv から直接ダウンロードすると、再生できます。 PHP 経由で直接ダウンロードを開くとエラーが発生します:


ファイル サイズを比較すると、再生できないバイトがさらに 3 バイトあることがわかります:

その後、vim エディターは実際にさらに 3 バイトがあることを発見しました。ファイルの先頭にバイトがありますが、何バイトあるかはわかりませんが、次の 3 バイトを削除すると再生できます:

オンラインで検索しても答えが見つからず、見つかりませんでしたこれについては何でも。 。何が問題なのか本当に分かりません。神様が答えられるよう助けてくれませんか = =

解決策:

これらの 3 文字は伝説の BOM です

ダウンロードに使用している php ファイルが次の場所にあることを示してください。 UTF- フォーマット 8 (BOM 付き)、Notepad++ を使用して確認してください

それともすべての PHP ファイルを読み取って削除しますか?

/**
 * 移除字符串的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;
}

関連記事:

PHPでビデオをMP4に変換し、ビデオプレビューを取得する方法

phpでmemcoderを使用してビデオをmp4形式に変換する方法

PHP+FFMPEGでビデオを自動的に変換する H264標準にエンコードMP4 ファイル

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。